示例#1
0
        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));
        }
示例#2
0
 private void LogBatchDetails(CosmosBulkImportSummary batchSummary)
 {
     logger.LogToConsole($"Inserted batch {batchSummary.NumberOfBatchesCompleted}/{batchSummary.NumberOfBatches} " +
                         $"{batchSummary.NumberOfDocumentsInserted} doc(s) in {batchSummary.TotalTimeTaken.TotalSeconds} sec(s)");
 }