]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-8840 WS api/project_tags/search is lexically ordered 1800/head
authorTeryk Bellahsene <teryk.bellahsene@sonarsource.com>
Wed, 15 Mar 2017 15:23:07 +0000 (16:23 +0100)
committerTeryk Bellahsene <teryk.bellahsene@sonarsource.com>
Thu, 16 Mar 2017 07:53:13 +0000 (08:53 +0100)
server/sonar-server/src/main/java/org/sonar/server/measure/index/ProjectMeasuresIndex.java
server/sonar-server/src/test/java/org/sonar/server/measure/index/ProjectMeasuresIndexTest.java
server/sonar-server/src/test/java/org/sonar/server/projecttag/ws/SearchActionTest.java

index fe64103bbfc73c5e19e69ecc03d6a09f79deee54..9892a11d5c8d967118102a0e2ea56b580ba12fe8 100644 (file)
@@ -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) + ".*");
     }
index f8f001a61c89caac9a3abc983dcaf6a4fe7cefed..c8d441acf52aea382abdb59371559d0f6334ad52 100644 (file)
@@ -1174,7 +1174,7 @@ public class ProjectMeasuresIndexTest {
 
     List<String> 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<String> 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,
index 3d151e141175721f6ddc5ccda7fdb80ea509df16..0438f15d6d86ac5a05e4caf36c5dc79a975f49d0 100644 (file)
@@ -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