]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-5529 Fix sort by Status in /api/issues/search
authorJulien Lancelot <julien.lancelot@sonarsource.com>
Fri, 3 Oct 2014 13:00:53 +0000 (15:00 +0200)
committerJulien Lancelot <julien.lancelot@sonarsource.com>
Fri, 3 Oct 2014 14:13:47 +0000 (16:13 +0200)
server/sonar-server/src/main/java/org/sonar/server/issue/index/IssueIndex.java
server/sonar-server/src/test/java/org/sonar/server/issue/index/IssueIndexMediumTest.java

index 89cd31b8e91829ab233b3bb65cc8375bdc61132b..dcad6f6af1c37e14a66f363bb3f9ce0a5210eb20 100644 (file)
@@ -300,6 +300,8 @@ public class IssueIndex extends BaseIndex<Issue, IssueDto, String> {
   private IndexField toIndexField(String sort) {
     if (IssueQuery.SORT_BY_ASSIGNEE.equals(sort)) {
       return IssueNormalizer.IssueField.ASSIGNEE;
+    } else if (IssueQuery.SORT_BY_STATUS.equals(sort)) {
+      return IssueNormalizer.IssueField.STATUS;
     } else if (IssueQuery.SORT_BY_SEVERITY.equals(sort)) {
       return IssueNormalizer.IssueField.SEVERITY_VALUE;
     } else if (IssueQuery.SORT_BY_CREATION_DATE.equals(sort)) {
index 58c609b1446e13f650927ebe2bb0aeff9d9a2031..e5f26d0a426eabe1a815baf23cae625f957990b6 100644 (file)
@@ -50,11 +50,7 @@ import org.sonar.server.issue.db.IssueDao;
 import org.sonar.server.platform.BackendCleanup;
 import org.sonar.server.rule.RuleTesting;
 import org.sonar.server.rule.db.RuleDao;
-import org.sonar.server.search.FacetValue;
-import org.sonar.server.search.IndexDefinition;
-import org.sonar.server.search.QueryContext;
-import org.sonar.server.search.Result;
-import org.sonar.server.search.SearchClient;
+import org.sonar.server.search.*;
 import org.sonar.server.tester.ServerTester;
 import org.sonar.server.user.MockUserSession;
 
@@ -408,6 +404,28 @@ public class IssueIndexMediumTest {
     assertThat(result.getHits()).hasSize(500);
   }
 
+  @Test
+  public void sort_by_status() throws Exception {
+    db.issueDao().insert(session,
+      IssueTesting.newDto(rule, file, project).setStatus(Issue.STATUS_OPEN),
+      IssueTesting.newDto(rule, file, project).setStatus(Issue.STATUS_CLOSED),
+      IssueTesting.newDto(rule, file, project).setStatus(Issue.STATUS_REOPENED)
+    );
+    session.commit();
+
+    IssueQuery.Builder query = IssueQuery.builder().sort(IssueQuery.SORT_BY_STATUS).asc(true);
+    Result<Issue> result = index.search(query.build(), new QueryContext());
+    assertThat(result.getHits().get(0).status()).isEqualTo(Issue.STATUS_CLOSED);
+    assertThat(result.getHits().get(1).status()).isEqualTo(Issue.STATUS_OPEN);
+    assertThat(result.getHits().get(2).status()).isEqualTo(Issue.STATUS_REOPENED);
+
+    query = IssueQuery.builder().sort(IssueQuery.SORT_BY_STATUS).asc(false);
+    result = index.search(query.build(), new QueryContext());
+    assertThat(result.getHits().get(0).status()).isEqualTo(Issue.STATUS_REOPENED);
+    assertThat(result.getHits().get(1).status()).isEqualTo(Issue.STATUS_OPEN);
+    assertThat(result.getHits().get(2).status()).isEqualTo(Issue.STATUS_CLOSED);
+  }
+
   @Test
   public void sort_by_severity() throws Exception {
     db.issueDao().insert(session,