void setValue(ComponentDto component, String metricKey, @Nullable String data) { changeCell(component, metricKey, m -> { if (Objects.equals(m.getDataAsString(), data)) { return false; } m.setData(data); return true; }); }
private void verify_toMeasure_returns_value_for_LEVEL_Metric(Level expectedLevel) { Optional<Measure> measure = underTest.toMeasure(new LiveMeasureDto().setData(expectedLevel.name()), SOME_LEVEL_METRIC); assertThat(measure).isPresent(); assertThat(measure.get().getValueType()).isEqualTo(Measure.ValueType.LEVEL); assertThat(measure.get().getLevelValue()).isEqualTo(expectedLevel); }
@Test public void toMeasure_returns_no_value_if_dta_has_data_in_wrong_case_for_Level_Metric() { Optional<Measure> measure = underTest.toMeasure(new LiveMeasureDto().setData("waRn"), SOME_LEVEL_METRIC); assertThat(measure).isPresent(); assertThat(measure.get().getValueType()).isEqualTo(Measure.ValueType.NO_VALUE); }
@Test public void toMeasure_returns_no_QualityGateStatus_if_alertStatus_has_invalid_data_for_Level_Metric() { Optional<Measure> measure = underTest.toMeasure(new LiveMeasureDto().setData("trololo"), SOME_STRING_METRIC); assertThat(measure).isPresent(); assertThat(measure.get().hasQualityGateStatus()).isFalse(); }
@Test public void toMeasure_returns_no_QualityGateStatus_if_alertStatus_has_data_in_wrong_case_for_Level_Metric() { Optional<Measure> measure = underTest.toMeasure(new LiveMeasureDto().setData("waRn"), SOME_STRING_METRIC); assertThat(measure).isPresent(); assertThat(measure.get().hasQualityGateStatus()).isFalse(); }
@Test public void toMeasure_returns_no_value_if_dto_has_invalid_data_for_Level_Metric() { Optional<Measure> measure = underTest.toMeasure(new LiveMeasureDto().setData("trololo"), SOME_LEVEL_METRIC); assertThat(measure).isPresent(); assertThat(measure.get().getValueType()).isEqualTo(Measure.ValueType.NO_VALUE); }
public static LiveMeasureDto newLiveMeasure() { return new LiveMeasureDto() .setMetricId(cursor++) .setComponentUuid(String.valueOf(cursor++)) .setProjectUuid(String.valueOf(cursor++)) .setData(String.valueOf(cursor++)) .setValue((double) cursor++) .setVariation((double) cursor++); }
@Test public void toMeasure_creates_MeasureVariation_and_maps_the_right_one() { LiveMeasureDto LiveMeasureDto = new LiveMeasureDto() .setData("1") .setVariation(2d); Optional<Measure> measure = underTest.toMeasure(LiveMeasureDto, SOME_STRING_METRIC); assertThat(measure.get().getVariation()).isEqualTo(2); }
@Test public void event_contains_no_previousStatus_if_measure_exists_and_is_not_a_level() { markProjectAsAnalyzed(project); db.measures().insertLiveMeasure(project, alertStatusMetric, m -> m.setData("fooBar")); List<QGChangeEvent> result = run(file1); assertThat(result) .extracting(QGChangeEvent::getPreviousStatus) .containsExactly(Optional.empty()); }
@Test public void event_contains_no_previousStatus_if_measure_exists_and_has_no_value() { markProjectAsAnalyzed(project); db.measures().insertLiveMeasure(project, alertStatusMetric, m -> m.setData((String) null)); List<QGChangeEvent> result = run(file1); assertThat(result) .extracting(QGChangeEvent::getPreviousStatus) .containsExactly(Optional.empty()); }
@Test public void event_contains_no_previousStatus_if_measure_exists_and_is_empty() { markProjectAsAnalyzed(project); db.measures().insertLiveMeasure(project, alertStatusMetric, m -> m.setData("")); List<QGChangeEvent> result = run(file1); assertThat(result) .extracting(QGChangeEvent::getPreviousStatus) .containsExactly(Optional.empty()); }
@DataProvider public static Object[][] all_types_LiveMeasureDtos() { return new Object[][] { {new LiveMeasureDto().setValue(1d), SOME_BOOLEAN_METRIC}, {new LiveMeasureDto().setValue(1d), SOME_INT_METRIC}, {new LiveMeasureDto().setValue(1d), SOME_LONG_METRIC}, {new LiveMeasureDto().setValue(1d), SOME_DOUBLE_METRIC}, {new LiveMeasureDto().setData("1"), SOME_STRING_METRIC}, {new LiveMeasureDto().setData(Level.OK.name()), SOME_LEVEL_METRIC} }; }
@Test public void filter_projects_by_languages() { userSession.logIn(); OrganizationDto organizationDto = db.organizations().insert(); MetricDto languagesDistribution = db.measures().insertMetric(c -> c.setKey(NCLOC_LANGUAGE_DISTRIBUTION_KEY).setValueType("DATA")); ComponentDto project1 = insertProject(organizationDto, new Measure(languagesDistribution, c -> c.setValue(null).setData("<null>=2;java=6;xoo=18"))); ComponentDto project2 = insertProject(organizationDto, new Measure(languagesDistribution, c -> c.setValue(null).setData("java=3;xoo=9"))); ComponentDto project3 = insertProject(organizationDto, new Measure(languagesDistribution, c -> c.setValue(null).setData("xoo=1"))); ComponentDto project4 = insertProject(organizationDto, new Measure(languagesDistribution, c -> c.setValue(null).setData("<null>=1;java=5;xoo=13"))); SearchProjectsWsResponse result = call(request.setFilter("languages IN (java, js, <null>)")); assertThat(result.getComponentsList()).extracting(Component::getKey).containsExactlyInAnyOrder(project1.getDbKey(), project2.getDbKey(), project4.getDbKey()); }
public static LiveMeasureDto newLiveMeasure(ComponentDto component, MetricDto metric) { return new LiveMeasureDto() .setMetricId(metric.getId()) .setComponentUuid(component.uuid()) .setProjectUuid(component.projectUuid()) .setData(String.valueOf(cursor++)) .setValue((double) cursor++) .setVariation((double) cursor++); } }
public LiveMeasureDto toLiveMeasureDto(Measure measure, Metric metric, Component component) { LiveMeasureDto out = new LiveMeasureDto(); out.setMetricId(metric.getId()); out.setComponentUuid(component.getUuid()); out.setProjectUuid(treeRootHolder.getRoot().getUuid()); if (measure.hasVariation()) { out.setVariation(measure.getVariation()); } out.setValue(valueAsDouble(measure)); out.setData(data(measure)); return out; }
@Test public void selectMeasure_map_fields() { MetricDto metric = db.measures().insertMetric(); ComponentDto project = db.components().insertPrivateProject(); ComponentDto file = db.components().insertComponent(newFileDto(project)); underTest.insert(db.getSession(), newLiveMeasure(file, metric).setValue(3.14).setVariation(0.1).setData("text_value")); LiveMeasureDto result = underTest.selectMeasure(db.getSession(), file.uuid(), metric.getKey()).orElseThrow(() -> new IllegalArgumentException("Measure not found")); assertThat(result).as("Fail to map fields of %s", result.toString()).extracting( LiveMeasureDto::getProjectUuid, LiveMeasureDto::getComponentUuid, LiveMeasureDto::getMetricId, LiveMeasureDto::getValue, LiveMeasureDto::getVariation, LiveMeasureDto::getDataAsString, LiveMeasureDto::getTextValue) .contains(project.uuid(), file.uuid(), metric.getId(), 3.14, 0.1, "text_value", "text_value"); }
@Test public void quality_gate_passed() { ComponentDto project = db.components().insertPublicProject(); userSession.registerComponents(project); MetricDto metric = createQualityGateMetric(); db.measures().insertLiveMeasure(project, metric, m -> m.setData(OK.name())); TestResponse response = ws.newRequest() .setParam("project", project.getKey()) .execute(); checkResponse(response, OK); }
@Test public void fail_on_invalid_quality_gate() { ComponentDto project = db.components().insertPublicProject(); userSession.registerComponents(project); MetricDto metric = createQualityGateMetric(); db.measures().insertLiveMeasure(project, metric, m -> m.setData("UNKNOWN")); expectedException.expect(IllegalArgumentException.class); expectedException.expectMessage("No enum constant org.sonar.api.measures.Metric.Level.UNKNOWN"); ws.newRequest() .setParam("project", project.getKey()) .execute(); }
@Test public void display_deprecated_warning_quality_gate() { ComponentDto project = db.components().insertPublicProject(); userSession.registerComponents(project); MetricDto metric = createQualityGateMetric(); db.measures().insertLiveMeasure(project, metric, m -> m.setData(WARN.name())); TestResponse response = ws.newRequest() .setParam("project", project.getKey()) .setParam("metric", metric.getKey()) .execute(); checkSvg(response, "quality gate", "warning", QUALITY_GATE_WARN); }
@Test public void quality_gate_on_application() { OrganizationDto organization = db.organizations().insert(); ComponentDto application = db.components().insertPublicApplication(organization); userSession.registerComponents(application); MetricDto metric = createQualityGateMetric(); db.measures().insertLiveMeasure(application, metric, m -> m.setData(ERROR.name())); TestResponse response = ws.newRequest() .setParam("project", application.getKey()) .execute(); checkResponse(response, ERROR); }