public void Get_HasUserOverrides_NoRulesMatchTheUserOverrides_UserOverridesAreIgnored()
        {
            var ruleDefns = new RuleDefinitionsBuilder()
                            .AddRule(ruleKey: "javascript:activeRule1", activeByDefault: true, eslintKey: "active1");

            var userSettings = new UserSettingsBuilder()
                               .Add("wrongLanguage:activeRule1", RuleLevel.Off) // Correct rule key but wrong repo -> ignored
                               .Add("javascript:unknownRule", RuleLevel.On);    // Right repo, but rule key doesn't match a defined rule -> ignored

            var testSubject = CreateTestSubject(ruleDefns, userSettings);

            var result = testSubject.Calculate().ToArray();

            result.Length.Should().Be(1);
            result[0].Key.Should().Be("active1");
        }
        public void Get_HasUserOverrides_IrregularRules_UserOverridesAreIgnored()
        {
            var ruleDefns = new RuleDefinitionsBuilder()
                            .AddRule(ruleKey: "javascript:hotspot1", activeByDefault: false, eslintKey: "hotspot1", ruleType: RuleType.SECURITY_HOTSPOT)
                            .AddRule(ruleKey: "javascript:S2260", activeByDefault: false, eslintKey: null);

            var userSettings = new UserSettingsBuilder()
                               .Add("javascript:hotspot1", RuleLevel.On)
                               .Add("javascript:S2260", RuleLevel.On);

            var testSubject = CreateTestSubject(ruleDefns, userSettings);

            var result = testSubject.Calculate().ToArray();

            result.Length.Should().Be(0);
        }
        public void Get_HasUserOverrides_OverridesDefaultActivationLevel(
            bool onByDefault, bool onInUserSettings)
        {
            // The value in the user settings should always override the default
            var expectedRuleCount = onInUserSettings ? 1 : 0;

            // Create definition and rule settings with a single rule
            var ruleDefns = new RuleDefinitionsBuilder()
                            .AddRule(ruleKey: "javascript:rule1", activeByDefault: onByDefault, eslintKey: "esKey");

            var userSettingsLevel = onInUserSettings ? RuleLevel.On : RuleLevel.Off;
            var userSettings      = new UserSettingsBuilder()
                                    .Add("javascript:rule1", userSettingsLevel);

            var testSubject = CreateTestSubject(ruleDefns, userSettings);

            var result = testSubject.Calculate().ToArray();

            result.Length.Should().Be(expectedRuleCount);
        }