@CheckForNull private static Criterion tryParsingCriterionHavingValues(String criterion) { Matcher matcher = PATTERN_HAVING_VALUES.matcher(criterion); if (!matcher.find()) { return null; } Criterion.Builder builder = new Criterion.Builder(); builder.setKey(matcher.group(1)); builder.setOperator(ProjectMeasuresQuery.Operator.IN); builder.setValues(IN_VALUES_SPLITTER.splitToList(matcher.group(3))); return builder.build(); }
@Test public void create_query_on_language_using_in_operator() { ProjectMeasuresQuery query = newProjectMeasuresQuery( singletonList(Criterion.builder().setKey("languages").setOperator(IN).setValues(asList("java", "js")).build()), emptySet()); assertThat(query.getLanguages().get()).containsOnly("java", "js"); }
@Test public void create_query_on_tag_using_in_operator() { ProjectMeasuresQuery query = newProjectMeasuresQuery( singletonList(Criterion.builder().setKey("tags").setOperator(IN).setValues(asList("java", "js")).build()), emptySet()); assertThat(query.getTags().get()).containsOnly("java", "js"); }
@CheckForNull private static Criterion tryParsingCriterionHavingValues(String criterion) { Matcher matcher = PATTERN_HAVING_VALUES.matcher(criterion); if (!matcher.find()) { return null; } Criterion.Builder builder = new Criterion.Builder(); builder.setKey(matcher.group(1)); builder.setOperator(Operator.IN); builder.setValues(IN_VALUES_SPLITTER.splitToList(matcher.group(3))); return builder.build(); }
@Test public void fail_to_create_query_on_tag_using_eq_operator_and_values() { expectedException.expect(IllegalArgumentException.class); expectedException.expectMessage("Tags should be set either by using 'tags = java' or 'tags IN (finance, platform)"); newProjectMeasuresQuery(singletonList(Criterion.builder().setKey("tags").setOperator(EQ).setValues(asList("java")).build()), emptySet()); }
@Test public void fail_to_create_query_on_language_using_eq_operator_and_values() { expectedException.expect(IllegalArgumentException.class); expectedException.expectMessage("Languages should be set either by using 'languages = java' or 'languages IN (java, js)"); newProjectMeasuresQuery(singletonList(Criterion.builder().setKey("languages").setOperator(EQ).setValues(asList("java")).build()), emptySet()); }