package com.pablissimo.sonar;
import static org.junit.Assert.*;
import java.util.Arrays;
import java.util.HashSet;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.sonar.api.profiles.RulesProfile;
import org.sonar.api.rules.ActiveRule;
import org.sonar.api.utils.ValidationMessages;
public class TypeScriptRuleProfileTest {
ValidationMessages validationMessages;
TypeScriptRuleProfile ruleProfile;
HashSet<String> expectedRuleNames;
@Before
public void setUp() throws Exception {
this.validationMessages = ValidationMessages.create();
this.ruleProfile = new TypeScriptRuleProfile();
this.expectedRuleNames = new HashSet<String>(Arrays.asList(
TsRulesDefinition.TSLINT_UNKNOWN_RULE.key,
"align",
"adjacent-overload-signatures",
"array-type",
"arrow-return-shorthand",
"arrow-parens",
"await-promise",
"ban",
"ban-types",
"callable-types",
"class-name",
"comment-format",
"completed-docs",
"curly",
"cyclomatic-complexity",
"eofline",
"file-header",
"forin",
"import-blacklist",
"import-spacing",
"indent",
"interface-name",
"interface-over-type-literal",
"jsdoc-format",
"label-position",
"label-undefined",
"linebreak-style",
"match-default-export-name",
"max-classes-per-file",
"max-file-line-count",
"max-line-length",
"member-access",
"member-ordering",
"newline-before-return",
"new-parens",
"no-angle-bracket-type-assertion",
"no-any",
"no-arg",
"no-bitwise",
"no-boolean-literal-compare",
"no-conditional-assignment",
"no-consecutive-blank-lines",
"no-console",
"no-construct",
"no-constructor-vars",
"no-debugger",
"no-default-export",
"no-duplicate-key",
"no-duplicate-super",
"no-duplicate-variable",
"no-empty",
"no-empty-interface",
"no-eval",
"no-for-in-array",
"no-floating-promises",
"no-import-side-effect",
"no-non-null-assertion",
"no-inferrable-types",
"no-inferred-empty-object-type",
"no-internal-module",
"no-invalid-this",
"no-magic-numbers",
"no-misused-new",
"no-mergeable-namespace",
"no-namespace",
"no-null-keyword",
"no-parameter-properties",
"no-reference",
"no-require-imports",
"no-shadowed-variable",
"no-string-literal",
"no-string-throw",
"no-switch-case-fall-through",
"no-trailing-whitespace",
"no-unnecessary-initializer",
"no-unnecessary-qualifier",
"no-unbound-method",
"no-unreachable",
"no-unsafe-any",
"no-unsafe-finally",
"no-unused-expression",
"no-unused-new",
"no-unused-variable",
"no-use-before-declare",
"no-var-keyword",
"no-var-requires",
"no-void-expression",
"object-literal-key-quotes",
"object-literal-shorthand",
"object-literal-sort-keys",
"one-line",
"one-variable-per-declaration",
"only-arrow-functions",
"ordered-imports",
"prefer-const",
"prefer-for-of",
"promise-function-async",
"prefer-function-over-method",
"prefer-method-signature",
"quotemark",
"radix",
"restrict-plus-operands",
"semicolon",
"space-before-function-paren",
"strict-boolean-expressions",
"strict-type-predicates",
"switch-default",
"trailing-comma",
"triple-equals",
"typedef",
"typedef-whitespace",
"typeof-compare",
"unified-signatures",
"use-strict",
"use-isnan",
"variable-name",
"whitespace"
));
}
@After
public void tearDown() throws Exception {
}
@Test
public void definesExpectedRules() {
RulesProfile profile = this.ruleProfile.createProfile(this.validationMessages);
for (String ruleName : this.expectedRuleNames) {
assertNotNull("Expected rule missing in plugin: " + ruleName, profile.getActiveRule(TsRulesDefinition.REPOSITORY_NAME, ruleName));
}
}
@Test
public void definesUnexpectedRules() {
RulesProfile profile = this.ruleProfile.createProfile(this.validationMessages);
for (ActiveRule rule : profile.getActiveRules()) {
assertTrue("Unexpected rule in plugin: " + rule.getRuleKey(), this.expectedRuleNames.contains(rule.getRuleKey()));
}
}
}