public void WhenProcessOutputWithMoreItemsThanBatchSizeShouldRunInsertBatchDocuments() { var dateTime = new DateTime(2018, 08, 30); var fileName = "some-file-name"; var codeChurn = new DailyCodeChurn() { Added = 1, ChangesBefore = 2, ChangesAfter = 3, Deleted = 4, FileName = "abc", Timestamp = "2018/08/30 00:00:00", Authors = new List <DailyCodeChurnAuthor>() { new DailyCodeChurnAuthor() { Author = "author1", NumberOfChanges = 1 }, new DailyCodeChurnAuthor() { Author = "author2", NumberOfChanges = 2 } } }; var dict = new Dictionary <DateTime, Dictionary <string, DailyCodeChurn> >() { { dateTime, new Dictionary <string, DailyCodeChurn> { { fileName, codeChurn } } }, { dateTime.AddDays(1), new Dictionary <string, DailyCodeChurn> { { fileName, codeChurn } } }, { dateTime.AddDays(2), new Dictionary <string, DailyCodeChurn> { { fileName, codeChurn } } }, { dateTime.AddDays(3), new Dictionary <string, DailyCodeChurn> { { fileName, codeChurn } } }, { dateTime.AddDays(4), new Dictionary <string, DailyCodeChurn> { { fileName, codeChurn } } } }; var bulkDeleteResponse = new BulkDeleteResponse(); var cosmosBulkImportSummary = new CosmosBulkImportSummary(); dataDocumentRepositoryMock .Setup(x => x.BatchDeleteDocuments(dict.First().Key, dict.Last().Key, ProjectName, DocumentType.CodeChurn)) .Returns(bulkDeleteResponse); dataDocumentRepositoryMock .Setup(x => x.BatchInsertCosmosDocuments(It.IsAny <List <CosmosDataDocument <DailyCodeChurn> > >(), It.IsAny <Action <CosmosBulkImportSummary> >())) .Returns(cosmosBulkImportSummary); sut.ProcessOutput(OutputType.CosmosDb, string.Empty, dict); dataDocumentRepositoryMock.Verify(x => x.DeleteMultipleDocuments(It.Is <List <CosmosDataDocument <DailyCodeChurn> > >(items => items.Any(y => CompareDailyCodeChurn(y.Data[0], codeChurn)))), Times.Never); dataDocumentRepositoryMock.Verify(x => x.CreateDataDocument(It.Is <CosmosDataDocument <DailyCodeChurn> >( y => CompareDailyCodeChurn(y.Data[0], codeChurn))), Times.Never); dataDocumentRepositoryMock.Verify(x => x.BatchDeleteDocuments(dict.First().Key, dict.Last().Key, ProjectName, DocumentType.CodeChurn), Times.Exactly(1)); }
private void LogBatchDetails(CosmosBulkImportSummary batchSummary) { logger.LogToConsole($"Inserted batch {batchSummary.NumberOfBatchesCompleted}/{batchSummary.NumberOfBatches} " + $"{batchSummary.NumberOfDocumentsInserted} doc(s) in {batchSummary.TotalTimeTaken.TotalSeconds} sec(s)"); }