From 2c4263180b4d7e894109aba0a54434f1de975238 Mon Sep 17 00:00:00 2001 From: Stephane Gamard Date: Wed, 21 May 2014 10:46:00 +0200 Subject: [PATCH] SONAR-5237 - Added Tag filtering in searchAction for RuleWS --- .../sonar/server/rule2/ws/SearchAction.java | 1 + .../server/rule2/ws/RulesWebServiceTest.java | 17 +++++++++++++++++ .../RulesWebServiceTest/filter_by_tags.json | 19 +++++++++++++++++++ 3 files changed, 37 insertions(+) create mode 100644 sonar-server/src/test/resources/org/sonar/server/rule2/ws/RulesWebServiceTest/filter_by_tags.json diff --git a/sonar-server/src/main/java/org/sonar/server/rule2/ws/SearchAction.java b/sonar-server/src/main/java/org/sonar/server/rule2/ws/SearchAction.java index 66ad5d23e8d..b099d359a55 100644 --- a/sonar-server/src/main/java/org/sonar/server/rule2/ws/SearchAction.java +++ b/sonar-server/src/main/java/org/sonar/server/rule2/ws/SearchAction.java @@ -183,6 +183,7 @@ public class SearchAction implements RequestHandler { query.setQProfileKey(request.param(PARAM_QPROFILE)); query.setSortField(RuleQuery.SortField.valueOfOrNull(request.param(SearchOptions.PARAM_SORT))); query.setAscendingSort(request.mandatoryParamAsBoolean(SearchOptions.PARAM_ASCENDING)); + query.setTags(request.paramAsStrings(PARAM_TAGS)); return query; } diff --git a/sonar-server/src/test/java/org/sonar/server/rule2/ws/RulesWebServiceTest.java b/sonar-server/src/test/java/org/sonar/server/rule2/ws/RulesWebServiceTest.java index 71b9098cad5..6e122b141e0 100644 --- a/sonar-server/src/test/java/org/sonar/server/rule2/ws/RulesWebServiceTest.java +++ b/sonar-server/src/test/java/org/sonar/server/rule2/ws/RulesWebServiceTest.java @@ -290,6 +290,23 @@ public class RulesWebServiceTest { result.assertJson(this.getClass(), "get_note_as_markdown_and_html.json"); } + @Test + public void filter_by_tags() throws Exception { + ruleDao.insert(newRuleDto(RuleKey.of("java", "S001")) + .setSystemTags(ImmutableSet.of("tag1")), session); + ruleDao.insert(newRuleDto(RuleKey.of("java", "S002")) + .setSystemTags(ImmutableSet.of("tag2")), session); + + session.commit(); + tester.get(RuleService.class).refresh(); + + MockUserSession.set(); + WsTester.TestRequest request = wsTester.newGetRequest("api/rules", "search"); + request.setParam("tags","tag1"); + WsTester.Result result = request.execute(); + result.assertJson(this.getClass(), "filter_by_tags.json"); + } + private QualityProfileDto newQualityProfile() { return new QualityProfileDto() diff --git a/sonar-server/src/test/resources/org/sonar/server/rule2/ws/RulesWebServiceTest/filter_by_tags.json b/sonar-server/src/test/resources/org/sonar/server/rule2/ws/RulesWebServiceTest/filter_by_tags.json new file mode 100644 index 00000000000..3fe2e343648 --- /dev/null +++ b/sonar-server/src/test/resources/org/sonar/server/rule2/ws/RulesWebServiceTest/filter_by_tags.json @@ -0,0 +1,19 @@ +{"total": 1, "p": 1, "ps": 25, "rules": [ + { + "key": "java:S001", + "repo": "java", + "name": "Rule S001", + "htmlDesc": "Description S001", + "severity": "INFO", + "status": "READY", + "internalKey": "InternalKeyS001", + "template": false, + "tags": [], + "sysTags": ["tag1"], + "debtRemFnType": "LINEAR", + "debtRemFnCoeff": "1h", + "debtRemFnOffset": "5min", + "lang": "js", + "params": [] + } +], "actives": {}} -- 2.39.5