public void PatientMustHaveAtLeastOneValidInsurancePolicy() { PatientValidator v = new PatientValidator(); // No policies { Patient p = getValidPatient_noPolicy(); // This requires a setter for InsurancePolicies, which is not what i want for any other purpose //var result = v.ShouldHaveValidationErrorFor(pat => pat.InsurancePolicies, p); // So we do this instead which will break at runtime if the name of the property changes var result = v.Validate(p); Assert.IsFalse(result.IsValid); Assert.IsTrue(result.Errors.Count == 1); Assert.IsTrue(result.Errors[0].PropertyName == "InsurancePolicies"); } // Has an invalid policy { Patient p = getValidPatient_noPolicy(); p.AddInsurancePolicy(InsurancePolicyUnitTests.getInvalidInsurancePolicy()); var result = v.Validate(p); Assert.IsFalse(result.IsValid); } // Has an invalid and valid policy { Patient p = getValidPatient_noPolicy(); p.AddInsurancePolicy(InsurancePolicyUnitTests.getInvalidInsurancePolicy()); p.AddInsurancePolicy(InsurancePolicyUnitTests.getValidInsurancePolicy()); var result = v.Validate(p); Assert.IsFalse(result.IsValid); } { // Has only valid policy Patient p = getValidPatient_noPolicy(); p.AddInsurancePolicy(InsurancePolicyUnitTests.getValidInsurancePolicy()); var result = v.Validate(p); Assert.IsTrue(result.IsValid); } }
internal static Patient getValidPatient() { return(getValidPatient_noPolicy().AddInsurancePolicy(InsurancePolicyUnitTests.getValidInsurancePolicy())); }