]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-5531 - Initial MediumTest for WS SearchAction passing
authorStephane Gamard <stephane.gamard@sonarsource.com>
Thu, 4 Sep 2014 15:39:29 +0000 (17:39 +0200)
committerStephane Gamard <stephane.gamard@sonarsource.com>
Thu, 4 Sep 2014 15:39:29 +0000 (17:39 +0200)
server/sonar-server/src/main/java/org/sonar/server/issue/IssueService.java
server/sonar-server/src/main/java/org/sonar/server/issue/index/IssueResult.java
server/sonar-server/src/main/java/org/sonar/server/issue/ws/SearchAction.java
server/sonar-server/src/test/java/org/sonar/server/issue/ws/IssuesWsMediumTest.java
server/sonar-server/src/test/resources/org/sonar/server/issue/ws/IssuesWsMediumTest/empty_result.json [new file with mode: 0644]

index 6c8351a43192ccf4bd5817bd271c74b36a31d788..c0fe07b5e64b7fd651fae6538fb328188ba75dab 100644 (file)
@@ -38,6 +38,7 @@ import org.sonar.api.rules.Rule;
 import org.sonar.api.rules.RuleFinder;
 import org.sonar.api.user.User;
 import org.sonar.api.user.UserFinder;
+import org.sonar.api.utils.Paging;
 import org.sonar.api.web.UserRole;
 import org.sonar.core.issue.DefaultIssueBuilder;
 import org.sonar.core.issue.IssueNotifications;
@@ -340,6 +341,10 @@ public class IssueService implements ServerComponent {
 
     // Extend the content of the resultSet to make an actual IssueResponse
     IssueResult results = new IssueResult(issueIndex, esResults);
+    results.setPaging(Paging.create(
+      options.getLimit(),
+      (options.getOffset() * options.getLimit()) + 1,
+      new Long(esResults.getHits().getTotalHits()).intValue()));
 
     // TODO Implement the logic of search here!!!
     return results;
index c7ae8f393fb99d083f67a5acd186f7a8fa5785e6..b10f8716ad345e9a516b2a2d53796ce8bb494474 100644 (file)
@@ -33,18 +33,18 @@ import org.sonar.server.search.BaseIndex;
 import org.sonar.server.search.Result;
 
 import javax.annotation.Nullable;
-
 import java.util.Collection;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
 public class IssueResult extends Result<IssueDoc> implements IssueQueryResult {
 
-  Map<String, Rule> rules;
-  Map<String, Component> components;
-  Map<String, Component> projects;
-  Map<String, ActionPlan> actionPlans;
-  Map<String, User> usersByLogin;
+  private final Map<String, Rule> rules;
+  private final Map<String, Component> components;
+  private final Map<String, Component> projects;
+  private final Map<String, ActionPlan> actionPlans;
+  private final Map<String, User> usersByLogin;
 
   Paging paging;
 
@@ -54,6 +54,11 @@ public class IssueResult extends Result<IssueDoc> implements IssueQueryResult {
 
   public IssueResult(@Nullable BaseIndex<IssueDoc, ?, ?> index, SearchResponse response) {
     super(index, response);
+    rules = new HashMap<String, Rule>();
+    components = new HashMap<String, Component>();
+    projects = new HashMap<String, Component>();
+    actionPlans = new HashMap<String, ActionPlan>();
+    usersByLogin = new HashMap<String, User>();
   }
 
   @Override
@@ -121,6 +126,10 @@ public class IssueResult extends Result<IssueDoc> implements IssueQueryResult {
     return paging;
   }
 
+  public void setPaging(Paging paging) {
+    this.paging = paging;
+  }
+
   @Override
   public boolean maxResultsReached() {
     return false;
index 588bcee260739259c8d8978171f7b41689560a42..1a34f8f9c7839529423e7b48e786c78213c2441a 100644 (file)
@@ -57,6 +57,7 @@ import org.sonar.server.user.UserSession;
 import javax.annotation.CheckForNull;
 import javax.annotation.Nullable;
 import java.util.Collection;
+import java.util.Collections;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
@@ -100,6 +101,7 @@ public class SearchAction implements RequestHandler {
     // Add globalized search options. Will also support legacy params
     // Generic search parameters
     SearchOptions.definePageParams(action);
+    SearchOptions.defineFieldsParam(action, Collections.<String>emptyList());
 
     // Issue-specific search parameters
     defineIssueSearchParameters(action);
index 9d17bf1cc10ee73680943b0ca8060fdcc0034413..cd6dc9df9562b00b212110078a45547548fe1907 100644 (file)
@@ -87,24 +87,14 @@ public class IssuesWsMediumTest {
   }
 
   @Test
-  public void deactivate_rule() throws Exception {
-    // QualityProfileDto profile = createProfile("java");
-    // RuleDto rule = createRule(profile.getLanguage(), "toto");
-    // createActiveRule(rule, profile);
-    // session.commit();
-    //
-    // // 0. Assert No Active Rule for profile
-    // assertThat(db.activeRuleDao().findByProfileKey(session, profile.getKey())).hasSize(1);
-    //
-    // // 1. Deactivate Rule
-    // WsTester.TestRequest request = wsTester.newGetRequest(QProfilesWs.API_ENDPOINT, RuleActivationActions.DEACTIVATE_ACTION);
-    // request.setParam(RuleActivationActions.PROFILE_KEY, profile.getKey().toString());
-    // request.setParam(RuleActivationActions.RULE_KEY, rule.getKey().toString());
-    // request.execute();
-    // session.clearCache();
-    //
-    // // 2. Assert ActiveRule in DAO
-    // assertThat(db.activeRuleDao().findByProfileKey(session, profile.getKey())).isEmpty();
+  public void empty_search() throws Exception {
+
+    WsTester.TestRequest request = wsTester.newGetRequest(IssuesWs.API_ENDPOINT, SearchAction.SEARCH_ACTION);
+    // request.setParam()
+    WsTester.Result result = request.execute();
+
+    assertThat(result).isNotNull();
+    result.assertJson(this.getClass(), "empty_result.json", false);
   }
 
 }
diff --git a/server/sonar-server/src/test/resources/org/sonar/server/issue/ws/IssuesWsMediumTest/empty_result.json b/server/sonar-server/src/test/resources/org/sonar/server/issue/ws/IssuesWsMediumTest/empty_result.json
new file mode 100644 (file)
index 0000000..311141b
--- /dev/null
@@ -0,0 +1,7 @@
+{"maxResultsReached": false, "paging": {
+  "pageIndex": 1,
+  "pageSize": 10,
+  "total": 0,
+  "fTotal": "0",
+  "pages": 0
+}, "issues": [], "components": [], "projects": [], "rules": [], "users": []}