public void WhenProcessingSonarGenericMetricsCosmosDbCommandLineArgsShouldProcessMeasureConverters() { var codeChurn = new DailyCodeChurn { FileName = SomeFileName, NumberOfChanges = 12, ChangesBefore = 2, Added = 1, Deleted = 4 }; var sonarGenericMetricsCosmosDbCommandLineArgs = new SonarGenericMetricsCosmosDbCommandLineArgs(); var mockedData = new Dictionary <DateTime, Dictionary <string, DailyCodeChurn> > { { new DateTime(), new Dictionary <string, DailyCodeChurn> { { SomeFileName, codeChurn } } } }; processor = new SonarGenericMetricsProcessor(parserMock.Object, measureConverters, jsonExporterMock.Object, new Mock <ILogger>().Object, new DataConverter()); processor.Process(sonarGenericMetricsCosmosDbCommandLineArgs, mockedData); this.measureConverter1Mock.Verify(m => m.ProcessFileMeasure(codeChurn, It.IsAny <SonarMeasuresJson>()), Times.Once()); this.measureConverter1Mock.Verify(m => m.ProcessProjectMeasure(It.IsAny <SonarMeasuresJson>()), Times.Once()); }
private static int RunSonarGenericMetricsFromCosmosDb(SonarGenericMetricsCosmosDbCommandLineArgs a) { var logger = new ConsoleLoggerWithTimestamp(); var jsonParser = new JsonListParser <DailyCodeChurn>(new FileStreamFactory()); var jsonExporter = new JsonExporter(new FileStreamFactory()); var cosmosConnection = new CosmosConnection(new DatabaseFactory(a, JsonSerializerSettingsFactory.CreateDefaultSerializerSettingsForCosmosDB()), a.DatabaseId, Properties.Settings.Default.CosmosBulkBatchSize); var dataDocumentRepository = new DataDocumentRepository(cosmosConnection, a.CodeChurnCosmosContainer); var cosmosOutputProcessor = new CosmosDbOutputProcessor(logger, dataDocumentRepository, new DataConverter(), a.CosmosProjectName, Properties.Settings.Default.CosmosBulkBatchSize); var environment = new EnvironmentImpl(); var converters = new MeasureConverterListBuilder(environment).Build(a); Dictionary <DateTime, Dictionary <string, DailyCodeChurn> > data; if (a.StartDate == null && a.EndDate == null) { data = cosmosOutputProcessor.GetAllDocumentsByProjectNameAndDocumentType <DailyCodeChurn>(); } else { if (a.StartDate == null) { throw new ArgumentNullException(nameof(a.StartDate)); } if (a.EndDate == null) { a.EndDate = environment.GetCurrentDateTime(); } data = cosmosOutputProcessor.GetDocumentsInDateRange <DailyCodeChurn>(a.StartDate.Value, a.EndDate.Value); } var processor = new SonarGenericMetricsProcessor(jsonParser, converters, jsonExporter, new ConsoleLoggerWithTimestamp(), new DataConverter()); processor.Process(a, data); return(0); }