private static void addMandatoryValuesToFacet(Facets facets, String facetName, Iterable<String> mandatoryValues) { Map<String, Long> buckets = facets.get(facetName); if (buckets == null) { return; } for (String mandatoryValue : mandatoryValues) { if (!buckets.containsKey(mandatoryValue)) { buckets.put(mandatoryValue, 0L); } } }
@SafeVarargs private final void assertThatFacetHasOnly(IssueQuery.Builder query, String facet, Map.Entry<String, Long>... expectedEntries) { SearchResponse result = underTest.search(query.build(), new SearchOptions().addFacets(singletonList(facet))); Facets facets = new Facets(result, system2.getDefaultTimeZone()); assertThat(facets.getNames()).containsOnly(facet, "effort"); assertThat(facets.get(facet)).containsOnly(expectedEntries); } }
private static void addMandatoryValuesToFacet(Facets facets, String facetName, @Nullable Iterable<String> mandatoryValues) { Map<String, Long> buckets = facets.get(facetName); if (buckets != null && mandatoryValues != null) { for (String mandatoryValue : mandatoryValues) { if (!buckets.containsKey(mandatoryValue)) { buckets.put(mandatoryValue, 0L); } } } }
@SafeVarargs private final void assertThatFacetHasExactly(IssueQuery.Builder query, String facet, Map.Entry<String, Long>... expectedEntries) { SearchResponse result = underTest.search(query.build(), new SearchOptions().addFacets(singletonList(facet))); Facets facets = new Facets(result, system2.getDefaultTimeZone()); assertThat(facets.getNames()).containsOnly(facet, "effort"); assertThat(facets.get(facet)).containsExactly(expectedEntries); }
private static void addMandatoryFacetValues(SearchResult results, String facetName, @Nullable Collection<String> mandatoryValues) { Map<String, Long> facetValues = results.facets.get(facetName); if (facetValues != null) { Collection<String> valuesToAdd = mandatoryValues == null ? Lists.newArrayList() : mandatoryValues; for (String item : valuesToAdd) { if (!facetValues.containsKey(item)) { facetValues.put(item, 0L); } } } }
@Test public void facets_on_languages() { ComponentDto project = ComponentTesting.newPrivateProjectDto(newOrganizationDto()); ComponentDto file = ComponentTesting.newFileDto(project, null); RuleKey ruleKey = RuleKey.of("repo", "X1"); indexIssues(IssueDocTesting.newDoc("I1", file).setLanguage("xoo").setEffort(10L)); Facets facets = search("languages"); assertThat(facets.getNames()).containsOnly("languages", FACET_MODE_EFFORT); assertThat(facets.get("languages")).containsOnly(entry("xoo", 10L)); assertThat(facets.get(FACET_MODE_EFFORT)).containsOnly(entry("total", 10L)); }
private static void completeTotalEffortFromFacet(@Nullable Facets facets, SearchResponseData result) { if (facets != null) { Map<String, Long> effortFacet = facets.get(IssuesWsParameters.FACET_MODE_EFFORT); if (effortFacet != null) { result.setEffortTotal(effortFacet.get(Facets.TOTAL)); } } }
@Test public void languages_facet_should_return_top_100_items() { rangeClosed(1, 101).forEach(i -> db.rules().insert(r -> r.setLanguage("lang" + i))); index(); SearchIdResult result = underTest.search(new RuleQuery(), new SearchOptions().addFacets(singletonList(FACET_LANGUAGES))); assertThat(result.getFacets().get(FACET_LANGUAGES).size()).isEqualTo(100); }
@Test public void repositories_facet_should_return_top_10_items() { rangeClosed(1, 11).forEach(i -> db.rules().insert(r -> r.setRepositoryKey("repo" + i))); index(); SearchIdResult result = underTest.search(new RuleQuery(), new SearchOptions().addFacets(singletonList(FACET_REPOSITORIES))); assertThat(result.getFacets().get(FACET_REPOSITORIES).size()).isEqualTo(10); }
private void assertThatFacetHasSize(IssueQuery issueQuery, String facet, int expectedSize) { SearchResponse result = underTest.search(issueQuery, new SearchOptions().addFacets(singletonList(facet))); Facets facets = new Facets(result, system2.getDefaultTimeZone()); assertThat(facets.get(facet)).hasSize(expectedSize); } }
private void verifyFacet(RuleQuery query, String facet, Map.Entry<String, Long>... expectedBuckets) { SearchIdResult<Integer> result = underTest.search(query, new SearchOptions().addFacets(facet)); assertThat(result.getFacets().get(facet)) .containsOnly(expectedBuckets); }
@Test public void facet_tags_returns_more_than_10_tags_when_tags_filter_contains_value_not_in_top_10() { index( newDoc().setTags(newArrayList("finance1", "finance2", "finance3", "finance4", "finance5", "finance6", "finance7", "finance8", "finance9", "finance10")), newDoc().setTags(newArrayList("finance1", "finance2", "finance3", "finance4", "finance5", "finance6", "finance7", "finance8", "finance9", "finance10")), newDoc().setTags(newArrayList("solo", "solo2"))); Map<String, Long> result = underTest.search(new ProjectMeasuresQuery().setTags(ImmutableSet.of("solo", "solo2")), new SearchOptions().addFacets(FIELD_TAGS)).getFacets() .get(FIELD_TAGS); assertThat(result).hasSize(12).containsOnlyKeys("finance1", "finance2", "finance3", "finance4", "finance5", "finance6", "finance7", "finance8", "finance9", "finance10", "solo", "solo2"); }
@Test public void facet_languages_is_limited_to_10_languages() { index( newDoc().setLanguages(asList("<null>", "java", "xoo", "css", "cpp")), newDoc().setLanguages(asList("xml", "php", "python", "perl", "ruby")), newDoc().setLanguages(asList("js", "scala"))); Facets facets = underTest.search(new ProjectMeasuresQuery(), new SearchOptions().addFacets(LANGUAGES)).getFacets(); assertThat(facets.get(LANGUAGES)).hasSize(10); }
private void assertNclocFacet(ProjectMeasuresQuery query, Long... facetExpectedValues) { checkArgument(facetExpectedValues.length == 5, "5 facet values is required"); Facets facets = underTest.search(query, new SearchOptions().addFacets(NCLOC)).getFacets(); assertThat(facets.get(NCLOC)).containsExactly( entry("*-1000.0", facetExpectedValues[0]), entry("1000.0-10000.0", facetExpectedValues[1]), entry("10000.0-100000.0", facetExpectedValues[2]), entry("100000.0-500000.0", facetExpectedValues[3]), entry("500000.0-*", facetExpectedValues[4])); } }
@Test public void facet_tags_returns_10_elements_by_default() { index( newDoc().setTags(newArrayList("finance1", "finance2", "finance3", "finance4", "finance5", "finance6", "finance7", "finance8", "finance9", "finance10")), newDoc().setTags(newArrayList("finance1", "finance2", "finance3", "finance4", "finance5", "finance6", "finance7", "finance8", "finance9", "finance10")), newDoc().setTags(newArrayList("solo"))); Map<String, Long> result = underTest.search(new ProjectMeasuresQuery(), new SearchOptions().addFacets(FIELD_TAGS)).getFacets().get(FIELD_TAGS); assertThat(result).hasSize(10).containsOnlyKeys("finance1", "finance2", "finance3", "finance4", "finance5", "finance6", "finance7", "finance8", "finance9", "finance10"); }
@Test public void tags_facet_should_be_available_if_organization_is_specified() { OrganizationDto organization = db.organizations().insert(); RuleQuery query = new RuleQuery().setOrganization(organization); SearchOptions options = new SearchOptions().addFacets(singletonList(FACET_TAGS)); SearchIdResult result = underTest.search(query, options); assertThat(result.getFacets().get(FACET_TAGS)).isNotNull(); }
@Test public void facet_on_created_at_without_issues() { SearchOptions searchOptions = new SearchOptions().addFacets("createdAt"); SearchResponse result = underTest.search(IssueQuery.builder().build(), searchOptions); Map<String, Long> createdAt = new Facets(result, system2.getDefaultTimeZone()).get("createdAt"); assertThat(createdAt).isNull(); }
@Test public void tags_facet_should_find_tags_of_specified_organization() { OrganizationDto organization = db.organizations().insert(); RuleDefinitionDto rule = createRule(setSystemTags()); createRuleMetadata(rule, organization, setTags("bla")); index(); RuleQuery query = new RuleQuery().setOrganization(organization); SearchOptions options = new SearchOptions().addFacets(singletonList(FACET_TAGS)); SearchIdResult result = underTest.search(query, options); assertThat(result.getFacets().get(FACET_TAGS)).contains(entry("bla", 1L)); }
@Test public void facet_on_created_at_with_one_day() { SearchOptions options = fixtureForCreatedAtFacet(); SearchResponse result = underTest.search(IssueQuery.builder() .createdAfter(parseDateTime("2014-09-01T00:00:00-0100")) .createdBefore(parseDateTime("2014-09-02T00:00:00-0100")).build(), options); Map<String, Long> createdAt = new Facets(result, system2.getDefaultTimeZone()).get("createdAt"); assertThat(createdAt).containsOnly( entry("2014-09-01", 2L)); }
@Test public void facet_on_created_at() { SearchOptions searchOptions = fixtureForCreatedAtFacet(); Builder query = newQueryBuilder().createdBefore(parseDateTime("2016-01-01T00:00:00+0100")); Map<String, Long> createdAt = new Facets(underTest.search(query.build(), searchOptions), system2.getDefaultTimeZone()).get("createdAt"); assertThat(createdAt).containsOnly( entry("2011-01-01", 10L), entry("2012-01-01", 0L), entry("2013-01-01", 0L), entry("2014-01-01", 50L), entry("2015-01-01", 10L)); }