@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); }
@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); } }
@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); }
@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)); }
@Test public void facets_on_statuses() { ComponentDto project = ComponentTesting.newPrivateProjectDto(newOrganizationDto()); ComponentDto file = ComponentTesting.newFileDto(project, null); indexIssues( IssueDocTesting.newDoc("I1", file).setStatus(STATUS_CLOSED).setEffort(10L), IssueDocTesting.newDoc("I2", file).setStatus(STATUS_CLOSED).setEffort(10L), IssueDocTesting.newDoc("I3", file).setStatus(STATUS_OPEN).setEffort(10L)); Facets facets = search("statuses"); assertThat(facets.getNames()).containsOnly("statuses", FACET_MODE_EFFORT); assertThat(facets.get("statuses")).containsOnly(entry("CLOSED", 20L), entry("OPEN", 10L)); assertThat(facets.get(FACET_MODE_EFFORT)).containsOnly(entry("total", 30L)); }
@Test public void facets_on_directories() { ComponentDto project = ComponentTesting.newPrivateProjectDto(newOrganizationDto()); ComponentDto file1 = ComponentTesting.newFileDto(project, null).setPath("src/main/xoo/F1.xoo"); ComponentDto file2 = ComponentTesting.newFileDto(project, null).setPath("F2.xoo"); indexIssues( IssueDocTesting.newDoc("I1", file1).setDirectoryPath("/src/main/xoo").setEffort(10L), IssueDocTesting.newDoc("I2", file2).setDirectoryPath("/").setEffort(10L)); Facets facets = search("directories"); assertThat(facets.getNames()).containsOnly("directories", FACET_MODE_EFFORT); assertThat(facets.get("directories")).containsOnly(entry("/src/main/xoo", 10L), entry("/", 10L)); assertThat(facets.get(FACET_MODE_EFFORT)).containsOnly(entry("total", 20L)); }
@Test public void facets_on_severities() { ComponentDto project = ComponentTesting.newPrivateProjectDto(newOrganizationDto()); ComponentDto file = ComponentTesting.newFileDto(project, null); indexIssues( IssueDocTesting.newDoc("I1", file).setSeverity(Severity.INFO).setEffort(10L), IssueDocTesting.newDoc("I2", file).setSeverity(Severity.INFO).setEffort(10L), IssueDocTesting.newDoc("I3", file).setSeverity(Severity.MAJOR).setEffort(10L)); Facets facets = search("severities"); assertThat(facets.getNames()).containsOnly("severities", FACET_MODE_EFFORT); assertThat(facets.get("severities")).containsOnly(entry("INFO", 20L), entry("MAJOR", 10L)); assertThat(facets.get(FACET_MODE_EFFORT)).containsOnly(entry("total", 30L)); }
@Test public void facets_on_resolutions() { ComponentDto project = ComponentTesting.newPrivateProjectDto(newOrganizationDto()); ComponentDto file = ComponentTesting.newFileDto(project, null); indexIssues( IssueDocTesting.newDoc("I1", file).setResolution(Issue.RESOLUTION_FALSE_POSITIVE).setEffort(10L), IssueDocTesting.newDoc("I2", file).setResolution(Issue.RESOLUTION_FALSE_POSITIVE).setEffort(10L), IssueDocTesting.newDoc("I3", file).setResolution(Issue.RESOLUTION_FIXED).setEffort(10L)); Facets facets = search("resolutions"); assertThat(facets.getNames()).containsOnly("resolutions", FACET_MODE_EFFORT); assertThat(facets.get("resolutions")).containsOnly(entry("FALSE-POSITIVE", 20L), entry("FIXED", 10L)); assertThat(facets.get(FACET_MODE_EFFORT)).containsOnly(entry("total", 30L)); }
@Test public void facets_on_projects() { OrganizationDto organizationDto = newOrganizationDto(); ComponentDto project = ComponentTesting.newPrivateProjectDto(organizationDto, "ABCD"); ComponentDto project2 = ComponentTesting.newPrivateProjectDto(organizationDto, "EFGH"); indexIssues( IssueDocTesting.newDoc("I1", ComponentTesting.newFileDto(project, null)).setEffort(10L), IssueDocTesting.newDoc("I2", ComponentTesting.newFileDto(project, null)).setEffort(10L), IssueDocTesting.newDoc("I3", ComponentTesting.newFileDto(project2, null)).setEffort(10L)); Facets facets = search("projects"); assertThat(facets.getNames()).containsOnly("projects", FACET_MODE_EFFORT); assertThat(facets.get("projects")).containsOnly(entry("ABCD", 20L), entry("EFGH", 10L)); assertThat(facets.get(FACET_MODE_EFFORT)).containsOnly(entry("total", 30L)); }
@Test public void facets_on_authors() { ComponentDto project = ComponentTesting.newPrivateProjectDto(newOrganizationDto()); ComponentDto file = ComponentTesting.newFileDto(project, null); indexIssues( IssueDocTesting.newDoc("I1", file).setAuthorLogin("steph").setEffort(10L), IssueDocTesting.newDoc("I2", file).setAuthorLogin("simon").setEffort(10L), IssueDocTesting.newDoc("I3", file).setAuthorLogin("simon").setEffort(10L), IssueDocTesting.newDoc("I4", file).setAuthorLogin(null).setEffort(10L)); Facets facets = new Facets(underTest.search(newQueryBuilder().build(), new SearchOptions().addFacets(asList("authors"))), system2.getDefaultTimeZone()); assertThat(facets.getNames()).containsOnly("authors", FACET_MODE_EFFORT); assertThat(facets.get("authors")).containsOnly(entry("steph", 10L), entry("simon", 20L)); assertThat(facets.get(FACET_MODE_EFFORT)).containsOnly(entry("total", 40L)); }
@Test public void facets_on_assignees() { ComponentDto project = ComponentTesting.newPrivateProjectDto(newOrganizationDto()); ComponentDto file = ComponentTesting.newFileDto(project, null); indexIssues( IssueDocTesting.newDoc("I1", file).setAssigneeUuid("uuid-steph").setEffort(10L), IssueDocTesting.newDoc("I2", file).setAssigneeUuid("uuid-simon").setEffort(10L), IssueDocTesting.newDoc("I3", file).setAssigneeUuid("uuid-simon").setEffort(10L), IssueDocTesting.newDoc("I4", file).setAssigneeUuid(null).setEffort(10L)); Facets facets = new Facets(underTest.search(newQueryBuilder().build(), new SearchOptions().addFacets(asList("assignees"))), system2.getDefaultTimeZone()); assertThat(facets.getNames()).containsOnly("assignees", FACET_MODE_EFFORT); assertThat(facets.get("assignees")).containsOnly(entry("uuid-steph", 10L), entry("uuid-simon", 20L), entry("", 10L)); assertThat(facets.get(FACET_MODE_EFFORT)).containsOnly(entry("total", 40L)); }
@Test public void facets_on_components() { ComponentDto project = ComponentTesting.newPrivateProjectDto(newOrganizationDto(), "A"); ComponentDto file1 = ComponentTesting.newFileDto(project, null, "ABCD"); ComponentDto file2 = ComponentTesting.newFileDto(project, null, "BCDE"); ComponentDto file3 = ComponentTesting.newFileDto(project, null, "CDEF"); indexIssues( IssueDocTesting.newDoc("I1", project).setEffort(10L), IssueDocTesting.newDoc("I2", file1).setEffort(10L), IssueDocTesting.newDoc("I3", file2).setEffort(10L), IssueDocTesting.newDoc("I4", file2).setEffort(10L), IssueDocTesting.newDoc("I5", file3).setEffort(10L)); Facets facets = search("fileUuids"); assertThat(facets.getNames()).containsOnly("fileUuids", FACET_MODE_EFFORT); assertThat(facets.get("fileUuids")) .containsOnly(entry("A", 10L), entry("ABCD", 10L), entry("BCDE", 20L), entry("CDEF", 10L)); assertThat(facets.get(FACET_MODE_EFFORT)).containsOnly(entry("total", 50L)); }
collectFacets(collector, facets); Set<String> facetsRequiringProjectOrOrganizationParameter = facets.getNames().stream() .filter(FACETS_REQUIRING_PROJECT_OR_ORGANIZATION::contains) .collect(toSet());