Example #1
0
        public void WhenApplyRulesIsInvoked_ThenApplyIsInvokedOnEachRuleForTheOrder()
        {
            _ruleEngine.ApplyRules(_inputRules, _validOrder);

            _mockRule1.Verify(m => m.Apply(_validOrder), Times.Once);
            _mockRule2.Verify(m => m.Apply(_validOrder), Times.Once);
        }
Example #2
0
        public void EventExploder(IEnumerable <Entity> messages)
        {
            // apply rules
            RuleEngine.ApplyRules(messages);

            // broadcast news or updates using Mediator EventExploder
            Mediator.GetInstance.Broadcast(Topic.FutureServiceDataReceived, messages);
        }
Example #3
0
        private static void ImportEmployees()
        {
            var employees = new List <Employee>
            {
                new Employee // Valid entry
                {
                    EmployeeNumber        = "1001",
                    Dob                   = DateTime.Today.AddYears(-35),
                    EmployeeRating        = "Meets Expectation",
                    Salary                = 150000,
                    NumYearsInCurrentRole = 2
                },
                new Employee
                {
                    Dob                   = DateTime.Today.AddYears(-40),
                    EmployeeRating        = "Outstanding",
                    Salary                = 150000,
                    NumYearsInCurrentRole = 2
                },
                new Employee
                {
                    EmployeeNumber        = "1003",
                    Dob                   = DateTime.Today.AddYears(-45),
                    EmployeeRating        = "Exceeds Expectation",
                    Salary                = 150000, // Expect this to be caught by range validator
                    NumYearsInCurrentRole = 3
                },
                new Employee
                {
                    EmployeeNumber        = "1004",
                    Dob                   = DateTime.Today.AddYears(-33),
                    EmployeeRating        = "Overachiever", // Expect this to be caught by custom validator
                    Salary                = 100000,
                    NumYearsInCurrentRole = 4
                }
            };

            foreach (var employee in employees)
            {
                var ruleEngine = new RuleEngine <Employee>(employee);
                var result     = ruleEngine
                                 .ApplyRules(new EmployeeNumberRequiredFieldRule(),
                                             new EmployeeSalaryRangeRule(),
                                             new EmployeeConsistentPerformerRule(),
                                             new EmployeeBonusEligibilityRule())
                                 .Execute();
                Console.WriteLine(JsonConvert.SerializeObject(result, Formatting.Indented));
                Console.WriteLine();
            }

            Console.ReadLine();
        }