public async Task RenewHubCacheEntries()

in DeviceBridgeTests/Providers/StorageProviderTests.cs [181:214]


        public async Task RenewHubCacheEntries()
        {
            using (ShimsContext.Create())
            {
                ShimOpen();
                ShimExecuteNonQuery("CREATE TABLE #CacheEntriesToRenewTmpTable(DeviceId VARCHAR(255) NOT NULL PRIMARY KEY)");

                // Once data is sent to server, check that we remove the temp table.
                System.Data.SqlClient.Fakes.ShimSqlBulkCopy.AllInstances.WriteToServerAsyncDataTable = (bulkCopy, dt) =>
                {
                    Assert.AreEqual(60, bulkCopy.BulkCopyTimeout);
                    Assert.AreEqual(1000, bulkCopy.BatchSize);
                    Assert.AreEqual("#CacheEntriesToRenewTmpTable", bulkCopy.DestinationTableName);

                    Assert.AreEqual("test-device-1", dt.Rows[0]["DeviceId"]);
                    Assert.AreEqual("test-device-2", dt.Rows[1]["DeviceId"]);
                    Assert.AreEqual("test-device-3", dt.Rows[2]["DeviceId"]);

                    ShimExecuteNonQuery(null, null, cmd =>
                    {
                        var expected = @"UPDATE HubCache SET RenewedAt = GETUTCDATE()
                                        FROM HubCache
                                        INNER JOIN #CacheEntriesToRenewTmpTable Temp ON (Temp.DeviceId = HubCache.DeviceId)
                                        DROP TABLE #CacheEntriesToRenewTmpTable";
                        Assert.AreEqual(Regex.Replace(expected, @"\s+", " "), Regex.Replace(cmd.CommandText, @"\s+", " "));
                        Assert.AreEqual(300, cmd.CommandTimeout);
                    });

                    return Task.CompletedTask;
                };

                await _storageProvider.RenewHubCacheEntries(LogManager.GetCurrentClassLogger(), new List<string>() { "test-device-1", "test-device-2", "test-device-3" });
            }
        }