public void CreateNewPlan_For_State_Unit_SavesMaterialDataCorrectly( bool thisPeriodSubmitted, bool lastPeriod1Submitted, bool lastPeriod2Submitted ) { DateTimeDbTestExtensions.SetUtcNowToRandomDate(); var reportingTerms = ReportingPeriod.GetReportingTerms(reportingFrequency); if (reportingTerms.All(o => o != reportingTerm)) { return; } var testParams = Endpoint.ArrangeOnSqlSession(AssemblySetupFixture.EndpointTestContainer, s => { var organizations = IntegrationTestOrganizationHelper.SetupOrzanizations( stateReportingFrequency: reportingFrequency, zoneReportingFrequency: ReportingFrequency.Monthly); var nswState = organizations.First(o => o.Key == IntegrationTestOrganizationHelper.NswState).Value; var laPerouse = new OrganizationBuilder() .SetDescription("La perouse") .SetOrganizationType(OrganizationType.Unit) .SetReportingFreQuency(ReportingFrequency.Monthly) .SetParent(nswState) .BuildAndPersist(s); var lalorPark = new OrganizationBuilder() .SetDescription("Lalor park") .SetOrganizationType(OrganizationType.Unit) .SetReportingFreQuency(ReportingFrequency.Monthly) .SetParent(nswState) .BuildAndPersist(s); var description = DataProvider.Get <string>(); var year = 2019; OrganizationReference organizationRef = nswState; var reportingPeriod = new ReportingPeriod(reportingFrequency, reportingTerm, year); var expected = new StateReportBuilder() .SetDescription(description) .SetOrganization(organizationRef) .SetReportingPeriod(new ReportingPeriod(reportingFrequency, reportingPeriod.ReportingTerm, reportingPeriod.Year)) .Build(); var lastPeriod1 = reportingPeriod.GetReportingPeriodOfPreviousTerm(); var lastPeriod2 = lastPeriod1.GetReportingPeriodOfPreviousTerm(); var laPerouseThisPeriodUnitReport = IntegrationTestStateReportHelper.BuildAndPersistUnitReport(thisPeriodSubmitted, laPerouse, reportingPeriod, s); var laPerouseLastPeriod1UnitReport = IntegrationTestStateReportHelper.BuildAndPersistUnitReport(lastPeriod1Submitted, laPerouse, lastPeriod1, s); var laPerouseLastPeriod2UnitReport = IntegrationTestStateReportHelper.BuildAndPersistUnitReport(lastPeriod2Submitted, laPerouse, lastPeriod2, s); var lalorParkThisPeriodUnitReport = IntegrationTestStateReportHelper.BuildAndPersistUnitReport(thisPeriodSubmitted, lalorPark, reportingPeriod, s); var lalorParkLastPeriod1UnitReport = IntegrationTestStateReportHelper.BuildAndPersistUnitReport(lastPeriod1Submitted, lalorPark, lastPeriod1, s); var lalorParkLastPeriod2UnitReport = IntegrationTestStateReportHelper.BuildAndPersistUnitReport(lastPeriod2Submitted, lalorPark, lastPeriod2, s); var allUnitReports = new[] { laPerouseThisPeriodUnitReport, laPerouseLastPeriod1UnitReport, laPerouseLastPeriod2UnitReport, lalorParkThisPeriodUnitReport, lalorParkLastPeriod1UnitReport, lalorParkLastPeriod2UnitReport, }; var submittedReports = IntegrationTestStateReportHelper.GetSubmittedReports(allUnitReports, reportingPeriod); var expectedBookSaleMaterialData = IntegrationTestStateReportHelper.GetExpectedMaterialData(submittedReports, nameof(StateReport.BookSaleMaterialData)); var expectedBookSaleMaterialGeneratedData = expectedBookSaleMaterialData; var expectedBookDistributionMaterialData = IntegrationTestStateReportHelper.GetExpectedMaterialData(submittedReports, nameof(StateReport.BookDistributionMaterialData)); var expectedBookDistributionMaterialGeneratedData = expectedBookDistributionMaterialData; var expectedVhsSaleMaterialData = IntegrationTestStateReportHelper.GetExpectedMaterialData(submittedReports, nameof(StateReport.VhsSaleMaterialData)); var expectedVhsSaleMaterialGeneratedData = expectedVhsSaleMaterialData; var expectedVhsDistributionMaterialData = IntegrationTestStateReportHelper.GetExpectedMaterialData(submittedReports, nameof(StateReport.VhsDistributionMaterialData)); var expectedVhsDistributionMaterialGeneratedData = expectedVhsDistributionMaterialData; var expectedEmailDistributionMaterialData = IntegrationTestStateReportHelper.GetExpectedMaterialData(submittedReports, nameof(StateReport.EmailDistributionMaterialData)); var expectedEmailDistributionMaterialGeneratedData = expectedEmailDistributionMaterialData; var expectedIpdcLeafletDistributionMaterialData = IntegrationTestStateReportHelper.GetExpectedMaterialData(submittedReports, nameof(StateReport.IpdcLeafletDistributionMaterialData)); var expectedIpdcLeafletDistributionMaterialGeneratedData = expectedIpdcLeafletDistributionMaterialData; return(new { description, reportingPeriod, organizationRef, expected, expectedBookSaleMaterialData, expectedBookSaleMaterialGeneratedData, expectedBookDistributionMaterialData, expectedBookDistributionMaterialGeneratedData, expectedVhsSaleMaterialData, expectedVhsSaleMaterialGeneratedData, expectedVhsDistributionMaterialData, expectedVhsDistributionMaterialGeneratedData, expectedEmailDistributionMaterialData, expectedEmailDistributionMaterialGeneratedData, expectedIpdcLeafletDistributionMaterialData, expectedIpdcLeafletDistributionMaterialGeneratedData }); }); var result = Endpoint.Act(AssemblySetupFixture.EndpointTestContainer, c => { var stateReport = c.GetInstance <IStateReportFactory>() .CreateNewStatePlan(testParams.description, testParams.organizationRef, testParams.reportingPeriod.ReportingTerm, testParams.reportingPeriod.Year, reportingFrequency); return(new { stateReport }); }); result.stateReport.Should().NotBeNull(); result.stateReport.BookSaleMaterialData.Should().BeEquivalentTo(testParams.expectedBookSaleMaterialData); result.stateReport.BookSaleMaterialGeneratedData.Should().BeEquivalentTo(testParams.expectedBookSaleMaterialGeneratedData); result.stateReport.BookDistributionMaterialData.Should().BeEquivalentTo(testParams.expectedBookDistributionMaterialData); result.stateReport.BookDistributionMaterialGeneratedData.Should().BeEquivalentTo(testParams.expectedBookDistributionMaterialGeneratedData); result.stateReport.VhsSaleMaterialData.Should().BeEquivalentTo(testParams.expectedVhsSaleMaterialData); result.stateReport.VhsSaleMaterialGeneratedData.Should().BeEquivalentTo(testParams.expectedVhsSaleMaterialGeneratedData); result.stateReport.VhsDistributionMaterialData.Should().BeEquivalentTo(testParams.expectedVhsDistributionMaterialData); result.stateReport.VhsDistributionMaterialGeneratedData.Should().BeEquivalentTo(testParams.expectedVhsDistributionMaterialGeneratedData); result.stateReport.EmailDistributionMaterialData.Should().BeEquivalentTo(testParams.expectedEmailDistributionMaterialData); result.stateReport.EmailDistributionMaterialGeneratedData.Should().BeEquivalentTo(testParams.expectedEmailDistributionMaterialGeneratedData); result.stateReport.IpdcLeafletDistributionMaterialData.Should().BeEquivalentTo(testParams.expectedIpdcLeafletDistributionMaterialData); result.stateReport.IpdcLeafletDistributionMaterialGeneratedData.Should().BeEquivalentTo(testParams.expectedIpdcLeafletDistributionMaterialGeneratedData); }
public async Task Handle_SavesReport(ReportingFrequency reportingFrequency) { DateTimeDbTestExtensions.SetUtcNowToRandomDate(); var testParams = Endpoint.ArrangeOnSqlSession(AssemblySetupFixture.EndpointTestContainer, s => { var username = DataProvider.Get <string>(); var year = 2019; var reportingTerm = ReportingTerm.One; var organization = new OrganizationBuilder() .SetOrganizationType(OrganizationType.Unit) .SetReportingFreQuency(reportingFrequency) .BuildAndPersist(s); var report = new UnitReportBuilder() .SetOrganization(organization) .SetReportingPeriod(new ReportingPeriod(reportingFrequency, reportingTerm, year)) .Build(); report.MarkStatusAsPlanPromoted(); s.Save(report); var associateMemberReportData = new TestObjectBuilder <MemberReportData>() .Build(); var preliminaryMemberReportData = new TestObjectBuilder <MemberReportData>() .Build(); var unitReportLastPeriodUpdateData = new ReportLastPeriodUpdateDataBuilder() .SetAssociateMemberReportData(associateMemberReportData) .SetPreliminaryMemberReportData(preliminaryMemberReportData) .Build(); EntityReference reportRef = report; var expectedEvt = Test.CreateInstance <IUnitReportUpdated>(e => { e.Organization = organization; e.Username = username; e.UnitReport = reportRef; }); return(new { Cmd = new UpdateUnitReportLastPeriodDataCommand(report.Id, unitReportLastPeriodUpdateData), Report = report, username, expectedEvt }); }); var context = await Endpoint.Act <UpdateUnitReportLastPeriodDataCommandHandler>(AssemblySetupFixture.EndpointTestContainer, (h, ctx) => { ctx.SetUsernameOnHeader(testParams.username); return(h.Handle(testParams.Cmd, ctx)); }); var evt = context.ExpectPublish <IUnitReportUpdated>(); Endpoint.AssertOnSqlSessionThat(AssemblySetupFixture.EndpointTestContainer, s => { var unitReport = s.Get <UnitReport>(testParams.Cmd.ReportId); unitReport.Should().NotBeNull(); unitReport.Should().BeEquivalentTo(testParams.Report, e => e.Excluding(p => p.AssociateMemberData) .Excluding(p => p.PreliminaryMemberData) .Excluding(p => p.SupporterMemberData) .Excluding(p => p.WorkerMeetingProgramData) .Excluding(p => p.DawahMeetingProgramData) .Excluding(p => p.StateLeaderMeetingProgramData) .Excluding(p => p.StateOutingMeetingProgramData) .Excluding(p => p.IftarMeetingProgramData) .Excluding(p => p.LearningMeetingProgramData) .Excluding(p => p.SocialDawahMeetingProgramData) .Excluding(p => p.DawahGroupMeetingProgramData) .Excluding(p => p.NextGMeetingProgramData) .Excluding(p => p.CmsMeetingProgramData) .Excluding(p => p.SmMeetingProgramData) .Excluding(p => p.MemberMeetingProgramData) .Excluding(p => p.TafsirMeetingProgramData) .Excluding(p => p.UnitMeetingProgramData) .Excluding(p => p.FamilyVisitMeetingProgramData) .Excluding(p => p.EidReunionMeetingProgramData) .Excluding(p => p.BbqMeetingProgramData) .Excluding(p => p.GatheringMeetingProgramData) .Excluding(p => p.OtherMeetingProgramData) .Excluding(p => p.MemberMemberData) .Excluding(p => p.BaitulMalFinanceData) .Excluding(p => p.ADayMasjidProjectFinanceData) .Excluding(p => p.MasjidTableBankFinanceData) .Excluding(p => p.QardeHasanaSocialWelfareData) .Excluding(p => p.PatientVisitSocialWelfareData) .Excluding(p => p.SocialVisitSocialWelfareData) .Excluding(p => p.TransportSocialWelfareData) .Excluding(p => p.ShiftingSocialWelfareData) .Excluding(p => p.ShoppingSocialWelfareData) .Excluding(p => p.FoodDistributionSocialWelfareData) .Excluding(p => p.CleanUpAustraliaSocialWelfareData) .Excluding(p => p.OtherSocialWelfareData) .Excluding(p => p.BookSaleMaterialData) .Excluding(p => p.BookDistributionMaterialData) .Excluding(p => p.BookLibraryStockData) .Excluding(p => p.OtherSaleMaterialData) .Excluding(p => p.OtherDistributionMaterialData) .Excluding(p => p.OtherLibraryStockData) .Excluding(p => p.VhsSaleMaterialData) .Excluding(p => p.VhsDistributionMaterialData) .Excluding(p => p.VhsLibraryStockData) .Excluding(p => p.EmailDistributionMaterialData) .Excluding(p => p.IpdcLeafletDistributionMaterialData) .Excluding(p => p.GroupStudyTeachingLearningProgramData) .Excluding(p => p.StudyCircleTeachingLearningProgramData) .Excluding(p => p.PracticeDarsTeachingLearningProgramData) .Excluding(p => p.StateLearningCampTeachingLearningProgramData) .Excluding(p => p.QuranStudyTeachingLearningProgramData) .Excluding(p => p.QuranClassTeachingLearningProgramData) .Excluding(p => p.MemorizingAyatTeachingLearningProgramData) .Excluding(p => p.StateLearningSessionTeachingLearningProgramData) .Excluding(p => p.StateQiyamulLailTeachingLearningProgramData) .Excluding(p => p.StudyCircleForAssociateMemberTeachingLearningProgramData) .Excluding(p => p.HadithTeachingLearningProgramData) .Excluding(p => p.WeekendIslamicSchoolTeachingLearningProgramData) .Excluding(p => p.MemorizingHadithTeachingLearningProgramData) .Excluding(p => p.MemorizingDoaTeachingLearningProgramData) .Excluding(p => p.OtherTeachingLearningProgramData) .Excluding(p => p.Comment) ); ReportLastPeriodUpdateData reportUpdateData = unitReport; reportUpdateData.Should().BeEquivalentTo(testParams.Cmd.LastPeriodUpdateData); evt.Should().BeEquivalentTo(testParams.expectedEvt, e => e.Excluding(p => p.SerializedData)); evt.SerializedData.Should().NotBe(null); }); }
public void BuilderAllExplicit() { const string searchterms = ""; const int from = 1; const int size = 25; const string sortby = "organization_name"; string[] state = { "ny" }; const string zip = ""; const int radius = 50; string[] msa = { "" }; string[] city = { "" }; string[] county = { "" }; string[] profilelevel = { "Platinum", "Bronze" }; string[] nteemajor = { "" }; string[] nteeminor = { "" }; string[] subsection = { "" }; string[] foundation = { "" }; const bool bmfstatus = true; const bool pub78verified = true; const int minemployees = 0; const int maxemployees = 1000000000; const int minrevenue = 0; const int maxrevenue = 1000000000; const int minexpenses = 0; const int maxexpesnes = 1000000000; const int minassets = 0; const int maxassets = 100000000; var payload = SearchPayloadBuilder.Create() //search terms is a string used as a keyword search .WithSearchTerms(searchterms) //from is an integer to specify which record to start at for pagination .From(from) //size is an integer to specify how many records to return .Size(size) .Sort(SortBuilder => { //sortby is a string to specify how to sort the records SortBuilder.SortBy(sortby); //sortbyascending is used to sort the records alphabectically. The sort is set to true when this is present in the form. SortBuilder.SortByAscending(); //sortbydescending is used to sort the records reverse alphabectically. The sort is set to true when this is present in the form. //SortBuilder.SortByDescending(); } ) .Filters(filterBuilder => { filterBuilder.Geography(geographyBuilder => { //state is a string array to filter on multiple states geographyBuilder.HavingState(state); //zip is a string to filter on 1 zip code //geographyBuilder.HavingZipCode(zip); //radius is an integer to include up to 50 miles from the zip geographyBuilder.WithinZipRadius(radius); //msa is an string array to filter on multiple msa codes geographyBuilder.HavingMSA(msa); //city is a string array to filter on multiple cities geographyBuilder.HavingCity(city); //county is a string array to filter on multiple counties geographyBuilder.HavingCounty(county); } ); filterBuilder.Organization(OrganizationBuilder => { //profilelevel is a string array to filter on the seal of transparencies OrganizationBuilder.HavingProfileLevel(profilelevel); //nteemajor is a string array to filter on major ntee codes OrganizationBuilder.HavingNTEEMajorCode(nteemajor); //nteeminor is a string array to filter on minor ntee codes OrganizationBuilder.HavingNTEEMinorCode(nteeminor); //subsection is a string array to filer on subsection codes OrganizationBuilder.HavingSubsectionCode(subsection); //foundation is a string array to filer on foundation codes OrganizationBuilder.HavingFoundationCode(foundation); //bmfstatus is a boolean to filter on bmf status OrganizationBuilder.IsOnBMF(bmfstatus); //pub78verified is a boolean to filter on verification on pub 78 OrganizationBuilder.IsPub78Verified(pub78verified); OrganizationBuilder.AffiliationType(AffiliationTypeBuilder => { //only parents is used to filter parent organizations. The search is set to true when this is present in the form. //AffiliationTypeBuilder.OnlyParents(); //only subordinate is used to filter subordinate organizations. The search is set to true when this is present in the form. //AffiliationTypeBuilder.OnlySubordinate(); //only independent is used to filter independent organizations. The search is set to true when this is present in the form. //AffiliationTypeBuilder.OnlyIndependent(); //only headquarters is used to filter headquarter organizations. The search is set to true when this is present in the form. //AffiliationTypeBuilder.OnlyHeadquarters(); } ); OrganizationBuilder.SpecificExclusions(SpecificExclusionBuilder => { //exclude revoked organizations is used to filter out any revoked organizations. The search is set to true when this is present in the form. SpecificExclusionBuilder.ExcludeRevokedOrganizations(); //exclude defunct or merged organizations is used to filter out any defunct or merged organizations. the search is set to true when this is present in the form. SpecificExclusionBuilder.ExcludeDefunctOrMergedOrganizations(); } ); OrganizationBuilder.NumberOfEmployees(MinMaxBuilder => { //maxemployees is an integer to include organizations with the number of employees less than the specified amount MinMaxBuilder.HavingMaximum(maxemployees); //minemployees is an integer to include organizations with the number of employees more than the specified amount MinMaxBuilder.HavingMinimum(minemployees); } ); OrganizationBuilder.FormTypes(FormTypeBuilder => { //only f990 is used to filter organizations who filed a form 990. The search is set to true when this is present in the form. FormTypeBuilder.OnlyF990(); //only f990pf is used to filter organizations who filed a form 990-pf. The search is set to true when this is present in the form. //FormTypeBuilder.OnlyF990PF(); //only f990t required is used to filter organizations who are required to filed a form 990-t. The search is set to true when this is present in the form. //FormTypeBuilder.Only990tRequired(); } ); OrganizationBuilder.Audits(AuditBuilder => { // having a133 audit is used to filter organizations who have completed an a133 audit. The search is set to true when this is present in the form. AuditBuilder.HavingA133Audit(); } ); } ); filterBuilder.Financials(finBuilder => { finBuilder.Form990Assets(assets => { //maxassets is an integer to include organizations with assets less than the specified amount assets.HavingMaximum(maxassets); //minassets is an integer to include organizations with assets more than the specified amount assets.HavingMinimum(minassets); } ); finBuilder.Form990Expenses(expenses => { //maxexpenses is an integer to include organizations with expenses less than the specified amount expenses.HavingMaximum(maxexpesnes); //minexpenses is an integer to include organizations with expenses more than the specified amount expenses.HavingMinimum(minexpenses); } ); finBuilder.Form990Revenue(revenue => { //maxrevenue is an integer to include organizations with revenue less than the specified amount revenue.HavingMaximum(maxrevenue); //minrevenue is an integer to include organizations with revenue more than the specified amount revenue.HavingMinimum(minrevenue); } ); } ); } ) .Build(); GuideStarClient.SubscriptionKeys.Add(Domain.EssentialsV2, ESSENTIALS_KEY); var essentials = EssentialsResource.GetOrganization(payload); }
public async Task Handle_SavesPlan(ReportingFrequency reportingFrequency) { DateTimeDbTestExtensions.SetUtcNowToRandomDate(); var testParams = Endpoint.ArrangeOnSqlSession(AssemblySetupFixture.EndpointTestContainer, s => { var username = DataProvider.Get <string>(); var year = 2019; var reportingTerm = ReportingTerm.One; var organization = new OrganizationBuilder() .SetOrganizationType(OrganizationType.State) .SetReportingFreQuency(reportingFrequency) .BuildAndPersist(s); var associateMemberData = new TestObjectBuilder <MemberData>() .Build(); var preliminaryMemberData = new TestObjectBuilder <MemberData>() .Build(); PlanData planData = new ReportDataBuilder() .SetAssociateMemberData(associateMemberData) .SetPreliminaryMemberData(preliminaryMemberData) .Build(); var report = new StateReportBuilder() .SetOrganization(organization) .SetReportingPeriod(new ReportingPeriod(reportingFrequency, reportingTerm, year)) .BuildAndPersist(s); report.UpdatePlan(planData); s.Save(report); EntityReference reportRef = report; var expectedEvt = Test.CreateInstance <IStatePlanPromoted>(e => { e.Organization = organization; e.Username = username; e.StateReport = reportRef; }); return(new { Cmd = new PromotePlanToStateReportCommand(report.Id), Report = report, username, expectedEvt }); }); var context = await Endpoint.Act <PromotePlanToStateReportCommandHandler>(AssemblySetupFixture.EndpointTestContainer, (h, ctx) => { ctx.SetUsernameOnHeader(testParams.username); return(h.Handle(testParams.Cmd, ctx)); }); var evt = context.ExpectPublish <IStatePlanPromoted>(); Endpoint.AssertOnSqlSessionThat(AssemblySetupFixture.EndpointTestContainer, s => { var stateReport = s.Get <StateReport>(testParams.Cmd.PlanId); stateReport.Should().NotBeNull(); stateReport.Should().BeEquivalentTo(testParams.Report, e => e.Excluding(p => p.ReportStatus)); stateReport.ReportStatus.Should().Be(ReportStatus.PlanPromoted); evt.Should().BeEquivalentTo(testParams.expectedEvt, e => e.Excluding(p => p.SerializedData)); evt.SerializedData.Should().NotBe(null); }); }
public async Task Handle_SavesReport(ReportingFrequency reportingFrequency) { DateTimeDbTestExtensions.SetUtcNowToRandomDate(); var testParams = Endpoint.ArrangeOnSqlSession(AssemblySetupFixture.EndpointTestContainer, s => { var username = DataProvider.Get <string>(); var year = 2019; var reportingTerm = ReportingTerm.One; var organization = new OrganizationBuilder() .SetOrganizationType(OrganizationType.Central) .SetReportingFreQuency(reportingFrequency) .BuildAndPersist(s); var report = new CentralReportBuilder() .SetOrganization(organization) .SetReportingPeriod(new ReportingPeriod(reportingFrequency, reportingTerm, year)) .Build(); report.MarkStatusAsPlanPromoted(); s.Save(report); var memberMemberData = new TestObjectBuilder <MemberData>() .Build(); var associateMemberData = new TestObjectBuilder <MemberData>() .Build(); var preliminaryMemberData = new TestObjectBuilder <MemberData>() .Build(); //Todo pass random data once supporterMember is added to the CentralReport var supporterMemberData = new TestObjectBuilder <MemberData>() .Build(); var workerMeetingProgramData = new TestObjectBuilder <MeetingProgramData>().Build(); var dawahMeetingProgramData = new TestObjectBuilder <MeetingProgramData>().Build(); var stateLeaderMeetingProgramData = new TestObjectBuilder <MeetingProgramData>().Build(); var stateOutingMeetingProgramData = new TestObjectBuilder <MeetingProgramData>().Build(); var iftarMeetingProgramData = new TestObjectBuilder <MeetingProgramData>().Build(); var learningMeetingProgramData = new TestObjectBuilder <MeetingProgramData>().Build(); var socialDawahMeetingProgramData = new TestObjectBuilder <MeetingProgramData>().Build(); var dawahGroupMeetingProgramData = new TestObjectBuilder <MeetingProgramData>().Build(); var nextGMeetingProgramData = new TestObjectBuilder <MeetingProgramData>().Build(); var cmsMeetingProgramData = new TestObjectBuilder <MeetingProgramData>().Build(); var smMeetingProgramData = new TestObjectBuilder <MeetingProgramData>().Build(); var memberMeetingProgramData = new TestObjectBuilder <MeetingProgramData>().Build(); var tafsirMeetingProgramData = new TestObjectBuilder <MeetingProgramData>().Build(); var unitMeetingProgramData = new TestObjectBuilder <MeetingProgramData>().Build(); var familyVisitMeetingProgramData = new TestObjectBuilder <MeetingProgramData>().Build(); var eidReunionMeetingProgramData = new TestObjectBuilder <MeetingProgramData>().Build(); var bbqMeetingProgramData = new TestObjectBuilder <MeetingProgramData>().Build(); var gatheringMeetingProgramData = new TestObjectBuilder <MeetingProgramData>().Build(); var otherMeetingProgramData = new TestObjectBuilder <MeetingProgramData>().Build(); var groupStudyTeachingLearningProgramData = new TestObjectBuilder <TeachingLearningProgramData>().Build(); var studyCircleTeachingLearningProgramData = new TestObjectBuilder <TeachingLearningProgramData>().Build(); var practiceDarsTeachingLearningProgramData = new TestObjectBuilder <TeachingLearningProgramData>().Build(); var stateLearningCampTeachingLearningProgramData = new TestObjectBuilder <TeachingLearningProgramData>().Build(); var quranStudyTeachingLearningProgramData = new TestObjectBuilder <TeachingLearningProgramData>().Build(); var quranClassTeachingLearningProgramData = new TestObjectBuilder <TeachingLearningProgramData>().Build(); var memorizingAyatTeachingLearningProgramData = new TestObjectBuilder <TeachingLearningProgramData>().Build(); var stateLearningSessionTeachingLearningProgramData = new TestObjectBuilder <TeachingLearningProgramData>().Build(); var stateQiyamulLailTeachingLearningProgramData = new TestObjectBuilder <TeachingLearningProgramData>().Build(); var studyCircleForAssociateMemberTeachingLearningProgramData = new TestObjectBuilder <TeachingLearningProgramData>().Build(); var hadithTeachingLearningProgramData = new TestObjectBuilder <TeachingLearningProgramData>().Build(); var weekendIslamicSchoolTeachingLearningProgramData = new TestObjectBuilder <TeachingLearningProgramData>().Build(); var memorizingHadithTeachingLearningProgramData = new TestObjectBuilder <TeachingLearningProgramData>().Build(); var memorizingDoaTeachingLearningProgramData = new TestObjectBuilder <TeachingLearningProgramData>().Build(); var otherTeachingLearningProgramData = new TestObjectBuilder <TeachingLearningProgramData>().Build(); var baitulMalFinanceData = FinanceData.Default(); var aDayMasjidProjectFinanceData = FinanceData.Default(); var masjidTableBankFinanceData = FinanceData.Default(); var qardeHasanaSocialWelfareData = SocialWelfareData.Default(); var patientVisitSocialWelfareData = SocialWelfareData.Default(); var socialVisitSocialWelfareData = SocialWelfareData.Default(); var transportSocialWelfareData = SocialWelfareData.Default(); var shiftingSocialWelfareData = SocialWelfareData.Default(); var shoppingSocialWelfareData = SocialWelfareData.Default(); var foodDistributionSocialWelfareData = SocialWelfareData.Default(); var cleanUpAustraliaSocialWelfareData = SocialWelfareData.Default(); var otherSocialWelfareData = SocialWelfareData.Default(); var bookSaleMaterialData = MaterialData.Default(); var bookDistributionMaterialData = MaterialData.Default(); var bookLibraryStockData = LibraryStockData.Default(); var otherSaleMaterialData = MaterialData.Default(); var otherDistributionMaterialData = MaterialData.Default(); var otherLibraryStockData = LibraryStockData.Default(); var vhsSaleMaterialData = MaterialData.Default(); var vhsDistributionMaterialData = MaterialData.Default(); var vhsLibraryStockData = LibraryStockData.Default(); var emailDistributionMaterialData = MaterialData.Default(); var ipdcLeafletDistributionMaterialData = MaterialData.Default(); //var bookLibraryStockData = LibraryStockData.Default(); //var vhsLibraryStockData = LibraryStockData.Default(); var comment = DataProvider.Get <string>(); ReportUpdateData centralReportUpdateData = new ReportDataBuilder() .SetMemberMemberData(memberMemberData) .SetAssociateMemberData(associateMemberData) .SetPreliminaryMemberData(preliminaryMemberData) .SetSupporterMemberData(supporterMemberData) .SetWorkerMeetingProgramData(workerMeetingProgramData) .SetDawahMeetingProgramData(dawahMeetingProgramData) .SetStateLeaderMeetingProgramData(stateLeaderMeetingProgramData) .SetStateOutingMeetingProgramData(stateOutingMeetingProgramData) .SetIftarMeetingProgramData(iftarMeetingProgramData) .SetLearningMeetingProgramData(learningMeetingProgramData) .SetSocialDawahMeetingProgramData(socialDawahMeetingProgramData) .SetDawahGroupMeetingProgramData(dawahGroupMeetingProgramData) .SetNextGMeetingProgramData(nextGMeetingProgramData) .SetCmsMeetingProgramData(cmsMeetingProgramData) .SetSmMeetingProgramData(smMeetingProgramData) .SetMemberMeetingProgramData(memberMeetingProgramData) .SetTafsirMeetingProgramData(tafsirMeetingProgramData) .SetUnitMeetingProgramData(unitMeetingProgramData) .SetFamilyVisitMeetingProgramData(familyVisitMeetingProgramData) .SetEidReunionMeetingProgramData(eidReunionMeetingProgramData) .SetBbqMeetingProgramData(bbqMeetingProgramData) .SetGatheringMeetingProgramData(gatheringMeetingProgramData) .SetOtherMeetingProgramData(otherMeetingProgramData) .SetGroupStudyTeachingLearningProgramData(groupStudyTeachingLearningProgramData) .SetStudyCircleTeachingLearningProgramData(studyCircleTeachingLearningProgramData) .SetPracticeDarsTeachingLearningProgramData(practiceDarsTeachingLearningProgramData) .SetStateLearningCampTeachingLearningProgramData(stateLearningCampTeachingLearningProgramData) .SetQuranStudyTeachingLearningProgramData(quranStudyTeachingLearningProgramData) .SetQuranClassTeachingLearningProgramData(quranClassTeachingLearningProgramData) .SetMemorizingAyatTeachingLearningProgramData(memorizingAyatTeachingLearningProgramData) .SetStateLearningSessionTeachingLearningProgramData(stateLearningSessionTeachingLearningProgramData) .SetStateQiyamulLailTeachingLearningProgramData(stateQiyamulLailTeachingLearningProgramData) .SetBaitulMalFinanceData(baitulMalFinanceData) .SetADayMasjidProjectFinanceData(aDayMasjidProjectFinanceData) .SetMasjidTableBankFinanceData(masjidTableBankFinanceData) .SetQardeHasanaSocialWelfareData(qardeHasanaSocialWelfareData) .SetPatientVisitSocialWelfareData(patientVisitSocialWelfareData) .SetSocialVisitSocialWelfareData(socialVisitSocialWelfareData) .SetTransportSocialWelfareData(transportSocialWelfareData) .SetShiftingSocialWelfareData(shiftingSocialWelfareData) .SetShoppingSocialWelfareData(shoppingSocialWelfareData) .SetFoodDistributionSocialWelfareData(foodDistributionSocialWelfareData) .SetCleanUpAustraliaSocialWelfareData(cleanUpAustraliaSocialWelfareData) .SetOtherSocialWelfareData(otherSocialWelfareData) .SetBookSaleMaterialData(bookSaleMaterialData) .SetBookDistributionMaterialData(bookDistributionMaterialData) .SetBookLibraryStockData(bookLibraryStockData) .SetOtherSaleMaterialData(otherSaleMaterialData) .SetOtherDistributionMaterialData(otherDistributionMaterialData) .SetOtherLibraryStockData(otherLibraryStockData) .SetVhsSaleMaterialData(vhsSaleMaterialData) .SetVhsDistributionMaterialData(vhsDistributionMaterialData) .SetVhsLibraryStockData(vhsLibraryStockData) .SetEmailDistributionMaterialData(emailDistributionMaterialData) .SetIpdcLeafletDistributionMaterialData(ipdcLeafletDistributionMaterialData) .SetGroupStudyTeachingLearningProgramData(groupStudyTeachingLearningProgramData) .SetStudyCircleTeachingLearningProgramData(studyCircleTeachingLearningProgramData) .SetPracticeDarsTeachingLearningProgramData(practiceDarsTeachingLearningProgramData) .SetStateLearningCampTeachingLearningProgramData(stateLearningCampTeachingLearningProgramData) .SetQuranStudyTeachingLearningProgramData(quranStudyTeachingLearningProgramData) .SetQuranClassTeachingLearningProgramData(quranClassTeachingLearningProgramData) .SetMemorizingAyatTeachingLearningProgramData(memorizingAyatTeachingLearningProgramData) .SetStateLearningSessionTeachingLearningProgramData(stateLearningSessionTeachingLearningProgramData) .SetStateQiyamulLailTeachingLearningProgramData(stateQiyamulLailTeachingLearningProgramData) .SetStudyCircleForAssociateMemberTeachingLearningProgramData(studyCircleForAssociateMemberTeachingLearningProgramData) .SetHadithTeachingLearningProgramData(hadithTeachingLearningProgramData) .SetWeekendIslamicSchoolTeachingLearningProgramData(weekendIslamicSchoolTeachingLearningProgramData) .SetMemorizingHadithTeachingLearningProgramData(memorizingHadithTeachingLearningProgramData) .SetMemorizingDoaTeachingLearningProgramData(memorizingDoaTeachingLearningProgramData) .SetOtherTeachingLearningProgramData(otherTeachingLearningProgramData) .SetComment(comment) .Build(); EntityReference reportRef = report; var expectedEvt = Test.CreateInstance <ICentralReportUpdated>(e => { e.Organization = organization; e.Username = username; e.CentralReport = reportRef; }); return(new { Cmd = new UpdateCentralReportCommand(report.Id, centralReportUpdateData), Report = report, username, expectedEvt }); }); var context = await Endpoint.Act <UpdateCentralReportCommandHandler>(AssemblySetupFixture.EndpointTestContainer, (h, ctx) => { ctx.SetUsernameOnHeader(testParams.username); return(h.Handle(testParams.Cmd, ctx)); }); var evt = context.ExpectPublish <ICentralReportUpdated>(); Endpoint.AssertOnSqlSessionThat(AssemblySetupFixture.EndpointTestContainer, s => { var centralReport = s.Get <CentralReport>(testParams.Cmd.ReportId); centralReport.Should().NotBeNull(); centralReport.Should().BeEquivalentTo(testParams.Report, e => e.Excluding(p => p.MemberMemberData) .Excluding(p => p.AssociateMemberData) .Excluding(p => p.PreliminaryMemberData) .Excluding(p => p.SupporterMemberData) .Excluding(p => p.WorkerMeetingProgramData) .Excluding(p => p.DawahMeetingProgramData) .Excluding(p => p.StateLeaderMeetingProgramData) .Excluding(p => p.StateOutingMeetingProgramData) .Excluding(p => p.IftarMeetingProgramData) .Excluding(p => p.LearningMeetingProgramData) .Excluding(p => p.SocialDawahMeetingProgramData) .Excluding(p => p.DawahGroupMeetingProgramData) .Excluding(p => p.NextGMeetingProgramData) .Excluding(p => p.CmsMeetingProgramData) .Excluding(p => p.SmMeetingProgramData) .Excluding(p => p.MemberMeetingProgramData) .Excluding(p => p.TafsirMeetingProgramData) .Excluding(p => p.UnitMeetingProgramData) .Excluding(p => p.FamilyVisitMeetingProgramData) .Excluding(p => p.EidReunionMeetingProgramData) .Excluding(p => p.BbqMeetingProgramData) .Excluding(p => p.GatheringMeetingProgramData) .Excluding(p => p.OtherMeetingProgramData) .Excluding(p => p.GroupStudyTeachingLearningProgramData) .Excluding(p => p.StudyCircleTeachingLearningProgramData) .Excluding(p => p.PracticeDarsTeachingLearningProgramData) .Excluding(p => p.StateLearningCampTeachingLearningProgramData) .Excluding(p => p.QuranStudyTeachingLearningProgramData) .Excluding(p => p.QuranClassTeachingLearningProgramData) .Excluding(p => p.MemorizingAyatTeachingLearningProgramData) .Excluding(p => p.StateLearningSessionTeachingLearningProgramData) .Excluding(p => p.StateQiyamulLailTeachingLearningProgramData) .Excluding(p => p.StudyCircleForAssociateMemberTeachingLearningProgramData) .Excluding(p => p.HadithTeachingLearningProgramData) .Excluding(p => p.WeekendIslamicSchoolTeachingLearningProgramData) .Excluding(p => p.MemorizingHadithTeachingLearningProgramData) .Excluding(p => p.MemorizingDoaTeachingLearningProgramData) .Excluding(p => p.OtherTeachingLearningProgramData) .Excluding(p => p.BookSaleMaterialData) .Excluding(p => p.BookDistributionMaterialData) .Excluding(p => p.BookLibraryStockData) .Excluding(p => p.OtherSaleMaterialData) .Excluding(p => p.OtherDistributionMaterialData) .Excluding(p => p.OtherLibraryStockData) .Excluding(p => p.VhsSaleMaterialData) .Excluding(p => p.VhsDistributionMaterialData) .Excluding(p => p.VhsLibraryStockData) .Excluding(p => p.EmailDistributionMaterialData) .Excluding(p => p.IpdcLeafletDistributionMaterialData) .Excluding(p => p.BaitulMalFinanceData) .Excluding(p => p.ADayMasjidProjectFinanceData) .Excluding(p => p.MasjidTableBankFinanceData) .Excluding(p => p.QardeHasanaSocialWelfareData) .Excluding(p => p.PatientVisitSocialWelfareData) .Excluding(p => p.SocialVisitSocialWelfareData) .Excluding(p => p.TransportSocialWelfareData) .Excluding(p => p.ShiftingSocialWelfareData) .Excluding(p => p.ShoppingSocialWelfareData) .Excluding(p => p.FoodDistributionSocialWelfareData) .Excluding(p => p.CleanUpAustraliaSocialWelfareData) .Excluding(p => p.OtherSocialWelfareData) .Excluding(p => p.Comment) ); ReportData reportData = centralReport; ReportUpdateData reportUpdateData = reportData; reportUpdateData.Should().BeEquivalentTo(testParams.Cmd.ReportUpdateData); evt.Should().BeEquivalentTo(testParams.expectedEvt, e => e.Excluding(p => p.SerializedData)); evt.SerializedData.Should().NotBe(null); }); }
public async Task Handle_SavesReportWhenNoPreviousReportSubmitted(ReportingFrequency reportingFrequency, bool overrideReportData) { var now = DateTimeDbTestExtensions.SetUtcNowToRandomDate(); var testParams = Endpoint.ArrangeOnSqlSession(AssemblySetupFixture.EndpointTestContainer, s => { var username = DataProvider.Get <string>(); var year = 2019; var reportingTerm = ReportingTerm.One; var organization = new OrganizationBuilder() .SetOrganizationType(OrganizationType.Central) .SetReportingFreQuency(reportingFrequency) .BuildAndPersist(s); var report = new CentralReportBuilder() .SetOrganization(organization) .SetReportingPeriod(new ReportingPeriod(reportingFrequency, reportingTerm, year)) .Build(); report.MarkStatusAsPlanPromoted(); s.Save(report); var generatedData = GetCentralReportData(); report.UpdateGeneratedData(generatedData); report.Update(generatedData); s.Save(report); EntityReference reportRef = report; var expectedEvt = Test.CreateInstance <ICentralReportUpdated>(e => { e.Organization = organization; e.Username = username; e.CentralReport = reportRef; }); return(new { Cmd = new UpdateCentralReportGeneratedDataCommand(report.Id, overrideReportData), Organization = organization, Report = report, centralReportData = generatedData, overrideReportData, username, expectedEvt }); }); var context = await Endpoint.Act <UpdateCentralReportGeneratedDataCommandHandler>(AssemblySetupFixture.EndpointTestContainer, (h, ctx) => { ctx.SetUsernameOnHeader(testParams.username); return(h.Handle(testParams.Cmd, ctx)); }); var evt = context.ExpectPublish <ICentralReportUpdated>(); Endpoint.AssertOnSqlSessionThat(AssemblySetupFixture.EndpointTestContainer, s => { var report = s.Get <Report>(testParams.Cmd.ReportId); report.Should().NotBeNull(); report.Description.Should().Be(testParams.Report.Description); report.ReportingPeriod.Year.Should().Be(testParams.Report.ReportingPeriod.Year); report.ReportingPeriod.ReportingFrequency.Should().Be(testParams.Organization.ReportingFrequency); report.ReportingPeriod.ReportingTerm.Should().Be(testParams.Report.ReportingPeriod.ReportingTerm); report.Organization.Should().Be(testParams.Report.Organization); report.ReportStatus.Should().Be(ReportStatus.PlanPromoted); report.Timestamp.Should().Be(now); report.IsDeleted.Should().Be(false); var centralReport = s.Get <CentralReport>(testParams.Cmd.ReportId); centralReport.Should().NotBeNull(); centralReport.Description.Should().Be(testParams.Report.Description); centralReport.ReportingPeriod.Year.Should().Be(testParams.Report.ReportingPeriod.Year); centralReport.ReportingPeriod.ReportingFrequency.Should() .Be(testParams.Organization.ReportingFrequency); centralReport.ReportingPeriod.ReportingTerm.Should() .Be(testParams.Report.ReportingPeriod.ReportingTerm); centralReport.Organization.Should().Be(testParams.Report.Organization); //centralReport.AssociateMemberData.Should().Be(overrideReportData // ? MemberData.Default() // : testParams.centralReportData.AssociateMemberData); //centralReport.AssociateMemberGeneratedData.Should().Be(MemberData.Default()); //centralReport.PreliminaryMemberData.Should().Be(overrideReportData // ? MemberData.Default() // : testParams.centralReportData.PreliminaryMemberData); //centralReport.PreliminaryMemberGeneratedData.Should().Be(MemberData.Default()); //centralReport.WorkerMeetingProgramData.Should().Be(overrideReportData // ? MeetingProgramData.Default() // : testParams.centralReportData.WorkerMeetingProgramData); //centralReport.WorkerMeetingProgramGeneratedData.Should().Be(MeetingProgramData.Default()); centralReport.Timestamp.Should().Be(now); centralReport.IsDeleted.Should().Be(false); evt.Should().BeEquivalentTo(testParams.expectedEvt, e => e.Excluding(p => p.SerializedData)); evt.SerializedData.Should().NotBe(null); }); }
public async Task Handle_UnSubmitPromotedPlan(OrganizationType organizationType, ReportingFrequency reportingFrequency) { DateTimeDbTestExtensions.SetUtcNowToRandomDate(); var testParams = Endpoint.ArrangeOnSqlSession(AssemblySetupFixture.EndpointTestContainer, s => { var username = DataProvider.Get <string>(); var year = 2019; var reportingTerm = ReportingTerm.One; var organization = new OrganizationBuilder() .SetOrganizationType(organizationType) .SetReportingFreQuency(reportingFrequency) .BuildAndPersist(s); Report report = new ReportBuilder() .SetOrganization(organization) .SetReportingPeriod(new ReportingPeriod(reportingFrequency, reportingTerm, year)) .Build(); report.MarkStatusAsPlanPromoted(); s.Save(report); EntityReference reportRef = report; var expectedEvt = Test.CreateInstance <IReportUnSubmitted>(e => { e.Organization = organization; e.Username = username; e.Report = reportRef; }); return(new { Cmd = new UnSubmitReportCommand(report.Id), Organization = organization, Report = report, username, expectedEvt }); }); var context = await Endpoint.Act <UnSubmitReportCommandHandler>(AssemblySetupFixture.EndpointTestContainer, (h, ctx) => { ctx.SetUsernameOnHeader(testParams.username); return(h.Handle(testParams.Cmd, ctx)); }); var evt = context.ExpectPublish <IReportUnSubmitted>(); Endpoint.AssertOnSqlSessionThat(AssemblySetupFixture.EndpointTestContainer, s => { var report = s.Get <Report>(testParams.Cmd.ReportId); report.Should().NotBeNull(); report.Should().BeEquivalentTo(testParams.Report, e => e.Excluding(p => p.ReportStatus)); report.ReportStatus.Should().Be(ReportStatus.Draft); evt.Should().BeEquivalentTo(testParams.expectedEvt, e => e.Excluding(p => p.SerializedData)); evt.SerializedData.Should().NotBe(null); }); }
public async Task Handle_SavesRecord(OrganizationType newOrganizationType, ReportingFrequency newReportingFrequency) { var now = DateTimeDbTestExtensions.SetUtcNowToRandomDate(); var username = DataProvider.Get <string>(); var testParams = Endpoint.ArrangeOnSqlSession(AssemblySetupFixture.EndpointTestContainer, s => { var org = new OrganizationBuilder().BuildAndPersist(s); EntityReference parent; switch (newOrganizationType) { case OrganizationType.State: parent = new OrganizationBuilder().SetOrganizationType(OrganizationType.Central).BuildAndPersist(s); break; case OrganizationType.Zone: case OrganizationType.Unit: parent = new OrganizationBuilder().SetOrganizationType(OrganizationType.State).BuildAndPersist(s); break; default: parent = new OrganizationBuilder().SetOrganizationType(OrganizationType.Central).BuildAndPersist(s); break; } var newDescription = DataProvider.Get <string>(); var newDetails = DataProvider.Get <string>(); var expectedEvt = Test.CreateInstance <IOrganizationUpdated>(e => { e.Organization = new OrganizationReference(org.Id, newOrganizationType, newDescription, newDetails, newReportingFrequency); e.Username = username; }); return(new { username, expectedEvt, Cmd = new UpdateOrganizationCommand(org.Id, newDescription, newDetails, newOrganizationType, newReportingFrequency, parent) }); }); var context = await Endpoint.Act <UpdateOrganizationCommandHandler>(AssemblySetupFixture.EndpointTestContainer, (h, ctx) => { ctx.SetUsernameOnHeader(testParams.username); return(h.Handle(testParams.Cmd, ctx)); }); var evt = context.ExpectPublish <IOrganizationUpdated>(); Endpoint.AssertOnSqlSessionThat(AssemblySetupFixture.EndpointTestContainer, s => { var organization = s.Query <Organization>().Single(x => x.Id == testParams.Cmd.OrganizationId); organization.Should().NotBeNull(); organization.OrganizationType.Should().Be(testParams.Cmd.OrganizationType); organization.ReportingFrequency.Should().Be(testParams.Cmd.ReportingFrequency); organization.Description.Should().Be(testParams.Cmd.Description); organization.Details.Should().Be(testParams.Cmd.Details); organization.Parent.Should().Be(testParams.Cmd.Parent); organization.Timestamp.Should().Be(now); organization.IsDeleted.Should().Be(false); }); evt.Should().BeEquivalentTo(testParams.expectedEvt, e => e.Excluding(p => p.SerializedData)); evt.SerializedData.Should().NotBe(null); }
public static Dictionary <string, Organization> SetupOrzanizations(ReportingFrequency centralReportingFrequency = ReportingFrequency.Yearly, ReportingFrequency stateReportingFrequency = ReportingFrequency.Yearly, ReportingFrequency zoneReportingFrequency = ReportingFrequency.Yearly, ReportingFrequency unitReportingFrequency = ReportingFrequency.Quarterly) { var testParams = Endpoint.ArrangeOnSqlSession(AssemblySetupFixture.EndpointTestContainer, s => { var central = new OrganizationBuilder() .SetDescription(Central) .SetOrganizationType(OrganizationType.Central) .SetReportingFreQuency(centralReportingFrequency) .SetParent(Organization.Root) .BuildAndPersist(s); var victoriaState = new OrganizationBuilder() .SetDescription(VictoriaState) .SetOrganizationType(OrganizationType.State) .SetReportingFreQuency(stateReportingFrequency) .SetParent(central) .BuildAndPersist(s); var footscray = new OrganizationBuilder() .SetDescription(Footscray) .SetOrganizationType(OrganizationType.Unit) .SetReportingFreQuency(unitReportingFrequency) .SetParent(victoriaState) .BuildAndPersist(s); var truganinaNorth = new OrganizationBuilder() .SetDescription(TruganinaNorth) .SetOrganizationType(OrganizationType.Unit) .SetReportingFreQuency(unitReportingFrequency) .SetParent(victoriaState) .BuildAndPersist(s); var nswState = new OrganizationBuilder() .SetDescription(NswState) .SetOrganizationType(OrganizationType.State) .SetReportingFreQuency(stateReportingFrequency) .SetParent(central) .BuildAndPersist(s); var nswStateZone1 = new OrganizationBuilder() .SetDescription(NswZoneOne) .SetOrganizationType(OrganizationType.Zone) .SetReportingFreQuency(zoneReportingFrequency) .SetParent(nswState) .BuildAndPersist(s); var lakemba = new OrganizationBuilder() .SetDescription(Lakemba) .SetOrganizationType(OrganizationType.Unit) .SetReportingFreQuency(unitReportingFrequency) .SetParent(nswStateZone1) .BuildAndPersist(s); var minto = new OrganizationBuilder() .SetDescription(Minto) .SetOrganizationType(OrganizationType.Unit) .SetReportingFreQuency(unitReportingFrequency) .SetParent(nswStateZone1) .BuildAndPersist(s); var data = new Dictionary <string, Organization> { { central.Description, central }, { victoriaState.Description, victoriaState }, { footscray.Description, footscray }, { truganinaNorth.Description, truganinaNorth }, { nswState.Description, nswState }, { nswStateZone1.Description, nswStateZone1 }, { lakemba.Description, lakemba }, { minto.Description, minto } }; return(data); }); return(testParams); }
public void CreateNewPlan_For_State_Unit_SavesMemberDataCorrectly( bool thisPeriodSubmitted, bool lastPeriod1Submitted, bool lastPeriod2Submitted ) { DateTimeDbTestExtensions.SetUtcNowToRandomDate(); var reportingTerms = ReportingPeriod.GetReportingTerms(reportingFrequency); if (reportingTerms.All(o => o != reportingTerm)) { return; } var testParams = Endpoint.ArrangeOnSqlSession(AssemblySetupFixture.EndpointTestContainer, s => { var organizations = IntegrationTestOrganizationHelper.SetupOrzanizations( stateReportingFrequency: reportingFrequency, zoneReportingFrequency: ReportingFrequency.Monthly); var nswState = organizations.First(o => o.Key == IntegrationTestOrganizationHelper.NswState).Value; var laPerouse = new OrganizationBuilder() .SetDescription("La perouse") .SetOrganizationType(OrganizationType.Unit) .SetReportingFreQuency(ReportingFrequency.Monthly) .SetParent(nswState) .BuildAndPersist(s); var lalorPark = new OrganizationBuilder() .SetDescription("Lalor park") .SetOrganizationType(OrganizationType.Unit) .SetReportingFreQuency(ReportingFrequency.Monthly) .SetParent(nswState) .BuildAndPersist(s); var description = DataProvider.Get <string>(); var year = 2019; OrganizationReference organizationRef = nswState; var reportingPeriod = new ReportingPeriod(reportingFrequency, reportingTerm, year); var expected = new StateReportBuilder() .SetDescription(description) .SetOrganization(organizationRef) .SetReportingPeriod(new ReportingPeriod(reportingFrequency, reportingPeriod.ReportingTerm, reportingPeriod.Year)) .Build(); var lastPeriod1 = reportingPeriod.GetReportingPeriodOfPreviousTerm(); var lastPeriod2 = lastPeriod1.GetReportingPeriodOfPreviousTerm(); var laPerouseThisPeriodUnitReport = IntegrationTestStateReportHelper.BuildAndPersistUnitReport(thisPeriodSubmitted, laPerouse, reportingPeriod, s); var laPerouseLastPeriod1UnitReport = IntegrationTestStateReportHelper.BuildAndPersistUnitReport(lastPeriod1Submitted, laPerouse, lastPeriod1, s); var laPerouseLastPeriod2UnitReport = IntegrationTestStateReportHelper.BuildAndPersistUnitReport(lastPeriod2Submitted, laPerouse, lastPeriod2, s); var lalorParkThisPeriodUnitReport = IntegrationTestStateReportHelper.BuildAndPersistUnitReport(thisPeriodSubmitted, lalorPark, reportingPeriod, s); var lalorParkLastPeriod1UnitReport = IntegrationTestStateReportHelper.BuildAndPersistUnitReport(lastPeriod1Submitted, lalorPark, lastPeriod1, s); var lalorParkLastPeriod2UnitReport = IntegrationTestStateReportHelper.BuildAndPersistUnitReport(lastPeriod2Submitted, lalorPark, lastPeriod2, s); var laPerouseUnitReports = new[] { laPerouseThisPeriodUnitReport, laPerouseLastPeriod1UnitReport, laPerouseLastPeriod2UnitReport, }; var lalorParkeUnitReports = new[] { lalorParkThisPeriodUnitReport, lalorParkLastPeriod1UnitReport, lalorParkLastPeriod2UnitReport, }; var lastSubmittedLapeRouseReport = IntegrationTestStateReportHelper.GetLastSubmittedReport(laPerouseUnitReports, reportingPeriod); var lastSubmittedLalorParkReport = IntegrationTestStateReportHelper.GetLastSubmittedReport(lalorParkeUnitReports, reportingPeriod); var submittedReports = new[] { lastSubmittedLapeRouseReport, lastSubmittedLalorParkReport }.Where(o => o != null).ToArray(); var expectedMemberMemberData = IntegrationTestStateReportHelper.GetExpectedMemberData(submittedReports, nameof(StateReport.MemberMemberData)); var expectedMemberMemberGeneratedData = expectedMemberMemberData; var expectedAssociateMemberData = IntegrationTestStateReportHelper.GetExpectedMemberData(submittedReports, nameof(StateReport.AssociateMemberData)); var expectedAssociateMemberGeneratedData = expectedAssociateMemberData; var expectedPreliminaryMemberData = IntegrationTestStateReportHelper.GetExpectedMemberData(submittedReports, nameof(StateReport.PreliminaryMemberData)); var expectedPreliminaryMemberGeneratedData = expectedPreliminaryMemberData; var expectedSupporterMemberData = IntegrationTestStateReportHelper.GetExpectedMemberData(submittedReports, nameof(StateReport.SupporterMemberData)); var expectedSupporterMemberGeneratedData = expectedSupporterMemberData; return(new { description, reportingPeriod, organizationRef, expected, expectedMemberMemberData, expectedMemberMemberGeneratedData, expectedAssociateMemberData, expectedAssociateMemberGeneratedData, expectedPreliminaryMemberData, expectedPreliminaryMemberGeneratedData, expectedSupporterMemberData, expectedSupporterMemberGeneratedData, }); }); var result = Endpoint.Act(AssemblySetupFixture.EndpointTestContainer, c => { var stateReport = c.GetInstance <IStateReportFactory>() .CreateNewStatePlan(testParams.description, testParams.organizationRef, testParams.reportingPeriod.ReportingTerm, testParams.reportingPeriod.Year, reportingFrequency); return(new { stateReport }); }); result.stateReport.Should().NotBeNull(); //no need to repeat this section for the other field types result.stateReport.Should().BeEquivalentTo(testParams.expected, e => e.Excluding(p => p.Id) .Excluding(p => p.MemberMemberData) .Excluding(p => p.MemberMemberGeneratedData) .Excluding(p => p.AssociateMemberData) .Excluding(p => p.AssociateMemberGeneratedData) .Excluding(p => p.PreliminaryMemberData) .Excluding(p => p.PreliminaryMemberGeneratedData) .Excluding(p => p.SupporterMemberData) .Excluding(p => p.SupporterMemberGeneratedData) .Excluding(p => p.WorkerMeetingProgramData) .Excluding(p => p.WorkerMeetingProgramGeneratedData) .Excluding(p => p.DawahMeetingProgramData) .Excluding(p => p.DawahMeetingProgramGeneratedData) .Excluding(p => p.StateLeaderMeetingProgramData) .Excluding(p => p.StateLeaderMeetingProgramGeneratedData) .Excluding(p => p.StateOutingMeetingProgramData) .Excluding(p => p.StateOutingMeetingProgramGeneratedData) .Excluding(p => p.IftarMeetingProgramData) .Excluding(p => p.IftarMeetingProgramGeneratedData) .Excluding(p => p.LearningMeetingProgramData) .Excluding(p => p.LearningMeetingProgramGeneratedData) .Excluding(p => p.SocialDawahMeetingProgramData) .Excluding(p => p.SocialDawahMeetingProgramGeneratedData) .Excluding(p => p.DawahGroupMeetingProgramData) .Excluding(p => p.DawahGroupMeetingProgramGeneratedData) .Excluding(p => p.NextGMeetingProgramData) .Excluding(p => p.NextGMeetingProgramGeneratedData) .Excluding(p => p.CmsMeetingProgramData) .Excluding(p => p.CmsMeetingProgramGeneratedData) .Excluding(p => p.SmMeetingProgramData) .Excluding(p => p.SmMeetingProgramGeneratedData) .Excluding(p => p.MemberMeetingProgramData) .Excluding(p => p.MemberMeetingProgramGeneratedData) .Excluding(p => p.TafsirMeetingProgramData) .Excluding(p => p.TafsirMeetingProgramGeneratedData) .Excluding(p => p.UnitMeetingProgramData) .Excluding(p => p.UnitMeetingProgramGeneratedData) .Excluding(p => p.FamilyVisitMeetingProgramData) .Excluding(p => p.FamilyVisitMeetingProgramGeneratedData) .Excluding(p => p.EidReunionMeetingProgramData) .Excluding(p => p.EidReunionMeetingProgramGeneratedData) .Excluding(p => p.BbqMeetingProgramData) .Excluding(p => p.BbqMeetingProgramGeneratedData) .Excluding(p => p.GatheringMeetingProgramData) .Excluding(p => p.GatheringMeetingProgramGeneratedData) .Excluding(p => p.OtherMeetingProgramData) .Excluding(p => p.OtherMeetingProgramGeneratedData) .Excluding(p => p.GroupStudyTeachingLearningProgramData) .Excluding(p => p.GroupStudyTeachingLearningProgramGeneratedData) .Excluding(p => p.StudyCircleTeachingLearningProgramData) .Excluding(p => p.StudyCircleTeachingLearningProgramGeneratedData) .Excluding(p => p.PracticeDarsTeachingLearningProgramData) .Excluding(p => p.PracticeDarsTeachingLearningProgramGeneratedData) .Excluding(p => p.StateLearningCampTeachingLearningProgramData) .Excluding(p => p.StateLearningCampTeachingLearningProgramGeneratedData) .Excluding(p => p.QuranStudyTeachingLearningProgramData) .Excluding(p => p.QuranStudyTeachingLearningProgramGeneratedData) .Excluding(p => p.QuranClassTeachingLearningProgramData) .Excluding(p => p.QuranClassTeachingLearningProgramGeneratedData) .Excluding(p => p.MemorizingAyatTeachingLearningProgramData) .Excluding(p => p.MemorizingAyatTeachingLearningProgramGeneratedData) .Excluding(p => p.StateLearningSessionTeachingLearningProgramData) .Excluding(p => p.StateLearningSessionTeachingLearningProgramGeneratedData) .Excluding(p => p.StateQiyamulLailTeachingLearningProgramData) .Excluding(p => p.StateQiyamulLailTeachingLearningProgramGeneratedData) .Excluding(p => p.StudyCircleForAssociateMemberTeachingLearningProgramData) .Excluding(p => p.StudyCircleForAssociateMemberTeachingLearningProgramGeneratedData) .Excluding(p => p.HadithTeachingLearningProgramData) .Excluding(p => p.HadithTeachingLearningProgramGeneratedData) .Excluding(p => p.WeekendIslamicSchoolTeachingLearningProgramData) .Excluding(p => p.WeekendIslamicSchoolTeachingLearningProgramGeneratedData) .Excluding(p => p.MemorizingHadithTeachingLearningProgramData) .Excluding(p => p.MemorizingHadithTeachingLearningProgramGeneratedData) .Excluding(p => p.MemorizingDoaTeachingLearningProgramData) .Excluding(p => p.MemorizingDoaTeachingLearningProgramGeneratedData) .Excluding(p => p.OtherTeachingLearningProgramData) .Excluding(p => p.OtherTeachingLearningProgramGeneratedData) .Excluding(p => p.BookSaleMaterialData) .Excluding(p => p.BookSaleMaterialGeneratedData) .Excluding(p => p.BookDistributionMaterialData) .Excluding(p => p.BookDistributionMaterialGeneratedData) .Excluding(p => p.BookLibraryStockData) .Excluding(p => p.BookLibraryStockGeneratedData) .Excluding(p => p.OtherSaleMaterialData) .Excluding(p => p.OtherSaleMaterialGeneratedData) .Excluding(p => p.OtherDistributionMaterialData) .Excluding(p => p.OtherDistributionMaterialGeneratedData) .Excluding(p => p.OtherLibraryStockData) .Excluding(p => p.OtherLibraryStockGeneratedData) .Excluding(p => p.VhsSaleMaterialData) .Excluding(p => p.VhsSaleMaterialGeneratedData) .Excluding(p => p.VhsDistributionMaterialData) .Excluding(p => p.VhsDistributionMaterialGeneratedData) .Excluding(p => p.VhsLibraryStockData) .Excluding(p => p.VhsLibraryStockGeneratedData) .Excluding(p => p.EmailDistributionMaterialData) .Excluding(p => p.EmailDistributionMaterialGeneratedData) .Excluding(p => p.IpdcLeafletDistributionMaterialData) .Excluding(p => p.IpdcLeafletDistributionMaterialGeneratedData) .Excluding(p => p.BaitulMalFinanceData) .Excluding(p => p.BaitulMalFinanceGeneratedData) .Excluding(p => p.ADayMasjidProjectFinanceData) .Excluding(p => p.ADayMasjidProjectFinanceGeneratedData) .Excluding(p => p.MasjidTableBankFinanceData) .Excluding(p => p.MasjidTableBankFinanceGeneratedData) .Excluding(p => p.QardeHasanaSocialWelfareData) .Excluding(p => p.QardeHasanaSocialWelfareGeneratedData) .Excluding(p => p.PatientVisitSocialWelfareData) .Excluding(p => p.PatientVisitSocialWelfareGeneratedData) .Excluding(p => p.SocialVisitSocialWelfareData) .Excluding(p => p.SocialVisitSocialWelfareGeneratedData) .Excluding(p => p.TransportSocialWelfareData) .Excluding(p => p.TransportSocialWelfareGeneratedData) .Excluding(p => p.ShiftingSocialWelfareData) .Excluding(p => p.ShiftingSocialWelfareGeneratedData) .Excluding(p => p.ShoppingSocialWelfareData) .Excluding(p => p.ShoppingSocialWelfareGeneratedData) .Excluding(p => p.FoodDistributionSocialWelfareData) .Excluding(p => p.FoodDistributionSocialWelfareGeneratedData) .Excluding(p => p.CleanUpAustraliaSocialWelfareData) .Excluding(p => p.CleanUpAustraliaSocialWelfareGeneratedData) .Excluding(p => p.OtherSocialWelfareData) .Excluding(p => p.OtherSocialWelfareGeneratedData) ); result.stateReport.MemberMemberData.Should().BeEquivalentTo(testParams.expectedMemberMemberData); result.stateReport.MemberMemberGeneratedData.Should().BeEquivalentTo(testParams.expectedMemberMemberGeneratedData); result.stateReport.AssociateMemberData.Should().BeEquivalentTo(testParams.expectedAssociateMemberData); result.stateReport.AssociateMemberGeneratedData.Should().BeEquivalentTo(testParams.expectedAssociateMemberGeneratedData); result.stateReport.PreliminaryMemberData.Should().BeEquivalentTo(testParams.expectedPreliminaryMemberData); result.stateReport.PreliminaryMemberGeneratedData.Should().BeEquivalentTo(testParams.expectedPreliminaryMemberGeneratedData); result.stateReport.SupporterMemberData.Should().BeEquivalentTo(testParams.expectedSupporterMemberData); result.stateReport.SupporterMemberGeneratedData.Should().BeEquivalentTo(testParams.expectedSupporterMemberGeneratedData); }