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());
        }
Пример #2
0
        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);
        }