import com.google.common.base.Predicate;
import com.google.common.collect.FluentIterable;
import com.google.common.collect.ImmutableSet;
+import java.util.Collections;
import java.util.List;
import java.util.Map;
import javax.annotation.Nullable;
import org.sonar.test.DbTests;
import static com.google.common.collect.Lists.newArrayList;
+import static com.google.common.collect.Sets.newHashSet;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.guava.api.Assertions.assertThat;
assertThat(measure1.getPersonId()).isNull();
}
+ @Test
+ public void select_by_snapshot_and_metric_keys() throws Exception {
+ db.prepareDbUnit(getClass(), "select_by_snapshot_and_metric_keys.xml");
+
+ List<MeasureDto> results = underTest.selectBySnapshotIdAndMetricKeys(5, newHashSet("ncloc", "authors_by_line"), db.getSession());
+ assertThat(results).hasSize(2);
+
+ results = underTest.selectBySnapshotIdAndMetricKeys(5, newHashSet("ncloc"), db.getSession());
+ assertThat(results).hasSize(1);
+
+ MeasureDto result = results.get(0);
+ assertThat(result.getId()).isEqualTo(22);
+ assertThat(result.getValue()).isEqualTo(10d);
+ assertThat(result.getVariation(1)).isEqualTo(1d);
+ assertThat(result.getVariation(2)).isEqualTo(2d);
+ assertThat(result.getVariation(3)).isEqualTo(3d);
+ assertThat(result.getVariation(4)).isEqualTo(4d);
+ assertThat(result.getVariation(5)).isEqualTo(-5d);
+
+ assertThat(underTest.selectBySnapshotIdAndMetricKeys(123, newHashSet("ncloc"), db.getSession())).isEmpty();
+ assertThat(underTest.selectBySnapshotIdAndMetricKeys(5, Collections.<String>emptySet(), db.getSession())).isEmpty();
+ }
+
+ @Test
+ public void select_by_snapshot_and_metric_keys_return_measures_with_rule_id() throws Exception {
+ db.prepareDbUnit(getClass(), "select_by_snapshot_and_metric_keys_with_rule_id.xml");
+
+ List<MeasureDto> results = underTest.selectBySnapshotIdAndMetricKeys(5, newHashSet("ncloc"), db.getSession());
+ assertThat(results).hasSize(3);
+
+ Map<Long, MeasureDto> measuresById = measuresById(results);
+ assertThat(measuresById.get(1L).getRuleId()).isNull();
+ assertThat(measuresById.get(2L).getRuleId()).isEqualTo(30);
+ assertThat(measuresById.get(3L).getRuleId()).isEqualTo(31);
+ }
+
+ @Test
+ public void select_by_snapshot_and_metric_keys_return_measures_with_characteristic_id() throws Exception {
+ db.prepareDbUnit(getClass(), "select_by_snapshot_and_metric_keys_with_characteristic_id.xml");
+
+ List<MeasureDto> results = underTest.selectBySnapshotIdAndMetricKeys(5, newHashSet("ncloc"), db.getSession());
+ assertThat(results).hasSize(3);
+
+ Map<Long, MeasureDto> measuresById = measuresById(results);
+ assertThat(measuresById.get(1L).getCharacteristicId()).isNull();
+ assertThat(measuresById.get(2L).getCharacteristicId()).isEqualTo(10);
+ assertThat(measuresById.get(3L).getCharacteristicId()).isEqualTo(11);
+ }
+
@Test
public void insert() {
db.prepareDbUnit(getClass(), "empty.xml");
);
db.getSession().commit();
- db.assertDbUnit(getClass(), "insert-result.xml", new String[] {"id"}, "project_measures");
+ db.assertDbUnit(getClass(), "insert-result.xml", new String[]{"id"}, "project_measures");
}
@Test
}
});
}
+
+ private static Map<Long, MeasureDto> measuresById(List<MeasureDto> pastMeasures) {
+ return FluentIterable.from(pastMeasures).uniqueIndex(new Function<MeasureDto, Long>() {
+ @Nullable
+ @Override
+ public Long apply(MeasureDto input) {
+ return input.getId();
+ }
+ });
+ }
}
--- /dev/null
+<dataset>
+
+ <metrics id="10" name="authors_by_line"/>
+ <metrics id="11" name="coverage_line_hits_data"/>
+ <metrics id="12" name="ncloc"/>
+
+ <projects id="1" kee="org.struts:struts-core:src/org/struts/RequestContext.java" enabled="[true]"/>
+
+ <snapshots id="5" project_id="1" islast="[true]" />
+
+ <project_measures id="20" snapshot_id="5" metric_id="10" value="[null]" text_value="0123456789012345678901234567890123456789" measure_data="[null]"
+ variation_value_1="[null]" variation_value_2="[null]" variation_value_3="[null]" variation_value_4="[null]" variation_value_5="[null]"
+ alert_status="[null]" alert_text="[null]" />
+ <project_measures id="21" snapshot_id="5" metric_id="11" value="[null]" text_value="36=1;37=1;38=1;39=1;43=1;48=1;53=1" measure_data="[null]"
+ variation_value_1="[null]" variation_value_2="[null]" variation_value_3="[null]" variation_value_4="[null]" variation_value_5="[null]"
+ alert_status="[null]" alert_text="[null]" />
+ <project_measures id="22" snapshot_id="5" metric_id="12" value="10" text_value="[null]" measure_data="[null]"
+ variation_value_1="1" variation_value_2="2" variation_value_3="3" variation_value_4="4" variation_value_5="-5"
+ alert_status="OK" alert_text="Green"/>
+
+</dataset>