]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-5531 - Fixed WS Test for facets and components
authorStephane Gamard <stephane.gamard@sonarsource.com>
Fri, 5 Sep 2014 19:27:39 +0000 (21:27 +0200)
committerStephane Gamard <stephane.gamard@sonarsource.com>
Fri, 5 Sep 2014 19:27:39 +0000 (21:27 +0200)
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/single_result.json

index 0e1cc8c1113f6203154dd8924f4b4d8b1d112243..c2dcf458380e2a2023a4e8b0a0c307b5bc8f54f7 100644 (file)
@@ -49,12 +49,15 @@ import org.sonar.markdown.Markdown;
 import org.sonar.server.issue.IssueService;
 import org.sonar.server.issue.filter.IssueFilterParameters;
 import org.sonar.server.issue.index.IssueResult;
+import org.sonar.server.search.FacetValue;
 import org.sonar.server.search.QueryOptions;
+import org.sonar.server.search.Result;
 import org.sonar.server.search.ws.SearchOptions;
 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;
@@ -222,9 +225,30 @@ public class SearchAction implements RequestHandler {
     // writeUsers(results, json);
     // writeActionPlans(results, json);
 
+    if (queryOptions.isFacet()) {
+      writeFacets(results, json);
+    }
+
     json.endObject().close();
   }
 
+  private void writeFacets(Result<?> results, JsonWriter json) {
+    json.name("facets").beginArray();
+    for (Map.Entry<String, Collection<FacetValue>> facet : results.getFacets().entrySet()) {
+      json.beginObject();
+      json.prop("property", facet.getKey());
+      json.name("values").beginArray();
+      for (FacetValue facetValue : facet.getValue()) {
+        json.beginObject();
+        json.prop("val", facetValue.getKey());
+        json.prop("count", facetValue.getValue());
+        json.endObject();
+      }
+      json.endArray().endObject();
+    }
+    json.endArray();
+  }
+
   private void writePaging(IssueQueryResult result, JsonWriter json) {
     json.prop("maxResultsReached", result.maxResultsReached());
     json.name("paging").beginObject()
index 35031607fee6703b9110a8a34723b7102897f58c..9a20c95348af2dd5ce268061cd49fd33495ee0c9 100644 (file)
@@ -136,9 +136,9 @@ public class IssuesWsMediumTest {
     session.commit();
 
     WsTester.TestRequest request = wsTester.newGetRequest(IssuesWs.API_ENDPOINT, SearchAction.SEARCH_ACTION);
-    // request.setParam()
+    request.setParam(SearchAction.PARAM_FACETS, "true");
     WsTester.Result result = request.execute();
-
+    System.out.println("result.outputAsString() = " + result.outputAsString());
     assertThat(result).isNotNull();
     // TODO Date assertion is complex du to System2
     result.assertJson(this.getClass(), "single_result.json", false);
index c7be54490fd9e352c0fc19cfebad94f8c5682317..4fa5dc29b8a53f95ff76718f6e5c02213a364974 100644 (file)
     "debt": "10min",
     "fUpdateAge": "less than a minute"
   }
-], "components": [], "projects": [], "rules": [], "users": []}
+], "components": [
+  {
+    "key": "MyComponent",
+    "id": 2
+  }
+], "projects": [
+  {
+    "key": "MyProject",
+    "id": 1
+  }
+], "facets": [
+  {
+    "property": "status",
+    "values": [
+      {
+        "val": "OPEN",
+        "count": 1
+      }
+    ]
+  },
+  {
+    "property": "severity",
+    "values": [
+      {
+        "val": "MAJOR",
+        "count": 1
+      }
+    ]
+  },
+  {
+    "property": "resolution",
+    "values": [
+      {
+        "val": "OPEN",
+        "count": 1
+      }
+    ]
+  }
+]}