From 737f056055326ba3b6cc4483de65d2804f112d94 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Lievremont Date: Wed, 18 Feb 2015 10:59:57 +0100 Subject: [PATCH] SONAR-5885 Fix mapping of htmlDesc attribute to fetch correct fields in ES --- .../org/sonar/server/rule/ws/RuleMapping.java | 2 +- .../server/rule/ws/RulesWebServiceMediumTest.java | 15 +++++++++++++++ .../search_2_rules_fields.json | 15 +++++++++++++++ 3 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 server/sonar-server/src/test/resources/org/sonar/server/rule/ws/RulesWebServiceMediumTest/search_2_rules_fields.json diff --git a/server/sonar-server/src/main/java/org/sonar/server/rule/ws/RuleMapping.java b/server/sonar-server/src/main/java/org/sonar/server/rule/ws/RuleMapping.java index b32dcbe9281..edb54625e5e 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/rule/ws/RuleMapping.java +++ b/server/sonar-server/src/main/java/org/sonar/server/rule/ws/RuleMapping.java @@ -78,7 +78,7 @@ public class RuleMapping extends BaseMapping { } private void mapDescriptionFields(final MacroInterpreter macroInterpreter) { - map("htmlDesc", new Mapper() { + map("htmlDesc", new IndexMapper(RuleNormalizer.RuleField.MARKDOWN_DESCRIPTION.field(), RuleNormalizer.RuleField.HTML_DESCRIPTION.field()) { @Override public void write(JsonWriter json, RuleDoc rule, RuleMappingContext context) { if (rule.markdownDescription() != null) { diff --git a/server/sonar-server/src/test/java/org/sonar/server/rule/ws/RulesWebServiceMediumTest.java b/server/sonar-server/src/test/java/org/sonar/server/rule/ws/RulesWebServiceMediumTest.java index 2a729396892..eca79f58f1c 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/rule/ws/RulesWebServiceMediumTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/rule/ws/RulesWebServiceMediumTest.java @@ -19,6 +19,8 @@ */ package org.sonar.server.rule.ws; +import org.sonar.core.rule.RuleDto.Format; + import com.google.common.collect.ImmutableSet; import org.junit.After; import org.junit.Before; @@ -178,6 +180,19 @@ public class RulesWebServiceMediumTest { result.assertJson(getClass(), "search_2_rules.json", false); } + @Test + public void search_2_rules_with_field_selection() throws Exception { + ruleDao.insert(session, RuleTesting.newXooX1()); + ruleDao.insert(session, RuleTesting.newXooX2().setDescription("A *Xoo* rule").setDescriptionFormat(Format.MARKDOWN)); + session.commit(); + + MockUserSession.set(); + WsTester.TestRequest request = tester.wsTester().newGetRequest(API_ENDPOINT, API_SEARCH_METHOD).setParam(SearchOptions.PARAM_FIELDS, "name,htmlDesc,mdDesc"); + WsTester.Result result = request.execute(); + + result.assertJson(getClass(), "search_2_rules_fields.json", false); + } + @Test public void search_debt_rules() throws Exception { insertDebtCharacteristics(session); diff --git a/server/sonar-server/src/test/resources/org/sonar/server/rule/ws/RulesWebServiceMediumTest/search_2_rules_fields.json b/server/sonar-server/src/test/resources/org/sonar/server/rule/ws/RulesWebServiceMediumTest/search_2_rules_fields.json new file mode 100644 index 00000000000..6be06553d52 --- /dev/null +++ b/server/sonar-server/src/test/resources/org/sonar/server/rule/ws/RulesWebServiceMediumTest/search_2_rules_fields.json @@ -0,0 +1,15 @@ +{ + "total": 2, "p": 1, "ps": 100, + "rules": [ + { + "key": "xoo:x2", + "name": "Rule x2", + "mdDesc": "A *Xoo* rule", + "htmlDesc": "A Xoo rule" + }, + { + "key": "xoo:x1", + "name": "Rule x1", + "htmlDesc": "Description x1", + } + ]} -- 2.39.5