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(); }
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(); }
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(); }
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(); }
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(); }
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(); }
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(); }
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(); }