public void Execute_WithReportParentEntity_ReturnsError_IfEnrollmentFunded_AndDeterminationDateNotValid(
            bool enrollmentIsFunded,
            bool dateIsValid,
            bool doesError
            )
        {
            // if
            var enrollment = new Enrollment
            {
                Fundings = new List <Funding>()
            };

            if (enrollmentIsFunded)
            {
                enrollment.Fundings.Add(new Funding {
                    Source = FundingSource.CDC
                });
            }

            var periodEnd       = DateTime.Now.Date.AddDays(-10);
            var report          = new CdcReport();
            var reportingPeriod = new ReportingPeriod {
                PeriodEnd = periodEnd
            };

            report.GetType().GetProperty(nameof(report.ReportingPeriod)).SetValue(report, reportingPeriod, null);

            var determination = new FamilyDetermination
            {
                // a valid date is < 1 year older than report reporting period end
                DeterminationDate = dateIsValid ? periodEnd.AddMonths(-8) : periodEnd.AddMonths(-18)
            };

            // when
            var fundings         = new Mock <IFundingRepository>();
            var reportingPeriods = new Mock <IReportingPeriodRepository>();
            var rule             = new IfEnrollmentFunded_DeterminationDateValid(fundings.Object, reportingPeriods.Object);

            var context = new NonBlockingValidationContext();

            context.AddParentEntity(enrollment);
            context.AddParentEntity(report);
            var result = rule.Execute(determination, context);

            // then
            Assert.Equal(doesError, result != null);
        }
        public void Execute_ReturnsError_IfEnrollmentFunded_AndDeterminationDateNotValid(
            bool enrollmentIsFunded,
            bool dateIsValid,
            bool doesError
            )
        {
            // if
            var enrollment = new Enrollment
            {
                Fundings = new List <Funding>()
            };

            if (enrollmentIsFunded)
            {
                enrollment.Fundings.Add(new Funding {
                    Source = FundingSource.CDC
                });
            }

            var determination = new FamilyDetermination
            {
                // a valid date is < 1 year older than TODAY
                DeterminationDate = dateIsValid ? DateTime.Now.Date.AddMonths(-8) : DateTime.Now.Date.AddMonths(-18)
            };

            // when
            var fundings         = new Mock <IFundingRepository>();
            var reportingPeriods = new Mock <IReportingPeriodRepository>();
            var rule             = new IfEnrollmentFunded_DeterminationDateValid(fundings.Object, reportingPeriods.Object);

            var context = new NonBlockingValidationContext();

            context.AddParentEntity(enrollment);
            var result = rule.Execute(determination, context);

            // then
            Assert.Equal(doesError, result != null);
        }