public async Task WriteSampleData_Upsert_AllDataStored()
        {
            const string CollectionName = "TestCollection";
            const int    NumberOfItems  = 10;

            var clientMock = new DocumentDbWriteClientMock();

            var configuration = Mocks
                                .Of <IDocumentDbParallelSinkAdapterInstanceConfiguration>()
                                .Where(m =>
                                       m.Collection == CollectionName &&
                                       m.UpdateExisting == true &&
                                       m.NumberOfParallelRequests == 2)
                                .First();

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

            CollectionAssert.AreEquivalent(new[] { CollectionName }, clientMock.CreatedCollections.ToArray(), TestResources.CollectionWasNotCreated);
            Assert.AreEqual(0, clientMock.NumberOfDocumentsCreated, TestResources.AllDocumentShouldBeUpserted);
            Assert.AreEqual(NumberOfItems, clientMock.NumberOfDocumentsUpserted, TestResources.InvalidNumberOfDataItemsTransferred);
            Assert.AreEqual(0, clientMock.CreatedStoredProcedures.Count, TestResources.ParallelSinkAdapterCreatedStoredProcedure);
        }
        public async Task CompleteAsyncOrDispose_CleansUpAfterTransfer()
        {
            var clientMock = new DocumentDbWriteClientMock();

            var configurationMock = Mocks
                                    .Of <IDocumentDbBulkSinkAdapterInstanceConfiguration>(m =>
                                                                                          m.CollectionName == "TestCollection" &&
                                                                                          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);
        }