From 9db4eb325adf58b3c51bc7ae0bce65a361e98a74 Mon Sep 17 00:00:00 2001 From: Teryk Bellahsene Date: Wed, 15 Mar 2017 16:23:07 +0100 Subject: [PATCH] SONAR-8840 WS api/project_tags/search is lexically ordered --- .../measure/index/ProjectMeasuresIndex.java | 3 ++- .../measure/index/ProjectMeasuresIndexTest.java | 17 ++++++++++++++++- .../server/projecttag/ws/SearchActionTest.java | 11 ++++++++++- 3 files changed, 28 insertions(+), 3 deletions(-) diff --git a/server/sonar-server/src/main/java/org/sonar/server/measure/index/ProjectMeasuresIndex.java b/server/sonar-server/src/main/java/org/sonar/server/measure/index/ProjectMeasuresIndex.java index fe64103bbfc..9892a11d5c8 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/measure/index/ProjectMeasuresIndex.java +++ b/server/sonar-server/src/main/java/org/sonar/server/measure/index/ProjectMeasuresIndex.java @@ -315,7 +315,8 @@ public class ProjectMeasuresIndex extends BaseIndex { TermsBuilder tagFacet = AggregationBuilders.terms(FIELD_TAGS) .field(FIELD_TAGS) .size(pageSize) - .minDocCount(1); + .minDocCount(1) + .order(Terms.Order.term(true)); if (textQuery != null) { tagFacet.include(".*" + escapeSpecialRegexChars(textQuery) + ".*"); } diff --git a/server/sonar-server/src/test/java/org/sonar/server/measure/index/ProjectMeasuresIndexTest.java b/server/sonar-server/src/test/java/org/sonar/server/measure/index/ProjectMeasuresIndexTest.java index f8f001a61c8..c8d441acf52 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/measure/index/ProjectMeasuresIndexTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/measure/index/ProjectMeasuresIndexTest.java @@ -1174,7 +1174,7 @@ public class ProjectMeasuresIndexTest { List result = underTest.searchTags("off", 10); - assertThat(result).containsExactly("offshore", "official", "Madhoff"); + assertThat(result).containsOnly("offshore", "official", "Madhoff"); } @Test @@ -1192,6 +1192,21 @@ public class ProjectMeasuresIndexTest { assertThat(result).containsOnly("offshore", "official", "Madhoff", "finance", "marketing", "java", "javascript"); } + @Test + public void search_tags_in_lexical_order() { + index( + newDoc().setTags(newArrayList("finance", "offshore", "java")), + newDoc().setTags(newArrayList("official", "javascript")), + newDoc().setTags(newArrayList("marketing", "official")), + newDoc().setTags(newArrayList("marketing", "Madhoff")), + newDoc().setTags(newArrayList("finance", "offshore")), + newDoc().setTags(newArrayList("offshore"))); + + List result = underTest.searchTags(null, 10); + + assertThat(result).containsExactly("Madhoff", "finance", "java", "javascript", "marketing", "official", "offshore"); + } + @Test public void search_tags_only_of_authorized_projects() { indexForUser(USER1, diff --git a/server/sonar-server/src/test/java/org/sonar/server/projecttag/ws/SearchActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/projecttag/ws/SearchActionTest.java index 3d151e14117..0438f15d6d8 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/projecttag/ws/SearchActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/projecttag/ws/SearchActionTest.java @@ -88,7 +88,16 @@ public class SearchActionTest { SearchResponse result = call("off", 2); - assertThat(result.getTagsList()).containsOnly("offshore", "playoff"); + assertThat(result.getTagsList()).containsOnly("offshore", "official"); + } + + @Test + public void search_in_lexical_order() { + index(newDoc().setTags(newArrayList("offshore", "official", "Playoff"))); + + SearchResponse result = call(null, null); + + assertThat(result.getTagsList()).containsExactly("Playoff", "official", "offshore"); } @Test -- 2.39.5