public void ExecuteRules_FutureDate_HasRuleViolation()
        {
            var ruleEngine  = new RuleEngine <SelfPayment>(new SelfPaymentRuleCollection());
            var selfPayment = new SelfPayment(
                new Mock <Patient>().Object,
                new Mock <Staff>().Object,
                new Money(new Currency("en-US"), 10),
                new PaymentMethod(),
                DateTime.Today.AddDays(1));
            var results = ruleEngine.ExecuteAllRules(selfPayment);

            Assert.IsTrue(results.HasRuleViolation);
        }
        public void ExecuteRules_ZeroAmount_HasRuleViolation()
        {
            var ruleEngine = new RuleEngine<SelfPayment>(new SelfPaymentRuleCollection());
            var selfPayment = new SelfPayment(
                new Mock<Patient>().Object,
                new Mock<Staff>().Object,
                new Money(new Currency("en-US"), 0),
                new PaymentMethod(),
                DateTime.Now);
            var results = ruleEngine.ExecuteAllRules(selfPayment);

            Assert.IsTrue(results.HasRuleViolation);
        }
        public void ExecuteRules_ValidSelfPayment_NoRuleViolations()
        {
            var ruleEngine  = new RuleEngine <SelfPayment> (new SelfPaymentRuleCollection());
            var selfPayment = new SelfPayment(
                new Mock <Patient> ().Object,
                new Mock <Staff> ().Object,
                new Money(new Currency("en-US"), 20),
                new PaymentMethod(),
                DateTime.Now);
            var results = ruleEngine.ExecuteAllRules(selfPayment);

            Assert.IsFalse(results.HasRuleViolation);
        }