public void UpdateEnrollment_RemovesFundings() { Enrollment enrollment; using (var context = new TestHedwigContextProvider().Context) { enrollment = EnrollmentHelper.CreateEnrollment(context); FundingHelper.CreateFunding(context, enrollment: enrollment); } Assert.NotEmpty(enrollment.Fundings); enrollment.Fundings = new List <Funding>(); var mapper = new MapperConfiguration(opts => { opts.AddProfile(new EnrollmentProfile()); opts.AddProfile(new FundingProfile()); opts.AddProfile(new ChildProfile()); opts.AddProfile(new FamilyProfile()); opts.AddProfile(new SiteProfile()); }).CreateMapper(); using (var context = new TestHedwigContextProvider().Context) { var enrollmentRepo = new EnrollmentRepository(context, mapper); var enrollmentDTO = mapper.Map <Enrollment, EnrollmentDTO>(enrollment); enrollmentRepo.UpdateEnrollment(enrollment, enrollmentDTO); context.SaveChanges(); } using (var context = new TestHedwigContextProvider().Context) { var enrollmentRepo = new EnrollmentRepository(context, mapper); var retrievedEnrollment = enrollmentRepo.GetEnrollmentById(enrollment.Id); Assert.Empty(retrievedEnrollment.Fundings); } }
public async Task GetEnrollmentsForSite_FiltersByDates( string entry, string exit, string from, string to, bool included ) { var mapper = new MapperConfiguration(opts => { opts.AddProfile(new EnrollmentProfile()); opts.AddProfile(new FundingProfile()); opts.AddProfile(new ChildProfile()); opts.AddProfile(new FamilyProfile()); opts.AddProfile(new SiteProfile()); }).CreateMapper(); using (var context = new TestHedwigContextProvider().Context) { // if enrollment exists with entry and exit var enrollment = EnrollmentHelper.CreateEnrollment(context, entry, exit); // when repo is queried with to and from var enrollmentRepo = new EnrollmentRepository(context, mapper); var result = await enrollmentRepo.GetEnrollmentsForSiteAsync( enrollment.SiteId, DateTime.Parse(from), DateTime.Parse(to) ); var resultIds = result.Select(e => e.Id); // then Assert.Equal(included, resultIds.Contains(enrollment.Id)); } }
public async Task OrganizationControllerOrganizationsGet_ReturnsCorrectResponseShape( string[] include, bool isInclude ) { User user; Organization organization; Site[] sites; using (var context = new TestHedwigContextProvider().Context) { organization = OrganizationHelper.CreateOrganization(context); var site1 = SiteHelper.CreateSite(context, organization: organization); var site2 = SiteHelper.CreateSite(context, organization: organization); sites = new Site[] { site1, site2 }; EnrollmentHelper.CreateEnrollment(context, site: site1); user = UserHelper.CreateUser(context); PermissionHelper.CreateSitePermission(context, user, site1); PermissionHelper.CreateSitePermission(context, user, site2); PermissionHelper.CreateOrganizationPermission(context, user, organization); } var client = _factory.CreateClient(); var request = HedwigAPIRequests.Organizations( user, organization, include ); var response = await client.SendAsync(request); response.EnsureSuccessStatusCode(); var responseString = await response.Content.ReadAsStringAsync(); var responseOrganization = JsonConvert.DeserializeObject <Organization>(responseString); Assert.NotNull(responseOrganization); Assert.Equal(organization.Id, responseOrganization.Id); Assert.Equal(organization.Name, responseOrganization.Name); Assert.Null(responseOrganization.Reports); if (isInclude) { Assert.NotEmpty(responseOrganization.Sites); Assert.All( responseOrganization.Sites, site => { Assert.NotNull(site.Name); Assert.Null(site.Organization); Assert.Null(site.Enrollments); } ); Assert.Null(responseOrganization.Reports); Assert.NotNull(responseOrganization.FundingSpaces); Assert.All( responseOrganization.FundingSpaces, fundingSpace => { Assert.NotNull(fundingSpace); Assert.Equal(fundingSpace.Time == FundingTime.Split, fundingSpace.TimeSplit != null); } ); } else { Assert.Null(responseOrganization.Sites); Assert.Null(responseOrganization.FundingSpaces); } }
public async Task ReportControllerOrganizationsReportGet_ReturnsCorrectResponseShape() { User user; Organization organization; Site[] sites; Report report; using (var context = new TestHedwigContextProvider().Context) { organization = OrganizationHelper.CreateOrganization(context); var site1 = SiteHelper.CreateSite(context, organization: organization); var site2 = SiteHelper.CreateSite(context, organization: organization); report = ReportHelper.CreateCdcReport(context, organization: organization); sites = new Site[] { site1, site2 }; EnrollmentHelper.CreateEnrollment(context, site: site1); user = UserHelper.CreateUser(context); PermissionHelper.CreateSitePermission(context, user, site1); PermissionHelper.CreateSitePermission(context, user, site2); PermissionHelper.CreateOrganizationPermission(context, user, organization); } var client = _factory.CreateClient(); var request = HedwigAPIRequests.OrganizationReport( user, organization, report ); var response = await client.SendAsync(request); response.EnsureSuccessStatusCode(); var responseString = await response.Content.ReadAsStringAsync(); var responseReport = JsonConvert.DeserializeObject <CdcReport>(responseString); Assert.NotNull(responseReport); Assert.Equal(report.Id, responseReport.Id); Assert.NotNull(responseReport.Organization); Assert.All( responseReport.Organization.Sites, site => { Assert.NotNull(site.Name); Assert.Null(site.Organization); Assert.Null(site.Enrollments); } ); Assert.NotNull(responseReport.Organization.FundingSpaces); Assert.All( responseReport.Organization.FundingSpaces, fundingSpace => { Assert.NotNull(fundingSpace); Assert.Equal(fundingSpace.Time == FundingTime.Split, fundingSpace.TimeSplit != null); } ); Assert.NotNull(responseReport.ReportingPeriod); Assert.NotNull(responseReport.Enrollments); Assert.All( responseReport.Enrollments, enrollment => { Assert.NotNull(enrollment.Child); Assert.Null(enrollment.Child.Family); Assert.Null(enrollment.Child.Enrollments); Assert.Null(enrollment.Child.Organization); Assert.Null(enrollment.Site); Assert.All( enrollment.Fundings, funding => { Assert.NotNull(funding.FundingSpace); Assert.Equal(funding.FundingSpace.Time == FundingTime.Split, funding.FundingSpace.TimeSplit != null); Assert.NotNull(funding.Source); Assert.NotNull(funding.FirstReportingPeriod); Assert.NotNull(funding.LastReportingPeriod); } ); Assert.Null(enrollment.PastEnrollments); } ); }
public async Task ReportControllerOrganizationsReportPut_IsSuccessfull_OrReturnsValidationError( int partTimeWeeksUsed, bool shouldSucceed ) { User user; Organization organization; FundingSpace fundingSpace; Site site; CdcReport report; using (var context = new TestHedwigContextProvider().Context) { organization = OrganizationHelper.CreateOrganization(context); var reportingPeriod = ReportingPeriodHelper.CreateReportingPeriod(context, period: "2010-01-01", periodStart: "2010-01-01", periodEnd: "2010-01-31"); fundingSpace = FundingSpaceHelper.CreateFundingSpace(context, organization.Id, time: FundingTime.Split); site = SiteHelper.CreateSite(context, organization: organization); report = ReportHelper.CreateCdcReport(context, organization: organization, reportingPeriod: reportingPeriod) as CdcReport; EnrollmentHelper.CreateEnrollment(context, site: site); user = UserHelper.CreateUser(context); PermissionHelper.CreateSitePermission(context, user, site); PermissionHelper.CreateOrganizationPermission(context, user, organization); } var timeSplitUtilization = new FundingTimeSplitUtilization { ReportId = report.Id, ReportingPeriodId = report.ReportingPeriodId, FundingSpaceId = fundingSpace.Id, PartTimeWeeksUsed = partTimeWeeksUsed, FullTimeWeeksUsed = 0, }; typeof(FundingTimeSplitUtilization).GetProperty(nameof(FundingTimeSplitUtilization.ReportingPeriod)).SetValue(timeSplitUtilization, report.ReportingPeriod); var reportForPut = new CdcReport { Id = report.Id, Accredited = report.Accredited, Comment = report.Comment, Enrollments = report.Enrollments, C4KRevenue = 0, FamilyFeesRevenue = 0, OrganizationId = report.OrganizationId, ReportingPeriodId = report.ReportingPeriodId, TimeSplitUtilizations = new List <FundingTimeSplitUtilization> { timeSplitUtilization }, }; typeof(Report).GetProperty(nameof(Report.ReportingPeriod)).SetValue(reportForPut, report.ReportingPeriod); var request = HedwigAPIRequests.OrganizationReportPut( user, organization, reportForPut ); var client = _factory.CreateClient(); var response = await client.SendAsync(request); if (shouldSucceed) { response.EnsureSuccessStatusCode(); } else { Assert.False(response.IsSuccessStatusCode); } }
public async Task EnrollmentControllerOrganizationSiteEnrollmentGet_ReturnsCorrectResponseShape() { Enrollment enrollment; User user; Organization organization; Site site; using (var context = new TestHedwigContextProvider().Context) { organization = OrganizationHelper.CreateOrganization(context); site = SiteHelper.CreateSite(context, organization: organization); enrollment = EnrollmentHelper.CreateEnrollment(context, site: site); user = UserHelper.CreateUser(context); PermissionHelper.CreateSitePermission(context, user, site); PermissionHelper.CreateOrganizationPermission(context, user, organization); } var client = _factory.CreateClient(); var request = HedwigAPIRequests.OrganizationSiteEnrollmentDetail( user, enrollment, organization, site ); var response = await client.SendAsync(request); response.EnsureSuccessStatusCode(); var responseString = await response.Content.ReadAsStringAsync(); var responseEnrollment = JsonConvert.DeserializeObject <Enrollment>(responseString); Assert.NotNull(responseEnrollment); Assert.Equal(enrollment.Id, responseEnrollment.Id); Assert.Equal(enrollment.ChildId, responseEnrollment.ChildId); Assert.NotNull(responseEnrollment.Child); Assert.Equal(enrollment.ChildId, responseEnrollment.Child.Id); Assert.Equal(enrollment.Child.FirstName, responseEnrollment.Child.FirstName); Assert.Equal(enrollment.Child.MiddleName, responseEnrollment.Child.MiddleName); Assert.Equal(enrollment.Child.LastName, responseEnrollment.Child.LastName); Assert.Empty(responseEnrollment.Child.Enrollments); Assert.Equal(enrollment.SiteId, responseEnrollment.SiteId); Assert.NotNull(responseEnrollment.Site); Assert.NotNull(responseEnrollment.Site.Name); Assert.Empty(responseEnrollment.Site.Enrollments); Assert.Equal(enrollment.AgeGroup, responseEnrollment.AgeGroup); Assert.Equal(enrollment.Entry, responseEnrollment.Entry); Assert.Equal(enrollment.Exit, responseEnrollment.Exit); Assert.Equal(enrollment.ExitReason, responseEnrollment.ExitReason); Assert.All( responseEnrollment.Fundings, funding => { Assert.NotNull(funding.FundingSpace); Assert.Equal(funding.FundingSpace.Time == FundingTime.Split, funding.FundingSpace.TimeSplit != null); Assert.NotNull(funding.Source); Assert.NotNull(funding.FirstReportingPeriod); Assert.NotNull(funding.LastReportingPeriod); } ); }