public GivenAMeasureConverterRaw()
        {
            metric           = new Metric();
            metric.MetricKey = "key";

            this.mockMeasureAggregator = new Mock <IMeasureAggregator <string> >();
            this.mockMeasureAggregator.Setup(m => m.HasValue(It.IsAny <DailyCodeChurn>())).
            Returns((DailyCodeChurn d) => d.FileName.Length > 0);
            this.mockMeasureAggregator.Setup(m => m.GetValueForNewMeasure(It.IsAny <DailyCodeChurn>())).
            Returns((DailyCodeChurn d) => d.FileName);
            this.mockMeasureAggregator.Setup(m => m.GetValueForExistingMeasure(It.IsAny <DailyCodeChurn>(), It.IsAny <Measure <string> >())).
            Returns((DailyCodeChurn d, Measure <string> existingMeasure) => d.FileName + "," + existingMeasure.Value);

            this.mockMeasureAggregatorProject = new Mock <IMeasureAggregatorProject <string> >();
            this.mockMeasureAggregatorProject.Setup(m => m.HasValue(It.IsAny <DailyCodeChurn>())).
            Returns((DailyCodeChurn d) => d.FileName.Length > 0);
            this.mockMeasureAggregatorProject.Setup(m => m.GetValueForNewMeasure(It.IsAny <DailyCodeChurn>())).
            Returns((DailyCodeChurn d) => d.FileName);
            this.mockMeasureAggregatorProject.Setup(m => m.GetValueForExistingMeasure(It.IsAny <DailyCodeChurn>(), It.IsAny <Measure <string> >())).
            Returns((DailyCodeChurn d, Measure <string> existingMeasure) => d.FileName + "," + existingMeasure.Value);
            this.mockMeasureAggregatorProject.Setup(m => m.GetValueForProjectMeasure()).
            Returns("FileName");

            this.measureConverter = new MeasureConverterRaw <string>(metric, mockMeasureAggregator.Object, "//prefix/");
        }
        public void WhenConvertingNoProjectMeausreShouldAppendProjectMeasure()
        {
            this.measureConverter = new MeasureConverterRaw <string>(metric, mockMeasureAggregatorProject.Object, "//prefix/");
            var measures = new SonarMeasuresJson();

            this.measureConverter.ProcessProjectMeasure(measures);

            Assert.NotEmpty(measures.MeasuresProject.Where(m => m.MetricKey == "key"));
        }
        public void WhenConvertingWithinRangeAndNoFilePrefixShouldConvert()
        {
            this.measureConverter = new MeasureConverterRaw <string>(metric, mockMeasureAggregator.Object, null);
            var dailyCodeChurn = new DailyCodeChurn()
            {
                Timestamp = "2018/09/17 00:00:00",
                FileName  = "//prefix/file"
            };
            var measures = new SonarMeasuresJson();

            this.measureConverter.ProcessFileMeasure(dailyCodeChurn, measures);

            Assert.Equal("//prefix/file",
                         measures.MeasuresRaw.Where(m => m.MetricKey == "key").Single().File);
        }
        public void WhenConvertingANonProjectAggregatorWithProjectMeausreShouldDoNothing()
        {
            this.measureConverter = new MeasureConverterRaw <string>(metric, mockMeasureAggregator.Object, "//prefix/");

            var dailyCodeChurn = new DailyCodeChurn()
            {
                Timestamp = "2018/09/17 00:00:00",
                FileName  = "file1"
            };
            var measures = new SonarMeasuresJson();

            this.measureConverter.ProcessProjectMeasure(measures);

            Assert.Empty(measures.MeasuresProject.Where(m => m.MetricKey == "key"));
        }