diff options
author | Duarte Meneses <duarte.meneses@sonarsource.com> | 2015-07-29 11:14:18 +0200 |
---|---|---|
committer | Duarte Meneses <duarte.meneses@sonarsource.com> | 2015-07-29 11:26:22 +0200 |
commit | 23699dc534e3978abc10c643566715a345296b2c (patch) | |
tree | c8de7ea36dbae27f37df3eb7b081fc10a4369c9b /sonar-plugin-api/src/test | |
parent | 33851f1a19fcb539db658f22bd4015a01e6a9c9c (diff) | |
download | sonarqube-23699dc534e3978abc10c643566715a345296b2c.tar.gz sonarqube-23699dc534e3978abc10c643566715a345296b2c.zip |
Fix rules handling with duplicated internalKey
Diffstat (limited to 'sonar-plugin-api/src/test')
-rw-r--r-- | sonar-plugin-api/src/test/java/org/sonar/api/batch/rule/internal/DefaultRulesTest.java | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/sonar-plugin-api/src/test/java/org/sonar/api/batch/rule/internal/DefaultRulesTest.java b/sonar-plugin-api/src/test/java/org/sonar/api/batch/rule/internal/DefaultRulesTest.java new file mode 100644 index 00000000000..62c066463d3 --- /dev/null +++ b/sonar-plugin-api/src/test/java/org/sonar/api/batch/rule/internal/DefaultRulesTest.java @@ -0,0 +1,73 @@ +/* + * SonarQube, open source software quality management tool. + * Copyright (C) 2008-2014 SonarSource + * mailto:contact AT sonarsource DOT com + * + * SonarQube is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 3 of the License, or (at your option) any later version. + * + * SonarQube is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ +package org.sonar.api.batch.rule.internal; + +import org.sonar.api.rule.RuleKey; +import org.junit.Test; + +import java.util.LinkedList; +import java.util.List; + +import static org.assertj.core.api.Assertions.assertThat; + +public class DefaultRulesTest { + @Test + public void testRepeatedInternalKey() { + List<NewRule> newRules = new LinkedList<>(); + newRules.add(createRule("key1", "repo", "internal")); + newRules.add(createRule("key2", "repo", "internal")); + + DefaultRules rules = new DefaultRules(newRules); + assertThat(rules.findByInternalKey("repo", "internal")).hasSize(2); + assertThat(rules.find(RuleKey.of("repo", "key1"))).isNotNull(); + assertThat(rules.find(RuleKey.of("repo", "key2"))).isNotNull(); + assertThat(rules.findByRepository("repo")).hasSize(2); + } + + @Test + public void testNonExistingKey() { + List<NewRule> newRules = new LinkedList<>(); + newRules.add(createRule("key1", "repo", "internal")); + newRules.add(createRule("key2", "repo", "internal")); + + DefaultRules rules = new DefaultRules(newRules); + assertThat(rules.findByInternalKey("xx", "xx")).hasSize(0); + assertThat(rules.find(RuleKey.of("xxx", "xx"))).isNull(); + assertThat(rules.findByRepository("xxxx")).hasSize(0); + } + + @Test + public void testRepeatedRule() { + List<NewRule> newRules = new LinkedList<>(); + newRules.add(createRule("key", "repo", "internal")); + newRules.add(createRule("key", "repo", "internal")); + + DefaultRules rules = new DefaultRules(newRules); + assertThat(rules.find(RuleKey.of("repo", "key"))).isNotNull(); + } + + private NewRule createRule(String key, String repo, String internalKey) { + RuleKey ruleKey = RuleKey.of(repo, key); + NewRule newRule = new NewRule(ruleKey); + newRule.setInternalKey(internalKey); + + return newRule; + } +} |