From 9d3d44a117008edc3f20a53f777553a62032a159 Mon Sep 17 00:00:00 2001 From: Stephane Gamard Date: Fri, 5 Sep 2014 21:27:39 +0200 Subject: [PATCH] SONAR-5531 - Fixed WS Test for facets and components --- .../sonar/server/issue/ws/SearchAction.java | 24 +++++++++++ .../server/issue/ws/IssuesWsMediumTest.java | 4 +- .../ws/IssuesWsMediumTest/single_result.json | 40 ++++++++++++++++++- 3 files changed, 65 insertions(+), 3 deletions(-) diff --git a/server/sonar-server/src/main/java/org/sonar/server/issue/ws/SearchAction.java b/server/sonar-server/src/main/java/org/sonar/server/issue/ws/SearchAction.java index 0e1cc8c1113..c2dcf458380 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/issue/ws/SearchAction.java +++ b/server/sonar-server/src/main/java/org/sonar/server/issue/ws/SearchAction.java @@ -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> 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() diff --git a/server/sonar-server/src/test/java/org/sonar/server/issue/ws/IssuesWsMediumTest.java b/server/sonar-server/src/test/java/org/sonar/server/issue/ws/IssuesWsMediumTest.java index 35031607fee..9a20c95348a 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/issue/ws/IssuesWsMediumTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/issue/ws/IssuesWsMediumTest.java @@ -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); diff --git a/server/sonar-server/src/test/resources/org/sonar/server/issue/ws/IssuesWsMediumTest/single_result.json b/server/sonar-server/src/test/resources/org/sonar/server/issue/ws/IssuesWsMediumTest/single_result.json index c7be54490fd..4fa5dc29b8a 100644 --- a/server/sonar-server/src/test/resources/org/sonar/server/issue/ws/IssuesWsMediumTest/single_result.json +++ b/server/sonar-server/src/test/resources/org/sonar/server/issue/ws/IssuesWsMediumTest/single_result.json @@ -16,4 +16,42 @@ "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 + } + ] + } +]} -- 2.39.5