public void Execute_DoesNotAddFundingsToEnrollment(bool enrollmentHasFundingsReference) { Enrollment enrollment; using (var context = new TestHedwigContextProvider().Context) { enrollment = EnrollmentHelper.CreateEnrollment(context); FundingHelper.CreateFunding(context, enrollment: enrollment); } if (!enrollmentHasFundingsReference) { enrollment.Fundings = null; } using (var context = new TestHedwigContextProvider().Context) { // Only attach found entity to avoid attaching the entire object graph // (which would find & attach the fundings navigation property) context.Attach(context.Find(enrollment.GetType(), enrollment.Id)); var _serviceProvider = new Mock <IServiceProvider>(); _serviceProvider.Setup(sp => sp.GetService(typeof(IEnumerable <IValidationRule <Funding> >))) .Returns(new List <IValidationRule <Funding> >()); var _validator = new NonBlockingValidator(_serviceProvider.Object); var _fundings = new FundingRepository(context); // when var rule = new FundingsAreValid(_validator, _fundings); rule.Execute(enrollment, new NonBlockingValidationContext()); // then Assert.Equal(enrollmentHasFundingsReference, enrollment.Fundings != null); } }
public void Execute_ReturnsError_IfFundingIsNotValid( bool fundingIsValid, bool doesError ) { // if var funding = new Funding(); var enrollment = new Enrollment { Id = 1, Fundings = new List <Funding> { funding } }; var fundingRule = new Mock <IValidationRule <Funding> >(); var fundingResult = fundingIsValid ? null : new ValidationError("message", field: "field"); fundingRule.Setup(cr => cr.Execute(funding, It.IsAny <NonBlockingValidationContext>())) .Returns(fundingResult); var _serviceProvider = new Mock <IServiceProvider>(); _serviceProvider.Setup(sp => sp.GetService(typeof(IEnumerable <IValidationRule <Funding> >))) .Returns(new List <IValidationRule <Funding> > { fundingRule.Object }); var _validator = new NonBlockingValidator(_serviceProvider.Object); var _fundings = new Mock <IFundingRepository>(); // when var rule = new FundingsAreValid(_validator, _fundings.Object); var result = rule.Execute(enrollment, new NonBlockingValidationContext()); // then Assert.Equal(doesError, result != null); }