package org.sonar.core.measure;
import org.junit.Before;
+import org.junit.Rule;
import org.junit.Test;
import org.sonar.api.measures.Metric;
import org.sonar.api.utils.DateUtils;
-import org.sonar.core.persistence.AbstractDaoTestCase;
+import org.sonar.core.persistence.TestDatabase;
import org.sonar.core.resource.ResourceDao;
import org.sonar.core.resource.SnapshotDto;
import static org.fest.assertions.Assertions.assertThat;
-public class MeasureFilterExecutorTest extends AbstractDaoTestCase {
+public class MeasureFilterExecutorTest {
private static final long JAVA_PROJECT_ID = 1L;
private static final long JAVA_FILE_BIG_ID = 3L;
private static final long JAVA_FILE_TINY_ID = 4L;
private MeasureFilterExecutor executor;
+ @Rule
+ public TestDatabase db = new TestDatabase();
+
@Before
public void before() {
- executor = new MeasureFilterExecutor(getMyBatis(), getDatabase(), new ResourceDao(getMyBatis()));
+ executor = new MeasureFilterExecutor(db.myBatis(), db.database(), new ResourceDao(db.myBatis()));
}
@Test
public void should_return_empty_results_if_empty_filter() throws SQLException {
- setupData("shared");
+ db.prepareDbUnit(getClass(), "shared.xml");
MeasureFilter filter = new MeasureFilter();
assertThat(filter.isEmpty()).isTrue();
@Test
public void invalid_filter_should_not_return_results() throws SQLException {
- setupData("shared");
+ db.prepareDbUnit(getClass(), "shared.xml");
MeasureFilter filter = new MeasureFilter().setUserFavourites(true);
// anonymous user does not have favourites
assertThat(executor.execute(filter, new MeasureFilterContext())).isEmpty();
@Test
public void filter_is_not_valid_if_missing_base_snapshot() {
- setupData("shared");
+ db.prepareDbUnit(getClass(), "shared.xml");
MeasureFilterContext context = new MeasureFilterContext();
MeasureFilter filter = new MeasureFilter().setResourceQualifiers(Arrays.asList("TRK")).setOnBaseResourceChildren(true);
assertThat(MeasureFilterExecutor.isValid(filter, context)).isFalse();
@Test
public void filter_is_not_valid_if_condition_on_unknown_metric() {
- setupData("shared");
+ db.prepareDbUnit(getClass(), "shared.xml");
MeasureFilterContext context = new MeasureFilterContext();
MeasureFilter filter = new MeasureFilter().addCondition(new MeasureFilterCondition(null, MeasureFilterCondition.Operator.LESS, 3.0));
assertThat(MeasureFilterExecutor.isValid(filter, context)).isFalse();
@Test
public void filter_is_not_valid_if_sorting_on_unknown_metric() {
- setupData("shared");
+ db.prepareDbUnit(getClass(), "shared.xml");
MeasureFilterContext context = new MeasureFilterContext();
MeasureFilter filter = new MeasureFilter().setSortOnMetric(null);
assertThat(MeasureFilterExecutor.isValid(filter, context)).isFalse();
@Test
public void filter_is_not_valid_if_anonymous_favourites() {
- setupData("shared");
+ db.prepareDbUnit(getClass(), "shared.xml");
MeasureFilterContext context = new MeasureFilterContext();
MeasureFilter filter = new MeasureFilter().setResourceQualifiers(Arrays.asList("TRK")).setUserFavourites(true);
assertThat(MeasureFilterExecutor.isValid(filter, context)).isFalse();
@Test
public void projects_without_measure_conditions() throws SQLException {
- setupData("shared");
+ db.prepareDbUnit(getClass(), "shared.xml");
MeasureFilter filter = new MeasureFilter().setResourceQualifiers(Arrays.asList("TRK")).setSortOn(MeasureFilterSort.Field.LANGUAGE);
List<MeasureFilterRow> rows = executor.execute(filter, new MeasureFilterContext());
@Test
public void should_prevent_sql_injection_through_parameters() throws SQLException {
- setupData("shared");
+ db.prepareDbUnit(getClass(), "shared.xml");
MeasureFilter filter = new MeasureFilter()
.setResourceQualifiers(Arrays.asList("'"))
.setResourceLanguages(Arrays.asList("'"))
@Test
public void test_default_sort() {
- setupData("shared");
+ db.prepareDbUnit(getClass(), "shared.xml");
MeasureFilter filter = new MeasureFilter().setResourceQualifiers(Arrays.asList("CLA"));
assertThat(filter.sort().isAsc()).isTrue();
@Test
public void sort_by_ascending_resource_name() throws SQLException {
- setupData("shared");
+ db.prepareDbUnit(getClass(), "shared.xml");
MeasureFilter filter = new MeasureFilter().setResourceQualifiers(Arrays.asList("CLA")).setSortAsc(true);
List<MeasureFilterRow> rows = executor.execute(filter, new MeasureFilterContext());
@Test
public void sort_by_ascending_resource_key() throws SQLException {
- setupData("shared");
+ db.prepareDbUnit(getClass(), "shared.xml");
MeasureFilter filter = new MeasureFilter().setResourceQualifiers(Arrays.asList("CLA")).setSortAsc(true).setSortOn(MeasureFilterSort.Field.KEY);
List<MeasureFilterRow> rows = executor.execute(filter, new MeasureFilterContext());
@Test
public void sort_by_ascending_resource_version() throws SQLException {
- setupData("shared");
+ db.prepareDbUnit(getClass(), "shared.xml");
MeasureFilter filter = new MeasureFilter().setResourceQualifiers(Arrays.asList("TRK")).setSortAsc(true).setSortOn(MeasureFilterSort.Field.VERSION);
List<MeasureFilterRow> rows = executor.execute(filter, new MeasureFilterContext());
@Test
public void sort_by_descending_resource_name() throws SQLException {
- setupData("shared");
+ db.prepareDbUnit(getClass(), "shared.xml");
MeasureFilter filter = new MeasureFilter().setResourceQualifiers(Arrays.asList("CLA")).setSortAsc(false);
List<MeasureFilterRow> rows = executor.execute(filter, new MeasureFilterContext());
@Test
public void sort_by_ascending_text_measure() throws SQLException {
- setupData("shared");
+ db.prepareDbUnit(getClass(), "shared.xml");
MeasureFilter filter = new MeasureFilter().setResourceQualifiers(Arrays.asList("TRK")).setSortOnMetric(METRIC_PROFILE);
List<MeasureFilterRow> rows = executor.execute(filter, new MeasureFilterContext());
@Test
public void sort_by_descending_text_measure() throws SQLException {
- setupData("shared");
+ db.prepareDbUnit(getClass(), "shared.xml");
MeasureFilter filter = new MeasureFilter().setResourceQualifiers(Arrays.asList("TRK")).setSortOnMetric(METRIC_PROFILE).setSortAsc(false);
List<MeasureFilterRow> rows = executor.execute(filter, new MeasureFilterContext());
@Test
public void sort_by_missing_text_measure() throws SQLException {
- setupData("shared");
+ db.prepareDbUnit(getClass(), "shared.xml");
// the metric 'profile' is not set on files
MeasureFilter filter = new MeasureFilter().setResourceQualifiers(Arrays.asList("CLA")).setSortOnMetric(METRIC_PROFILE);
List<MeasureFilterRow> rows = executor.execute(filter, new MeasureFilterContext());
@Test
public void sort_by_ascending_numeric_measure() throws SQLException {
- setupData("shared");
+ db.prepareDbUnit(getClass(), "shared.xml");
MeasureFilter filter = new MeasureFilter().setResourceQualifiers(Arrays.asList("CLA")).setSortOnMetric(METRIC_LINES);
List<MeasureFilterRow> rows = executor.execute(filter, new MeasureFilterContext());
@Test
public void sort_by_descending_numeric_measure() throws SQLException {
- setupData("shared");
+ db.prepareDbUnit(getClass(), "shared.xml");
MeasureFilter filter = new MeasureFilter().setResourceQualifiers(Arrays.asList("CLA")).setSortOnMetric(METRIC_LINES).setSortAsc(false);
List<MeasureFilterRow> rows = executor.execute(filter, new MeasureFilterContext());
@Test
public void null_measures_are_ordered_after_descending_numeric_measures() throws SQLException {
- setupData("shared");
+ db.prepareDbUnit(getClass(), "shared.xml");
MeasureFilter filter = new MeasureFilter().setResourceQualifiers(Arrays.asList("TRK"))
.setSortOnMetric(METRIC_COVERAGE).setSortAsc(false);
List<MeasureFilterRow> rows = executor.execute(filter, new MeasureFilterContext());
@Test
public void null_measures_are_ordered_after_ascending_numeric_measures() throws SQLException {
- setupData("shared");
+ db.prepareDbUnit(getClass(), "shared.xml");
MeasureFilter filter = new MeasureFilter().setResourceQualifiers(Arrays.asList("TRK"))
.setSortOnMetric(METRIC_COVERAGE).setSortAsc(true);
List<MeasureFilterRow> rows = executor.execute(filter, new MeasureFilterContext());
@Test
public void sort_by_missing_numeric_measure() throws SQLException {
- setupData("shared");
+ db.prepareDbUnit(getClass(), "shared.xml");
// coverage measures are not computed
MeasureFilter filter = new MeasureFilter().setResourceQualifiers(Arrays.asList("CLA")).setSortOnMetric(METRIC_UNKNOWN);
List<MeasureFilterRow> rows = executor.execute(filter, new MeasureFilterContext());
@Test
public void sort_by_ascending_variation() throws SQLException {
- setupData("shared");
+ db.prepareDbUnit(getClass(), "shared.xml");
MeasureFilter filter = new MeasureFilter().setResourceQualifiers(Arrays.asList("TRK")).setSortOnMetric(METRIC_LINES).setSortOnPeriod(5);
List<MeasureFilterRow> rows = executor.execute(filter, new MeasureFilterContext());
@Test
public void sort_by_descending_variation() throws SQLException {
- setupData("shared");
+ db.prepareDbUnit(getClass(), "shared.xml");
MeasureFilter filter = new MeasureFilter().setResourceQualifiers(Arrays.asList("TRK"))
.setSortOnMetric(METRIC_LINES).setSortOnPeriod(5).setSortAsc(false);
List<MeasureFilterRow> rows = executor.execute(filter, new MeasureFilterContext());
@Test
public void sort_by_ascending_date() throws SQLException {
- setupData("shared");
+ db.prepareDbUnit(getClass(), "shared.xml");
MeasureFilter filter = new MeasureFilter().setResourceQualifiers(Arrays.asList("TRK")).setSortOn(MeasureFilterSort.Field.DATE);
List<MeasureFilterRow> rows = executor.execute(filter, new MeasureFilterContext());
@Test
public void sort_by_descending_date() throws SQLException {
- setupData("shared");
+ db.prepareDbUnit(getClass(), "shared.xml");
MeasureFilter filter = new MeasureFilter().setResourceQualifiers(Arrays.asList("TRK")).setSortOn(MeasureFilterSort.Field.DATE).setSortAsc(false);
List<MeasureFilterRow> rows = executor.execute(filter, new MeasureFilterContext());
@Test
public void condition_on_numeric_measure() throws SQLException {
- setupData("shared");
+ db.prepareDbUnit(getClass(), "shared.xml");
MeasureFilter filter = new MeasureFilter().setResourceQualifiers(Arrays.asList("CLA"))
.setSortOnMetric(METRIC_LINES)
.addCondition(new MeasureFilterCondition(METRIC_LINES, MeasureFilterCondition.Operator.GREATER, 200));
@Test
public void condition_on_measure_variation() throws SQLException {
- setupData("shared");
+ db.prepareDbUnit(getClass(), "shared.xml");
MeasureFilter filter = new MeasureFilter().setResourceQualifiers(Arrays.asList("TRK"))
.setSortOnMetric(METRIC_LINES)
.addCondition(new MeasureFilterCondition(METRIC_LINES, MeasureFilterCondition.Operator.GREATER, 1000).setPeriod(5));
@Test
public void multiple_conditions_on_numeric_measures() throws SQLException {
- setupData("shared");
+ db.prepareDbUnit(getClass(), "shared.xml");
MeasureFilter filter = new MeasureFilter().setResourceQualifiers(Arrays.asList("CLA"))
.setSortOnMetric(METRIC_LINES)
.addCondition(new MeasureFilterCondition(METRIC_LINES, MeasureFilterCondition.Operator.GREATER, 2))
@Test
public void filter_by_language() throws SQLException {
- setupData("shared");
+ db.prepareDbUnit(getClass(), "shared.xml");
MeasureFilter filter = new MeasureFilter().setResourceQualifiers(Arrays.asList("TRK")).setResourceLanguages(Arrays.asList("java", "cobol"));
List<MeasureFilterRow> rows = executor.execute(filter, new MeasureFilterContext());
@Test
public void filter_by_min_date() throws SQLException {
- setupData("shared");
+ db.prepareDbUnit(getClass(), "shared.xml");
MeasureFilter filter = new MeasureFilter().setResourceQualifiers(Arrays.asList("TRK")).setFromDate(DateUtils.parseDate("2012-12-13"));
List<MeasureFilterRow> rows = executor.execute(filter, new MeasureFilterContext());
@Test
public void filter_by_range_of_dates() throws SQLException {
- setupData("shared");
+ db.prepareDbUnit(getClass(), "shared.xml");
MeasureFilter filter = new MeasureFilter().setResourceQualifiers(Arrays.asList("TRK"))
.setFromDate(DateUtils.parseDate("2007-01-01"))
.setToDate(DateUtils.parseDate("2010-01-01"));
@Test
public void filter_by_resource_name() throws SQLException {
- setupData("shared");
+ db.prepareDbUnit(getClass(), "shared.xml");
MeasureFilter filter = new MeasureFilter().setResourceQualifiers(Arrays.asList("TRK")).setResourceName("PHP Proj");
List<MeasureFilterRow> rows = executor.execute(filter, new MeasureFilterContext());
@Test
public void filter_by_resource_key_star_regexp() throws SQLException {
- setupData("shared");
+ db.prepareDbUnit(getClass(), "shared.xml");
MeasureFilter filter = new MeasureFilter().setResourceQualifiers(Arrays.asList("TRK")).setResourceKeyRegexp("java*");
List<MeasureFilterRow> rows = executor.execute(filter, new MeasureFilterContext());
@Test
public void filter_by_resource_key_exclamation_mark() throws SQLException {
- setupData("shared");
+ db.prepareDbUnit(getClass(), "shared.xml");
MeasureFilter filter = new MeasureFilter().setResourceQualifiers(Arrays.asList("TRK")).setResourceKeyRegexp("JaV?_proje*");
List<MeasureFilterRow> rows = executor.execute(filter, new MeasureFilterContext());
assertThat(rows).hasSize(1);
@Test
public void filter_by_base_resource() throws SQLException {
- setupData("shared");
+ db.prepareDbUnit(getClass(), "shared.xml");
MeasureFilter filter = new MeasureFilter().setResourceQualifiers(Arrays.asList("CLA")).setBaseResourceKey("java_project");
List<MeasureFilterRow> rows = executor.execute(filter, new MeasureFilterContext());
@Test
public void filter_by_parent_resource() throws SQLException {
- setupData("shared");
+ db.prepareDbUnit(getClass(), "shared.xml");
MeasureFilter filter = new MeasureFilter().setBaseResourceKey("java_project").setOnBaseResourceChildren(true);
List<MeasureFilterRow> rows = executor.execute(filter, new MeasureFilterContext());
@Test
public void filter_by_parent_without_children() throws Exception {
- setupData("shared");
+ db.prepareDbUnit(getClass(), "shared.xml");
MeasureFilter filter = new MeasureFilter().setResourceQualifiers(Arrays.asList("TRK", "PAC", "CLA")).setBaseResourceKey("java_project:org.sonar.foo.Big").setOnBaseResourceChildren(true);
List<MeasureFilterRow> rows = executor.execute(filter, new MeasureFilterContext());
@Test
public void filter_by_user_favourites() throws Exception {
- setupData("shared");
+ db.prepareDbUnit(getClass(), "shared.xml");
MeasureFilter filter = new MeasureFilter().setResourceQualifiers(Arrays.asList("TRK", "FIL")).setUserFavourites(true);
List<MeasureFilterRow> rows = executor.execute(filter, new MeasureFilterContext().setUserId(50L));
@Test
public void ignore_person_measures_in_condition() throws Exception {
- setupData("ignore_person_measures");
+ db.prepareDbUnit(getClass(), "ignore_person_measures.xml");
MeasureFilter filter = new MeasureFilter().setResourceQualifiers(Arrays.asList("TRK")).addCondition(
new MeasureFilterCondition(new Metric("ncloc").setId(1), MeasureFilterCondition.Operator.GREATER, 0.0)
);
@Test
public void ignore_person_measures_in_sort() throws Exception {
- setupData("ignore_person_measures");
+ db.prepareDbUnit(getClass(), "ignore_person_measures.xml");
MeasureFilter filter = new MeasureFilter().setResourceQualifiers(Arrays.asList("TRK")).setSortOnMetric(new Metric("ncloc").setId(1));
List<MeasureFilterRow> rows = executor.execute(filter, new MeasureFilterContext().setUserId(50L));
@Test
public void ignore_quality_model_measures_in_condition() throws Exception {
- setupData("ignore_quality_model_measures");
+ db.prepareDbUnit(getClass(), "ignore_quality_model_measures.xml");
MeasureFilter filter = new MeasureFilter().setResourceQualifiers(Arrays.asList("TRK")).addCondition(
new MeasureFilterCondition(new Metric("ncloc").setId(1), MeasureFilterCondition.Operator.GREATER, 0.0)
);
@Test
public void ignore_quality_model_measures_in_sort() throws Exception {
- setupData("ignore_quality_model_measures");
+ db.prepareDbUnit(getClass(), "ignore_quality_model_measures.xml");
MeasureFilter filter = new MeasureFilter().setResourceQualifiers(Arrays.asList("TRK")).setSortOnMetric(new Metric("ncloc").setId(1));
List<MeasureFilterRow> rows = executor.execute(filter, new MeasureFilterContext().setUserId(50L));