public async Task CompleteAsyncOrDispose_CleansUpAfterTransfer()
        {
            var clientMock = new DocumentDbWriteClientMock();

            var configurationMock = Mocks
                    .Of<IDocumentDbBulkSinkAdapterInstanceConfiguration>(m => 
                        m.Collection == "TestCollection" &&
                        m.StoredProcName == "test" &&
                        m.BatchSize == 5 &&
                        m.MaxScriptSize == 1024)
                    .First();

            using (var adapter = new DocumentDbBulkSinkAdapter(clientMock, PassThroughTransformation.Instance, configurationMock))
            {
                await adapter.InitializeAsync();
                await adapter.CompleteAsync(CancellationToken.None);
            }

            CollectionAssert.AreEquivalent(clientMock.CreatedStoredProcedures.ToArray(), clientMock.DeletedStoredProcedures.ToArray(),
                TestResources.BulkSinkAdapterDidNotCleanup);
        }
        public async Task WriteSampleData_AllDataStored()
        {
            const string CollectionName = "TestCollection";
            const int NumberOfItems = 10;

            var clientMock = new DocumentDbWriteClientMock();
            
            var configuration = Mocks
                    .Of<IDocumentDbParallelSinkAdapterInstanceConfiguration>()
                    .Where(m => 
                        m.Collections == new[] { CollectionName } &&
                        m.NumberOfParallelRequests == 2)
                    .First();

            using (var adapter = new DocumentDbParallelSinkAdapter(clientMock, PassThroughTransformation.Instance, configuration))
            {
                await adapter.InitializeAsync();
                await WriteDataAsync(adapter, SampleData.GetSimpleDataItems(NumberOfItems));
            }

            CollectionAssert.AreEquivalent(new [] { CollectionName }, clientMock.CreatedCollections.ToArray(), TestResources.CollectionWasNotCreated);
            Assert.AreEqual(NumberOfItems, clientMock.NumberOfDocumentsCreated, TestResources.InvalidNumberOfDataItemsTransferred);
            Assert.AreEqual(0, clientMock.CreatedStoredProcedures.Count, TestResources.ParallelSinkAdapterCreatedStoredProcedure);
        }