From: Stephane Gamard Date: Wed, 21 May 2014 08:46:00 +0000 (+0200) Subject: SONAR-5237 - Added Tag filtering in searchAction for RuleWS X-Git-Tag: 4.4-RC1~945 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=2c4263180b4d7e894109aba0a54434f1de975238;p=sonarqube.git SONAR-5237 - Added Tag filtering in searchAction for RuleWS --- 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": {}}