public void TestControlName()
        {
            string json = AssemblyResourceReader.ReadAsString("Test_Data.ValidateRule1.json");
            ValidateTruthCondition condition = JsonConvert.DeserializeObject<ValidateTruthCondition>(json);

            ControlList controlList = new ControlList();
            RepeaterControl repeater = new RepeaterControl
                                       { Id = 3, Name = "Repeater" };
            controlList.Add(repeater);
            repeater.Controls.Add(new TextControl { Id = 1, Name = "Field1", ParentId = 3 });
            repeater.Controls.Add(new TextControl { Id = 2, Name = "Field2", ParentId = 3 });

            ApplicationData appData = new ApplicationData();
            Dictionary<string, object>[] repeaterData = new Dictionary<string, object>[2];
            appData.Add("Repeater", repeaterData);
            repeaterData[0] = new Dictionary<string, object>
                              {
                                  { "Field1", "Is Valid" },
                                  { "Field2", "When Combined With This" }
                              };
            repeaterData[1] = new Dictionary<string, object>
                              {
                                  { "Field1", "Not Valid" },
                                  { "Field2", "When Combined With This" }
                              };

            TruthConditionEvaluatorFactory evaluatorFactory = new TruthConditionEvaluatorFactory();

            ITruthConditionValidator validator = new ITruthConditionValidator(condition, controlList, evaluatorFactory);
            ValidationResults results = validator.Validate(appData);
            Assert.AreEqual("Repeater[1].Field1", results.ToArray()[0].Key);
        }
        public void TestInitialize()
        {
            this.EvaluatorRegister = new TruthConditionEvaluatorFactory();

            this.ControlList = new ControlList();
            TextControl firstNameControl = new TextControl { Id = 101, Name = "First_name", Label = "First Name" };
            ControlList.Add(firstNameControl);

            TextControl ageControl = new TextControl { Id = 102, Name = "Age", Label = "Age" };
            ControlList.Add(ageControl);
        }
        public void TestEmptyRepeaterBusinessRule()
        {
            string json = AssemblyResourceReader.ReadAsString("Test_Data.ValidateRule1.json");
            ValidateTruthCondition condition = JsonConvert.DeserializeObject<ValidateTruthCondition>(json);

            ControlList controlList = new ControlList();
            RepeaterControl repeater = new RepeaterControl
                                       { Id = 3, Name = "Repeater" };
            controlList.Add(repeater);
            repeater.Controls.Add(new TextControl { Id = 1, Name = "Field1", ParentId = 3 });
            repeater.Controls.Add(new TextControl { Id = 2, Name = "Field2", ParentId = 3 });

            ApplicationData appData = new ApplicationData();

            TruthConditionEvaluatorFactory evaluatorFactory = new TruthConditionEvaluatorFactory();

            ITruthConditionValidator validator = new ITruthConditionValidator(condition, controlList, evaluatorFactory);
            ValidationResults results = validator.Validate(appData);
            Assert.AreEqual(true, results.IsValid);
        }
        public void TestFailBusinessRule()
        {
            string json = AssemblyResourceReader.ReadAsString("Test_Data.ValidateRule1.json");
            ValidateTruthCondition condition = JsonConvert.DeserializeObject<ValidateTruthCondition>(json);

            ControlList controlList = new ControlList
                                      {
                                          new TextControl
                                          {
                                              Id = 1,
                                              Name = "Field1"
                                          },
                                          new TextControl
                                          {
                                              Id = 2,
                                              Name = "Field2"
                                          }
                                      };

            ApplicationData appData = new ApplicationData
                                      {
                                          { "Field1", "Not Valid" },
                                          { "Field2", "When Combined With This" }
                                      };

            TruthConditionEvaluatorFactory evaluatorFactory = new TruthConditionEvaluatorFactory();

            ITruthConditionValidator validator = new ITruthConditionValidator(condition, controlList, evaluatorFactory);
            ValidationResults results = validator.Validate(appData);
            Assert.AreEqual(false, results.IsValid);
        }
        public void TestNestedRepeaterPassValueBusinessRule()
        {
            string json = AssemblyResourceReader.ReadAsString("Test_Data.ValidateRule1.json");
            ValidateTruthCondition condition = JsonConvert.DeserializeObject<ValidateTruthCondition>(json);

            ControlList controlList = new ControlList();
            RepeaterControl repeater = new RepeaterControl { Id = 3, Name = "Repeater" };
            controlList.Add(repeater);

            RepeaterControl nestedRepeater = new RepeaterControl { Id = 4, Name = "NestedRepeater", ParentId = 3 };
            repeater.Controls.Add(nestedRepeater);

            nestedRepeater.Controls.Add(new TextControl { Id = 1, Name = "Field1", ParentId = 4 });
            nestedRepeater.Controls.Add(new TextControl { Id = 2, Name = "Field2", ParentId = 4 });

            ApplicationData appData = new ApplicationData();

            var validExample = new Dictionary<string, object>
                              {
                                  { "Field1", "Is Valid" },
                                  { "Field2", "When Combined With This" }
                              };

            var anotherValidExample = new Dictionary<string, object>
                              {
                                  { "Field1", "And So Is This" },
                                  { "Field2", "When Combined With This" }
                              };

            Dictionary<string, object>[] repeaterData = new Dictionary<string, object>[2];
            appData.Add("Repeater", repeaterData);
            repeaterData[0] = new Dictionary<string, object>()
            {
                { "NestedRepeater", new[] { validExample, anotherValidExample } }
            };
            repeaterData[1] = new Dictionary<string, object>()
            {
                { "NestedRepeater", new[] { anotherValidExample, validExample } }
            };

            TruthConditionEvaluatorFactory evaluatorFactory = new TruthConditionEvaluatorFactory();

            ITruthConditionValidator validator = new ITruthConditionValidator(condition, controlList, evaluatorFactory);
            ValidationResults results = validator.Validate(appData);
            Assert.AreEqual(true, results.IsValid);
        }
        public void TestNestedRepeaterFailRootCompareBusinessRule()
        {
            string json = AssemblyResourceReader.ReadAsString("Test_Data.ValidateRule2.json");
            ValidateTruthCondition condition = JsonConvert.DeserializeObject<ValidateTruthCondition>(json);

            ControlList controlList = new ControlList();
            RepeaterControl repeater = new RepeaterControl { Id = 3, Name = "Repeater" };
            controlList.Add(repeater);

            RepeaterControl nestedRepeater = new RepeaterControl { Id = 4, Name = "NestedRepeater", ParentId = 3 };
            repeater.Controls.Add(nestedRepeater);

            RepeaterControl nestedNestedRepeater = new RepeaterControl { Id = 5, Name = "NestedNestedRepeater", ParentId = 4 };
            nestedRepeater.Controls.Add(nestedNestedRepeater);

            nestedNestedRepeater.Controls.Add(new TextControl { Id = 1, Name = "Field1", ParentId = 5 });

            // Compare to root level
            controlList.Add(new TextControl { Id = 2, Name = "Field2" });

            var validExample = new Dictionary<string, object>
                        {
                            { "Field1", "Is Valid" }
                        };

            var invalidExample = new Dictionary<string, object>
                        {
                            { "Field1", "Is Not Valid" }
                        };

            ApplicationData appData = new ApplicationData();
            Dictionary<string, object>[] repeaterData = new Dictionary<string, object>[2];
            appData.Add("Field2", "Is Not Valid");
            appData.Add("Repeater", repeaterData);
            repeaterData[0] = new Dictionary<string, object>()
            {
                {
                    "NestedRepeater", new[]
                    {
                        new Dictionary<string, object>()
                        {
                            { "NestedNestedRepeater", new[] { invalidExample, validExample } }
                        },
                        new Dictionary<string, object>()
                        {
                            { "NestedNestedRepeater", new[] { invalidExample, invalidExample } }
                        },
                    }
                }
            };
            repeaterData[1] = new Dictionary<string, object>()
            {
                {
                    "NestedRepeater", new[]
                    {
                        new Dictionary<string, object>()
                        {
                            { "NestedNestedRepeater", new[] { invalidExample } }
                        },
                        new Dictionary<string, object>()
                        {
                            { "NestedNestedRepeater", new[] { validExample } }
                        },
                    }
                }
            };

            TruthConditionEvaluatorFactory evaluatorFactory = new TruthConditionEvaluatorFactory();

            ITruthConditionValidator validator = new ITruthConditionValidator(condition, controlList, evaluatorFactory);
            ValidationResults results = validator.Validate(appData);
            Assert.AreEqual(false, results.IsValid);
            Assert.AreEqual(4, results.Count);
            Assert.AreEqual("Repeater[0].NestedRepeater[0].NestedNestedRepeater[0].Field1", results.ToArray()[0].Key);
            Assert.AreEqual("Repeater[0].NestedRepeater[1].NestedNestedRepeater[0].Field1", results.ToArray()[1].Key);
            Assert.AreEqual("Repeater[0].NestedRepeater[1].NestedNestedRepeater[1].Field1", results.ToArray()[2].Key);
            Assert.AreEqual("Repeater[1].NestedRepeater[0].NestedNestedRepeater[0].Field1", results.ToArray()[3].Key);
        }
Example #7
0
        /// <summary>
        /// Sets up the dependencies.
        /// </summary>
        private static void SetupDependencies()
        {
            IConfigurationSource config = ConfigurationSourceFactory.Create();
            Logger.SetLogWriter(new LogWriterFactory(config).Create());
            ExceptionPolicy.SetExceptionManager(new ExceptionPolicyFactory(config).CreateManager());

            JsonConvert.DefaultSettings = () => new JsonSerializerSettings
            {
                Formatting = Formatting.None,
                Converters = new JsonConverter[] { new JsonKnownTypeConverter() }
            };

            try
            {
                var container = new UnityContainer().LoadConfiguration();
                container.AddNewExtension<SecurityDependencyContainer>();
                container.AddNewExtension<WorflowDependencyContainer>();

                var configuration = container.Resolve<EventHandlerConfiguration>();
                dataAccess = container.Resolve<IDataAccess>();
                formServiceGateway = container.Resolve<IFormServiceGateway>();
                workbenchServiceGateway = container.Resolve<IWorkbenchServiceGateway>();
                var securityServiceGateway = container.Resolve<ISecurityService>();
                entitlementProvider = container.Resolve<IApplicationEntitlementProvider>();
                workflowService = container.Resolve<IWorkflowService>();
                evaluatorFactory = new TruthConditionEvaluatorFactory();

                session = securityServiceGateway.CreateSession(configuration.EventHandlerServiceUser, configuration.EventHandlerServicePassword);
                SystemSettings settings = workbenchServiceGateway.GetSystemSettings(session.Token);
                container.RegisterInstance(settings);
                events = dataAccess.GetNewEvents();
                container.RegisterInstance(workbenchServiceGateway.GetRoleList(session.Token));
                container.RegisterInstance<Func<UserSearchCriteria, UserList>>(usc => workbenchServiceGateway.GetUserList(session.Token, usc));
                container.RegisterInstance(workbenchServiceGateway.GetServiceEndpointList(session.Token, true));

                responseHandlers = container.ResolveAll<IEventActionResponseHandler>();
            }
            catch (Exception e)
            {
                bool rethrow = ExceptionPolicy.HandleException(e, "Default");
                if (rethrow)
                {
                    throw;
                }

                Console.WriteLine(ExceptionMessages.Generic);
                Environment.Exit(1);
            }
        }
 public void TestInitialize()
 {
     this.register = new TruthConditionEvaluatorFactory();
 }
 /// <summary>
 /// Creates a <see cref="Microsoft.Practices.EnterpriseLibrary.Validation.Validator"/> that will
 /// validate <paramref name="pageRules"/>.
 /// </summary>
 /// <param name="pageRules">The list of page rules to create a validator for.</param>
 /// <param name="evaluatorFactory">A <see cref="TruthConditionEvaluatorFactory "/>.</param>
 /// <returns>
 /// A <see cref="Microsoft.Practices.EnterpriseLibrary.Validation.Validator"/> that will
 /// validate <paramref name="pageRules"/>.
 /// </returns>
 public Validator CreatePageValidator(TruthConditionList pageRules, TruthConditionEvaluatorFactory evaluatorFactory)
 {
     List<Validator> validatorsList = pageRules.OfType<ValidateTruthCondition>().Select(validationRule => new ITruthConditionValidator(validationRule, this.allControls, evaluatorFactory)).Cast<Validator>().ToList();
     return new EntLib.AndCompositeValidator(validatorsList.ToArray());
 }