import com.google.common.base.Optional;
import com.google.common.base.Predicate;
import com.google.common.collect.FluentIterable;
+import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
import java.util.Collections;
import java.util.List;
@Category(DbTests.class)
public class MeasureDaoTest {
+ private static final int SNAPSHOT_ID = 5;
+ private static final long DEVELOPER_ID = 333L;
+ private static final int AUTHORS_BY_LINE_METRIC_ID = 10;
+ private static final int COVERAGE_LINE_HITS_DATA_METRIC_ID = 11;
+ private static final int NCLOC_METRIC_ID = 12;
+
@Rule
public DbTester db = DbTester.create(System2.INSTANCE);
public void select_by_snapshotId_and_metrics() {
db.prepareDbUnit(getClass(), "shared.xml");
- List<MeasureDto> results = underTest.selectBySnapshotIdAndMetricKeys(5l, ImmutableSet.of("ncloc", "authors_by_line"), db.getSession());
+ List<MeasureDto> results = underTest.selectBySnapshotIdAndMetricKeys(SNAPSHOT_ID, ImmutableSet.of("ncloc", "authors_by_line"), db.getSession());
assertThat(results).hasSize(2);
Optional<MeasureDto> optional = FluentIterable.from(results).filter(new Predicate<MeasureDto>() {
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());
+ List<MeasureDto> results = underTest.selectBySnapshotIdAndMetricKeys(SNAPSHOT_ID, newHashSet("ncloc", "authors_by_line"), db.getSession());
assertThat(results).hasSize(2);
- results = underTest.selectBySnapshotIdAndMetricKeys(5, newHashSet("ncloc"), db.getSession());
+ results = underTest.selectBySnapshotIdAndMetricKeys(SNAPSHOT_ID, newHashSet("ncloc"), db.getSession());
assertThat(results).hasSize(1);
MeasureDto result = results.get(0);
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();
+ assertThat(underTest.selectBySnapshotIdAndMetricKeys(SNAPSHOT_ID, 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());
+ List<MeasureDto> results = underTest.selectBySnapshotIdAndMetricKeys(SNAPSHOT_ID, newHashSet("ncloc"), db.getSession());
assertThat(results).hasSize(3);
Map<Long, MeasureDto> measuresById = measuresById(results);
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());
+ List<MeasureDto> results = underTest.selectBySnapshotIdAndMetricKeys(SNAPSHOT_ID, newHashSet("ncloc"), db.getSession());
assertThat(results).hasSize(3);
Map<Long, MeasureDto> measuresById = measuresById(results);
assertThat(measuresById.get(3L).getCharacteristicId()).isEqualTo(11);
}
+ @Test
+ public void selectByDeveloperForSnapshotAndMetrics_when_there_is_no_measure_for_developer_returns_empty() {
+ db.prepareDbUnit(getClass(), "shared.xml");
+
+ List<MeasureDto> measureDtos = underTest.selectByDeveloperForSnapshotAndMetrics(db.getSession(),
+ DEVELOPER_ID, SNAPSHOT_ID,
+ ImmutableList.of(AUTHORS_BY_LINE_METRIC_ID, COVERAGE_LINE_HITS_DATA_METRIC_ID, NCLOC_METRIC_ID));
+
+ assertThat(measureDtos).isEmpty();
+ }
+
+ @Test
+ public void selectByDeveloperForSnapshotAndMetrics_returns_only_measures_for_developer() {
+ db.prepareDbUnit(getClass(), "with_some_measures_for_developer.xml");
+
+ List<MeasureDto> measureDtos = underTest.selectByDeveloperForSnapshotAndMetrics(db.getSession(),
+ DEVELOPER_ID, SNAPSHOT_ID,
+ ImmutableList.of(AUTHORS_BY_LINE_METRIC_ID, COVERAGE_LINE_HITS_DATA_METRIC_ID, NCLOC_METRIC_ID));
+
+ assertThat(measureDtos).extracting("id").containsOnly(30L, 31L, 32L);
+ }
+
+ @Test
+ public void selectByDeveloperForSnapshotAndMetrics_returns_only_measures_for_developer_and_specified_metric_id() {
+ db.prepareDbUnit(getClass(), "with_some_measures_for_developer.xml");
+
+ List<MeasureDto> measureDtos = underTest.selectByDeveloperForSnapshotAndMetrics(db.getSession(),
+ DEVELOPER_ID, SNAPSHOT_ID,
+ ImmutableList.of(NCLOC_METRIC_ID));
+
+ assertThat(measureDtos).extracting("id").containsOnly(32L);
+ }
+
+ @Test
+ public void selectByDeveloperForSnapshotAndMetrics_returns_empty_when_single_metric_id_does_not_exist() {
+ db.prepareDbUnit(getClass(), "with_some_measures_for_developer.xml");
+
+ List<MeasureDto> measureDtos = underTest.selectByDeveloperForSnapshotAndMetrics(db.getSession(),
+ DEVELOPER_ID, SNAPSHOT_ID,
+ ImmutableList.of(666));
+
+ assertThat(measureDtos).isEmpty();
+ }
+
+ @Test
+ public void selectByDeveloperForSnapshotAndMetrics_returns_empty_when_snapshotId_does_not_exist() {
+ db.prepareDbUnit(getClass(), "with_some_measures_for_developer.xml");
+
+ List<MeasureDto> measureDtos = underTest.selectByDeveloperForSnapshotAndMetrics(db.getSession(),
+ DEVELOPER_ID, 10,
+ ImmutableList.of(AUTHORS_BY_LINE_METRIC_ID, COVERAGE_LINE_HITS_DATA_METRIC_ID, NCLOC_METRIC_ID));
+
+ assertThat(measureDtos).isEmpty();
+ }
+
@Test
public void insert() {
db.prepareDbUnit(getClass(), "empty.xml");
--- /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]"/>
+ <projects id="333" kee="dev:John-Doe" 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]"
+ person_id="[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]"
+ person_id="[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"
+ person_id="[null]"/>
+ <!--measures for developer 333-->
+ <project_measures id="30" 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]"
+ person_id="333"/>
+ <project_measures id="31" 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]"
+ person_id="333"/>
+ <project_measures id="32" 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"
+ person_id="333"/>
+
+</dataset>