Exemple #1
0
        public void RunRuleByID_ReturnsExpectedEvaluationCodeWhenSuccessful()
        {
            var e = new MockA11yElement();

            var conditionMock = new Mock <Condition>(MockBehavior.Strict);

            conditionMock.Setup(m => m.Matches(e)).Returns(true).Verifiable();

            var ruleMock = CreateRuleMock(conditionMock.Object, EvaluationCode.NeedsReview, e);

            var providerMock = new Mock <IRuleProvider>(MockBehavior.Strict);

            providerMock.Setup(m => m.GetRule(It.IsAny <RuleId>())).Returns(() => ruleMock.Object).Verifiable();

            var runner = new RuleRunner(providerMock.Object);
            var result = runner.RunRuleByID(default(RuleId), e);

            Assert.AreEqual(EvaluationCode.NeedsReview, result.EvaluationCode);
            Assert.AreEqual(e, result.element);
            Assert.AreEqual(ruleMock.Object.Info, result.RuleInfo);

            conditionMock.VerifyAll();
            ruleMock.VerifyAll();
            providerMock.VerifyAll();
        }
Exemple #2
0
        public void RunRuleByID_ReturnsExecutionErrorWhenConditionMatchesThrowsException()
        {
            var e = new MockA11yElement();

            var conditionMock = new Mock <Condition>(MockBehavior.Strict);

            conditionMock.Setup(m => m.Matches(e)).Throws <Exception>().Verifiable();

            var infoStub = new RuleInfo();

            var ruleMock = new Mock <IRule>(MockBehavior.Strict);

            ruleMock.Setup(m => m.Condition).Returns(conditionMock.Object).Verifiable();
            ruleMock.Setup(m => m.Info).Returns(() => infoStub).Verifiable();

            var providerMock = new Mock <IRuleProvider>(MockBehavior.Strict);

            providerMock.Setup(m => m.GetRule(It.IsAny <RuleId>())).Returns(() => ruleMock.Object).Verifiable();

            var runner = new RuleRunner(providerMock.Object);
            var result = runner.RunRuleByID(default(RuleId), e);

            Assert.AreEqual(EvaluationCode.RuleExecutionError, result.EvaluationCode);
            Assert.AreEqual(e, result.element);
            Assert.AreEqual(infoStub, result.RuleInfo);

            conditionMock.VerifyAll();
            ruleMock.VerifyAll();
            providerMock.VerifyAll();
        }
Exemple #3
0
        public void RunRuleByID_RuleNotApplicableForNonMatchingCondition()
        {
            // This test has the side effect of ensuring IRule.Evaluate is not called
            // when the condition is not matched.

            var e = new MockA11yElement();

            var conditionMock = new Mock <Condition>(MockBehavior.Strict);

            conditionMock.Setup(m => m.Matches(e)).Returns(false).Verifiable();

            var infoStub = new RuleInfo();

            var ruleMock = new Mock <IRule>(MockBehavior.Strict);

            ruleMock.Setup(m => m.Condition).Returns(conditionMock.Object).Verifiable();
            ruleMock.Setup(m => m.Info).Returns(() => infoStub).Verifiable();

            var providerMock = new Mock <IRuleProvider>(MockBehavior.Strict);

            providerMock.Setup(m => m.GetRule(It.IsAny <RuleId>())).Returns(() => ruleMock.Object).Verifiable();

            var runner = new RuleRunner(providerMock.Object);
            var result = runner.RunRuleByID(default(RuleId), e);

            Assert.AreEqual(EvaluationCode.NotApplicable, result.EvaluationCode);
            Assert.AreEqual(e, result.element);
            Assert.AreEqual(infoStub, result.RuleInfo);

            conditionMock.VerifyAll();
            ruleMock.VerifyAll();
            providerMock.VerifyAll();
        }
Exemple #4
0
        public void RunRuleByID_FrameworkIssueLinkIsNotNull_PropagatesToResult()
        {
            const string frameworkIssueLink = "https://docs.microsoft.com/known-framework-link";
            var          e = new MockA11yElement();

            var conditionMock = new Mock <Condition>(MockBehavior.Strict);

            conditionMock.Setup(m => m.Matches(e)).Returns(true).Verifiable();

            var infoStub = new RuleInfo
            {
                ErrorCode          = EvaluationCode.NeedsReview,
                FrameworkIssueLink = frameworkIssueLink,
            };

            var ruleMock = new Mock <IRule>(MockBehavior.Strict);

            ruleMock.Setup(m => m.Condition).Returns(conditionMock.Object).Verifiable();
            ruleMock.Setup(m => m.PassesTest(e)).Returns(true).Verifiable();
            ruleMock.Setup(m => m.Info).Returns(() => infoStub).Verifiable();

            var providerMock = new Mock <IRuleProvider>(MockBehavior.Strict);

            providerMock.Setup(m => m.GetRule(It.IsAny <RuleId>())).Returns(() => ruleMock.Object).Verifiable();

            var runner = new RuleRunner(providerMock.Object);
            var result = runner.RunRuleByID(default(RuleId), e);

            Assert.AreEqual(frameworkIssueLink, result.RuleInfo.FrameworkIssueLink);

            conditionMock.VerifyAll();
            ruleMock.VerifyAll();
            providerMock.VerifyAll();
        }
Exemple #5
0
        public void RunRuleByID_ReturnsExpectedEvaluationCodeWhenPassesTestFalse()
        {
            var e = new MockA11yElement();

            var conditionMock = new Mock <Condition>(MockBehavior.Strict);

            conditionMock.Setup(m => m.Matches(e)).Returns(true).Verifiable();

            var infoStub = new RuleInfo
            {
                ErrorCode = EvaluationCode.NeedsReview,
            };

            var ruleMock = new Mock <IRule>(MockBehavior.Strict);

            ruleMock.Setup(m => m.Condition).Returns(conditionMock.Object).Verifiable();
            ruleMock.Setup(m => m.PassesTest(e)).Returns(false).Verifiable();
            ruleMock.Setup(m => m.Info).Returns(() => infoStub).Verifiable();

            var providerMock = new Mock <IRuleProvider>(MockBehavior.Strict);

            providerMock.Setup(m => m.GetRule(It.IsAny <RuleId>())).Returns(() => ruleMock.Object).Verifiable();

            var runner = new RuleRunner(providerMock.Object);
            var result = runner.RunRuleByID(default(RuleId), e);

            Assert.AreEqual(EvaluationCode.NeedsReview, result.EvaluationCode);
            Assert.AreEqual(e, result.element);
            Assert.AreEqual(ruleMock.Object.Info, result.RuleInfo);

            conditionMock.VerifyAll();
            ruleMock.VerifyAll();
            providerMock.VerifyAll();
        }
Exemple #6
0
        public void RunRuleByID_ReturnsExecutionErrorForUnknownRuleID()
        {
            var providerMock = new Mock <IRuleProvider>(MockBehavior.Strict);

            providerMock.Setup(m => m.GetRule(It.IsAny <RuleId>())).Returns(() => null).Verifiable();

            var e = new MockA11yElement();

            var runner = new RuleRunner(providerMock.Object);
            var result = runner.RunRuleByID(default(RuleId), e);

            Assert.AreEqual(EvaluationCode.RuleExecutionError, result.EvaluationCode);
            Assert.AreEqual(e, result.element);
            Assert.IsNull(result.RuleInfo);

            providerMock.VerifyAll();
        }
Exemple #7
0
        public void RunRuleByID_ReturnsExecutionErrorWhenEvaluateNotImplemented()
        {
            var e = new MockA11yElement();

            var rule = new RuleWithEvaluateNotImplemented();

            var providerMock = new Mock <IRuleProvider>(MockBehavior.Strict);

            providerMock.Setup(m => m.GetRule(It.IsAny <RuleId>())).Returns(() => rule);

            var runner = new RuleRunner(providerMock.Object);
            var result = runner.RunRuleByID(default(RuleId), e);

            Assert.AreEqual(EvaluationCode.RuleExecutionError, result.EvaluationCode);
            Assert.AreEqual(rule.Info, result.RuleInfo);

            providerMock.VerifyAll();
        }
Exemple #8
0
        public void RunRuleByID_CallsPassesTestWhenConditionIsNull()
        {
            var e = new MockA11yElement();

            var ruleMock = CreateRuleMock(null, EvaluationCode.Pass, e);

            var providerMock = new Mock <IRuleProvider>(MockBehavior.Strict);

            providerMock.Setup(m => m.GetRule(It.IsAny <RuleId>())).Returns(() => ruleMock.Object).Verifiable();

            var runner = new RuleRunner(providerMock.Object);
            var result = runner.RunRuleByID(default(RuleId), e);

            Assert.AreEqual(EvaluationCode.Pass, result.EvaluationCode);
            Assert.AreEqual(e, result.element);
            Assert.AreEqual(ruleMock.Object.Info, result.RuleInfo);

            ruleMock.VerifyAll();
            providerMock.VerifyAll();
        }