public void TestActionWhenContextIsATableButHasBadRuleProcessesActions()
        {
            var action = new Mock <IAction>(MockBehavior.Strict);
            var items = new List <IValidationComparer> {
                new StartsWithComparer(), new EqualsComparer()
            }.AsReadOnly();

            var actionRepository = new Mock <IActionRepository>(MockBehavior.Strict);

            actionRepository.Setup(a => a.GetComparisonTypes()).Returns(items);

            var tokenManager = new Mock <ITokenManager>(MockBehavior.Strict);

            var preAction = new ValidationTablePreAction(actionRepository.Object, tokenManager.Object);

            var table = new ValidationTable();

            table.AddValidation("My Field", "bad rule", "foo");

            var context = new TableContext(table);

            try
            {
                preAction.PerformPreAction(action.Object, context);
            }
            catch (Exception e)
            {
                Assert.IsInstanceOfType(e, typeof(ElementExecuteException));
                Assert.AreEqual("Vaidation Rule could not be found for rule name: bad rule", e.Message);
            }

            action.VerifyAll();
            actionRepository.VerifyAll();
            tokenManager.VerifyAll();
        }
        public void TestActionWhenContextIsNotATableExits()
        {
            var action           = new Mock <IAction>(MockBehavior.Strict);
            var actionRepository = new Mock <IActionRepository>(MockBehavior.Strict);
            var tokenManager     = new Mock <ITokenManager>(MockBehavior.Strict);

            var preAction = new ValidationTablePreAction(actionRepository.Object, tokenManager.Object);

            var context = new ActionContext("myproperty");

            preAction.PerformPreAction(action.Object, context);

            action.VerifyAll();
            actionRepository.VerifyAll();
            tokenManager.VerifyAll();
        }
        public void TestActionWhenContextIsATableProcessesActions()
        {
            var action = new Mock <IAction>(MockBehavior.Strict);
            var items = new List <IValidationComparer> {
                new StartsWithComparer()
            }.AsReadOnly();

            var actionRepository = new Mock <IActionRepository>(MockBehavior.Strict);

            actionRepository.Setup(a => a.GetComparisonTypes()).Returns(items);

            var tokenManager = new Mock <ITokenManager>(MockBehavior.Strict);

            tokenManager.Setup(t => t.GetToken("foo")).Returns("foo");

            var preAction = new ValidationTablePreAction(actionRepository.Object, tokenManager.Object);

            var table = new ValidationTable();

            table.AddValidation("My Field", "starts with", "foo");

            var context = new TableContext(table);

            preAction.PerformPreAction(action.Object, context);

            var validation = table.Validations.First();

            Assert.AreEqual("myfield", validation.FieldName);
            Assert.AreEqual("foo", validation.ComparisonValue);
            Assert.IsNotNull(validation.Comparer);
            Assert.IsInstanceOfType(validation.Comparer, typeof(StartsWithComparer));

            action.VerifyAll();
            actionRepository.VerifyAll();
            tokenManager.VerifyAll();
        }