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 RunSonarGenericMetrics(SonarGenericMetricsCommandLineArgs a) { var fileSystem = new FileSystem(); var jsonParser = new JsonListParser <DailyCodeChurn>(new FileStreamFactory()); var converters = new MeasureConverterListBuilder(new EnvironmentImpl()).Build(a); var jsonExporter = new JsonExporter(new FileStreamFactory()); var processor = new SonarGenericMetricsProcessor(fileSystem, jsonParser, converters, jsonExporter, new ConsoleLoggerWithTimestamp()); processor.Process(a); return(0); }
public GivenASonarGenericMetricsProcessor() { this.commandLineArgs = new SonarGenericMetricsCommandLineArgs(); this.commandLineArgs.InputDir = "inputDir"; this.fileSystemMock = new Mock <IFileSystem>(); this.parserMock = new Mock <IJsonListParser <DailyCodeChurn> >(); var file1Mock = new Mock <IFile>(); file1Mock.Setup(m => m.FileName).Returns("file1"); var file2Mock = new Mock <IFile>(); file2Mock.Setup(m => m.FileName).Returns("file2"); var filesMock = new List <IFile>() { file1Mock.Object, file2Mock.Object }; this.fileSystemMock.Setup(m => m.GetFiles(this.commandLineArgs.InputDir, "*.json")).Returns(filesMock); measureConverter1Mock = new Mock <IMeasureConverter>(); measureConverter2Mock = new Mock <IMeasureConverter>(); this.measureConverters = new List <IMeasureConverter>() { measureConverter1Mock.Object, measureConverter2Mock.Object }; this.dailyCodeChurn1 = new List <DailyCodeChurn>() { new DailyCodeChurn(), new DailyCodeChurn() }; this.dailyCodeChurn2 = new List <DailyCodeChurn>() { new DailyCodeChurn() }; this.parserMock.Setup(m => m.ParseFile("file1")).Returns(dailyCodeChurn1); this.parserMock.Setup(m => m.ParseFile("file2")).Returns(dailyCodeChurn2); this.jsonExporterMock = new Mock <IJsonExporter>(); this.processor = new SonarGenericMetricsProcessor(this.fileSystemMock.Object, this.parserMock.Object, this.measureConverters, this.jsonExporterMock.Object, new Mock <ILogger>().Object); }
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); }