public void Has_Central_Should_Return_CorrectResult(bool isCentralUser) { var username = DataProvider.Get <string>(); var testParams = Endpoint.ArrangeOnSqlSession(AssemblySetupFixture.EndpointTestContainer, s => { var reportingFrequency = ReportingFrequency.Monthly; var organizations = IntegrationTestOrganizationHelper.SetupOrzanizations( stateReportingFrequency: reportingFrequency, zoneReportingFrequency: ReportingFrequency.Monthly); var central = organizations.First(o => o.Key == IntegrationTestOrganizationHelper.Central).Value; var nsw = organizations.First(o => o.Key == IntegrationTestOrganizationHelper.NswState).Value; var organizationUser1 = new TestObjectBuilder <OrganizationUser>() .SetArgument(o => o.Username, username) .SetArgument(o => o.Organization, isCentralUser?central: nsw) .BuildAndPersist(s); new UserContextBuilder() .SetUsername(username) .AddClaims(TestHelper.GetOrganizationClaims(username, new[] { organizationUser1 })) .SetCurrentPrincipal(); return(new { organizationUser1 }); }); var result = NsbWebTest.Act(AssemblySetupFixture.WebTestContainer, c => c.GetInstance <OrganizationUserQueryService>() .HasCentralAccess(testParams.organizationUser1.Username)); result.Should().Be(isCentralUser); }
public async Task Handle_SavesUnitReport(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 TestObjectBuilder <Organization>() .SetArgument(o => o.OrganizationType, OrganizationType.Unit) .SetArgument(o => o.ReportingFrequency, reportingFrequency) .BuildAndPersist(s); var cmd = new CreateUnitPlanCommand(organization, year, reportingTerm, reportingFrequency); var description = cmd.Description; var expected = new UnitReportBuilder() .SetDescription(description) .SetOrganization(organization) .SetReportingPeriod(new ReportingPeriod(reportingFrequency, reportingTerm, year)) .SetReportData(ReportData.Default()) .Build(); return(new { cmd, username, expected }); }); var context = await Endpoint.Act <CreateUnitPlanCommandHandler>(AssemblySetupFixture.EndpointTestContainer, (h, ctx) => { ctx.SetUsernameOnHeader(testParams.username); return(h.Handle(testParams.cmd, ctx)); }); var evt = context.ExpectPublish <IUnitPlanCreated>(); Endpoint.AssertOnSqlSessionThat(AssemblySetupFixture.EndpointTestContainer, s => { var report = s.Query <UnitReport>().Single(); report.Should().NotBeNull(); report.Should().BeEquivalentTo(testParams.expected, e => e.Excluding(p => p.Id)); report.ReportingPeriod.Should().BeEquivalentTo(testParams.expected.ReportingPeriod); EntityReference reportRef = report; var expectedEvt = Test.CreateInstance <IUnitPlanCreated>(e => { e.Organization = testParams.expected.Organization; e.Username = testParams.username; e.UnitReport = reportRef; }); evt.Should().BeEquivalentTo(expectedEvt, e => e.Excluding(p => p.SerializedData)); evt.SerializedData.Should().NotBe(null); }); }
public void CreateNewUnitPlan_SavesCorrectlyWhenLastYearSubmitted(ReportingFrequency reportingFrequency) { DateTimeDbTestExtensions.SetUtcNowToRandomDate(); var testParams = Endpoint.ArrangeOnSqlSession(AssemblySetupFixture.EndpointTestContainer, s => { var organizationType = OrganizationType.Unit; var description = DataProvider.Get <string>(); var year = 2019; var reportingTerm = ReportingTerm.One; var organization = new TestObjectBuilder <Organization>() .SetArgument(o => o.OrganizationType, organizationType) .SetArgument(o => o.ReportingFrequency, reportingFrequency) .BuildAndPersist(s); OrganizationReference organizationRef = organization; var reportingPeriod = new ReportingPeriod(reportingFrequency, reportingTerm, year); var expected = new UnitReportBuilder() .SetDescription(description) .SetOrganization(organization) .SetReportingPeriod(new ReportingPeriod(reportingFrequency, reportingTerm, year)) .SetReportData(ReportData.Default()) .Build(); return(new { description, organizationRef, reportingPeriod, expected }); }); var result = Endpoint.Act(AssemblySetupFixture.EndpointTestContainer, c => { var unitReport = c.GetInstance <UnitReportFactory>() .CreateNewUnitPlan(testParams.description, testParams.organizationRef, testParams.reportingPeriod.ReportingTerm, testParams.reportingPeriod.Year, reportingFrequency); return(new { unitReport }); }); result.unitReport.Should().NotBeNull(); result.unitReport.Should().BeEquivalentTo(testParams.expected, e => e.Excluding(p => p.Id)); }
public void GetRecent_Returns_Result_AsExpected(OrganizationType organizationType, ReportingFrequency reportingFrequency) { var org1 = new TestObjectBuilder <OrganizationReference>() .SetArgument(o => o.OrganizationType, organizationType) .Build(); var org2 = new TestObjectBuilder <OrganizationReference>() .SetArgument(o => o.OrganizationType, organizationType) .Build(); var excelReportData1 = new ExcelReportDataBuilder().Build(); excelReportData1.Organization = org1; excelReportData1.ReportingPeriod = new ReportingPeriod(ReportingFrequency.Monthly, ReportingTerm.One, 2019); var excelReportData2 = new ExcelReportDataBuilder().Build(); excelReportData2.Organization = org1; excelReportData2.ReportingPeriod = new ReportingPeriod(ReportingFrequency.Monthly, ReportingTerm.Four, 2019); var excelReportData3 = new ExcelReportDataBuilder().Build(); excelReportData3.Organization = org1; excelReportData3.ReportingPeriod = new ReportingPeriod(ReportingFrequency.Monthly, ReportingTerm.Three, 2019); var excelReportData4 = new ExcelReportDataBuilder().Build(); excelReportData4.Organization = org2; excelReportData4.ReportingPeriod = new ReportingPeriod(ReportingFrequency.Monthly, ReportingTerm.One, 2019); var excelReportData5 = new ExcelReportDataBuilder().Build(); excelReportData5.Organization = org2; excelReportData5.ReportingPeriod = new ReportingPeriod(ReportingFrequency.Monthly, ReportingTerm.Three, 2019); var excelReportData6 = new ExcelReportDataBuilder().Build(); excelReportData6.Organization = org2; excelReportData6.ReportingPeriod = new ReportingPeriod(ReportingFrequency.Monthly, ReportingTerm.Two, 2019); var excelReportDatas = new[] { excelReportData1, excelReportData2, excelReportData3, excelReportData4, excelReportData5, excelReportData6 }; var data = new SearchResult <ExcelReportData>(excelReportDatas, new PagingData(1, 100, 1000)); var recentExcelReportDatas = ExcelReportFactory.GetRecentExcelReportDatas(data.Items, organizationType); var expected = new[] { excelReportData2, excelReportData5 }; // ReSharper disable once CoVariantArrayConversion recentExcelReportDatas.Should().BeEquivalentTo(expected); }
public async Task Handle_DoNotSavesCentralReport_WhenDuplicate(ReportingFrequency reportingFrequency) { DateTimeDbTestExtensions.SetUtcNowToRandomDate(); var testParams = Endpoint.ArrangeOnSqlSession(AssemblySetupFixture.EndpointTestContainer, s => { var username = DataProvider.Get <string>(); var description = DataProvider.Get <string>(); var year = 2019; var reportingTerm = ReportingTerm.One; var organization = new TestObjectBuilder <Organization>() .SetArgument(o => o.OrganizationType, OrganizationType.Central) .SetArgument(o => o.ReportingFrequency, reportingFrequency) .BuildAndPersist(s); var copyFrom = new CentralReportBuilder() .SetDescription(description) .SetOrganization(organization) .SetReportingPeriod(new ReportingPeriod(reportingFrequency, reportingTerm, year - 1)) .BuildAndPersist(s); var duplicate = new CentralReportBuilder() .SetDescription(description) .SetOrganization(organization) .SetReportingPeriod(new ReportingPeriod(reportingFrequency, reportingTerm, year)) .BuildAndPersist(s); return(new { Cmd = new CopyCentralPlanCommand(copyFrom.Id, organization, year, reportingTerm, reportingFrequency), username, duplicate }); }); var context = await Endpoint.Act <CopyCentralPlanCommandHandler>(AssemblySetupFixture.EndpointTestContainer, (h, ctx) => { ctx.SetUsernameOnHeader(testParams.username); return(h.Handle(testParams.Cmd, ctx)); }); var evt = context.ExpectPublish <ICentralPlanCopyFailed>(); Endpoint.AssertOnSqlSessionThat(AssemblySetupFixture.EndpointTestContainer, s => { var report = s.Query <CentralReport>().OrderByDescending(o => o.Id).First(); report.Should().NotBeNull(); report.Should().BeEquivalentTo(testParams.duplicate); evt.Errors[0].Should().Contain(testParams.duplicate.Description); }); }
public UnitReport Build() { var report = new TestObjectBuilder <UnitReport>() .SetArgument(o => o.Description, _description) .SetArgument(o => o.Organization, _organization) .SetArgument(o => o.ReportingPeriod, _reportingPeriod) .SetArgument("reportData", _reportData) .Build(); return(report); }
public ZoneReport Build() { var report = new TestObjectBuilder <ZoneReport>() .SetArgument(o => o.Description, _description) .SetArgument(o => o.Organization, _organization) .SetArgument(o => o.ReportingPeriod, _reportingPeriod) .SetArgument("reportData", _reportData) .Build(); report.UpdateGeneratedData(_reportDataGenerated); return(report); }
public Organization Build() { var organization = new TestObjectBuilder <Organization>() .SetArgument(o => o.Description, _description) .SetArgument(o => o.Details, _details) .SetArgument(o => o.ReportingFrequency, _reportFrequency) .SetArgument(o => o.OrganizationType, _organizationType) .SetArgument(o => o.Parent, _parent) .Build(); return(organization); }
public void CreateRooms_WhenNothingGetOnTheWay_RoomsCreated() { //a var newRoom = TestObjectBuilder.CreateMany <Room>(3).ToArray(); //a var createdRooms = _roomRepository.CreateRooms(newRoom).ToList(); //a var receivedRooms = _roomRepository.ReadRooms(createdRooms.Select(x => x.Id).ToArray()).ToList(); _roomRepository.DeleteRooms(createdRooms.Select(x => new Room { Id = x.Id }).ToArray()); Xunit.Assert.Equal(createdRooms, receivedRooms); }
public void DeleteRooms_WhenRoomsExist_RoomsDeleted() { //a var newRoom = TestObjectBuilder.CreateMany <Room>(3).ToArray(); var createdRooms = _roomRepository.CreateRooms(newRoom).ToList(); //a _roomRepository.DeleteRooms(createdRooms.Select(x => new Room { Id = x.Id }).ToArray()); //a var receivedRooms = _roomRepository.ReadRooms(createdRooms.Select(x => x.Id).ToArray()).ToList(); Xunit.Assert.Empty(receivedRooms); }
public void PromotePlanToUnitReport_SavesCorrectlyWhenLastYearSubmitted(ReportingFrequency reportingFrequency) { DateTimeDbTestExtensions.SetUtcNowToRandomDate(); var testParams = Endpoint.ArrangeOnSqlSession(AssemblySetupFixture.EndpointTestContainer, s => { var organizationType = OrganizationType.Unit; var description = DataProvider.Get <string>(); var year = 2019; var reportingTerm = ReportingTerm.One; var organization = new TestObjectBuilder <Organization>() .SetArgument(o => o.OrganizationType, organizationType) .SetArgument(o => o.ReportingFrequency, reportingFrequency) .BuildAndPersist(s); var period1 = new ReportingPeriod(reportingFrequency, reportingTerm, year); var period1ReportingData = new ReportDataBuilder().Build(); var period1UnitReport = new UnitReport(description, organization, period1, period1ReportingData); s.Save(period1UnitReport); return(new { period1UnitReport, }); }); var result = Endpoint.Act(AssemblySetupFixture.EndpointTestContainer, c => { var unitReport = c.GetInstance <UnitReportService>() .PromotePlanToUnitReport(testParams.period1UnitReport.Id); return(new { unitReport }); }); result.unitReport.Should().NotBeNull(); result.unitReport.Should().BeEquivalentTo(testParams.period1UnitReport, e => e.Excluding(p => p.ReportStatus)); result.unitReport.ReportStatus.Should().Be(ReportStatus.PlanPromoted); }
public void SearchReportEventLog_Should_Return_NoResult_ForOrganizationId_Null() { var username1 = DataProvider.Get <string>(); var username2 = DataProvider.Get <string>(); Endpoint.ArrangeOnSqlSession(AssemblySetupFixture.EndpointTestContainer, s => { EntityReference organization1 = new OrganizationBuilder().BuildAndPersist(s); EntityReference organization2 = new OrganizationBuilder().BuildAndPersist(s); var organizationUser1 = new TestObjectBuilder <OrganizationUser>() .SetArgument(o => o.Username, username1) .SetArgument(o => o.Organization, organization1) .BuildAndPersist(s); new TestObjectBuilder <ReportEventLog>() .SetArgument(o => o.CreatedByUsername, username1) .SetArgument(o => o.OrganizationId, null) .BuildAndPersist(s); new TestObjectBuilder <ReportEventLog>() .SetArgument(o => o.CreatedByUsername, username1) .SetArgument(o => o.OrganizationId, organization2.Id) .BuildAndPersist(s); new TestObjectBuilder <ReportEventLog>() .SetArgument(o => o.CreatedByUsername, username2) .SetArgument(o => o.OrganizationId, organization2.Id) .BuildAndPersist(s); new UserContextBuilder() .SetUsername(username1) .AddClaims(TestHelper.GetOrganizationClaims(username1, new[] { organizationUser1 })) .SetCurrentPrincipal(); }); var result = NsbWebTest.Act(AssemblySetupFixture.WebTestContainer, c => c.GetInstance <IReportEventLogQueryService>() .SearchReportEventLog(new ReportEventLogSearchTerms())); result.Should().NotBeNull(); result.Items.Length.Should().Be(0); }
public void GetMyOrganizations_For_User_Should_Return_CorrectResult(OrganizationType organizationType) { var username = DataProvider.Get <string>(); var testParams = Endpoint.ArrangeOnSqlSession(AssemblySetupFixture.EndpointTestContainer, s => { var reportingFrequency = ReportingFrequency.Monthly; var organizations = IntegrationTestOrganizationHelper.SetupOrzanizations( stateReportingFrequency: reportingFrequency, zoneReportingFrequency: ReportingFrequency.Monthly); var state = organizations.First(o => o.Key == IntegrationTestOrganizationHelper.NswState).Value; var unit = organizations.First(o => o.Key == IntegrationTestOrganizationHelper.Footscray).Value; var organizationUser1 = new TestObjectBuilder <OrganizationUser>() .SetArgument(o => o.Username, username) .SetArgument(o => o.Organization, organizationType == OrganizationType.State? state : unit) .BuildAndPersist(s); new UserContextBuilder() .SetUsername(username) .AddClaims(TestHelper.GetOrganizationClaims(username, new[] { organizationUser1 })) .SetCurrentPrincipal(); return(new { state, unit }); }); var result = NsbWebTest.Act(AssemblySetupFixture.WebTestContainer, c => c.GetInstance <OrganizationQueryService>() .GetMyOrganizations()); var organizationId = organizationType == OrganizationType.State ? testParams.state.Id : testParams.unit.Id; result.Should().NotBeNull(); result.Where(o => o.Id == organizationId).Should().NotBeNull(); }
public ReportLastPeriodUpdateData Build() { var reportData = new TestObjectBuilder <ReportLastPeriodUpdateData>() .SetArgument(o => o.AssociateMemberReportData, _associateMemberReportData) .SetArgument(o => o.PreliminaryMemberReportData, _preliminaryMemberReportData) .SetArgument(o => o.SupporterMemberReportData, _supporterMemberReportData) .SetArgument(o => o.MemberMemberReportData, _memberMemberReportData) .SetArgument(o => o.BaitulMalFinanceReportData, _baitulMalFinanceReportData) .SetArgument(o => o.ADayMasjidProjectFinanceReportData, _aDayMasjidProjectFinanceReportData) .SetArgument(o => o.BaitulMalFinanceReportData, _baitulMalFinanceReportData) .SetArgument(o => o.ADayMasjidProjectFinanceReportData, _aDayMasjidProjectFinanceReportData) .SetArgument(o => o.MasjidTableBankFinanceReportData, _masjidTableBankFinanceReportData) .SetArgument(o => o.BookLibraryStockReportData, _bookLibraryStockReportData) .SetArgument(o => o.OtherLibraryStockReportData, _otherLibraryStockReportData) .SetArgument(o => o.VhsLibraryStockReportData, _vhsLibraryStockReportData) .Build(); return(reportData); }
public async Task Handle_UnitPlanCreated(ReportingFrequency reportingFrequency) { var now = DateTimeDbTestExtensions.SetUtcNowToRandomDate(); var testParams = Endpoint.ArrangeOnSqlSession(AssemblySetupFixture.EndpointTestContainer, s => { var username = DataProvider.Get <string>(); var organization = new TestObjectBuilder <Organization>() .SetArgument(o => o.OrganizationType, OrganizationType.Unit) .SetArgument(o => o.ReportingFrequency, reportingFrequency) .BuildAndPersist(s); var evt = Test.CreateInstance <IUnitPlanCreated>(x => { x.Username = username; x.Organization = organization; x.UnitReport = DataProvider.Get <EntityReference>(); x.SerializedData = DataProvider.Get <string>(); }); return(new { evt }); }); await Endpoint.Act <LogWhenReportEventReceived>(AssemblySetupFixture.EndpointTestContainer, (h, ctx) => h.Handle(testParams.evt, ctx)); Endpoint.AssertOnSqlSessionThat(AssemblySetupFixture.EndpointTestContainer, s => { var reportEventLog = s.Query <ReportEventLog>().Single(); reportEventLog.Should().NotBeNull(); reportEventLog.OrganizationId.Should().Be(testParams.evt.Organization.Id); reportEventLog.Timestamp.Should().Be(now); }); }
public FinanceData Build() { var financeData = new TestObjectBuilder <FinanceData>() .SetArgument(o => o.Action, _action) .SetArgument(o => o.WorkerPromiseIncreaseTarget, _workerPromiseIncreaseTarget) .SetArgument(o => o.OtherSourceAction, _otherSourceAction) .SetArgument(o => o.OtherSourceIncreaseTarget, _otherSourceIncreaseTarget) .SetArgument(o => o.LastPeriod, _lastPeriod) .SetArgument(o => o.Collection, _collection) .SetArgument(o => o.Expense, _expense) .SetArgument(o => o.NisabPaidToCentral, _nisabPaidToCentral) .SetArgument(o => o.WorkerPromiseLastPeriod, _workerPromiseLastPeriod) .SetArgument(o => o.WorkerPromiseIncreased, _workerPromiseIncreased) .SetArgument(o => o.WorkerPromiseDecreased, _workerPromiseDecreased) .SetArgument(o => o.Comment, _comment) .Build(); return(financeData); }
public async Task Handle_DeletesOrganizationUser() { var deletedByusername = DataProvider.Get <string>(); var username = DataProvider.Get <string>(); var role = DataProvider.Get <string>(); DateTimeDbTestExtensions.SetUtcNowToRandomDate(); var testParams = Endpoint.ArrangeOnSqlSession(AssemblySetupFixture.EndpointTestContainer, s => { var org = new OrganizationBuilder().BuildAndPersist(s); var organizationUser = new TestObjectBuilder <OrganizationUser>() .SetArgument(o => o.Username, username) .SetArgument(o => o.Role, role) .SetArgument(o => o.Organization, org) .BuildAndPersist(s); return(new { deletedByusername, cmd = new DeleteOrganizationUserCommand(organizationUser.Id) }); }); await Endpoint.Act <DeleteOrganizationUserCommandHandler>(AssemblySetupFixture.EndpointTestContainer, (h, ctx) => { ctx.SetUsernameOnHeader(testParams.deletedByusername); return(h.Handle(testParams.cmd, ctx)); }); Endpoint.AssertOnSqlSessionThat(AssemblySetupFixture.EndpointTestContainer, s => { var report = s.Get <OrganizationUser>(testParams.cmd.OrganizationUserId); report.Should().BeNull(); }); }
public void UpdateRooms_WhenRoomsExist_RoomsUpdated() { //a var newRoom = TestObjectBuilder.CreateMany <Room>(3).ToArray(); //var t1 = _roomRepository.Context.ChangeTracker.Entries().Count(); var createdRooms = _roomRepository.CreateRooms(newRoom).ToArray(); //var t2 = _roomRepository.Context.ChangeTracker.Entries().Count(); var updatedRooms = TestObjectBuilder.UpdateMany <Room>(100, createdRooms).ToArray(); //a //var t3 = _roomRepository.Context.ChangeTracker.Entries().Count(); _roomRepository.UpdateRooms(updatedRooms); //var t4 = _roomRepository.Context.ChangeTracker.Entries().Count(); //a //var t5 = _roomRepository.Context.ChangeTracker.Entries().Count(); var receivedRooms = _roomRepository.ReadRooms(createdRooms.Select(x => x.Id).ToArray()).ToArray(); //var t6 = _roomRepository.Context.ChangeTracker.Entries().Count(); _roomRepository.DeleteRooms(createdRooms.Select(x => new Room { Id = x.Id }).ToArray()); Xunit.Assert.Equal(updatedRooms, receivedRooms); }
public void SearchOrganizationUser_Should_Return_Result() { var username = DataProvider.Get <string>(); var testParams = Endpoint.ArrangeOnSqlSession(AssemblySetupFixture.EndpointTestContainer, s => { EntityReference organization1 = new OrganizationBuilder().BuildAndPersist(s); EntityReference organization2 = new OrganizationBuilder().BuildAndPersist(s); var organizationUser1 = new TestObjectBuilder <OrganizationUser>() .SetArgument(o => o.Username, username) .SetArgument(o => o.Organization, organization1) .BuildAndPersist(s); new TestObjectBuilder <OrganizationUser>() .SetArgument(o => o.Username, username) .SetArgument(o => o.Organization, organization2) .BuildAndPersist(s); new UserContextBuilder() .SetUsername(username) .AddClaims(TestHelper.GetOrganizationClaims(username, new [] { organizationUser1 })) .SetCurrentPrincipal(); return(new { organizationUser1 }); }); var result = NsbWebTest.Act(AssemblySetupFixture.WebTestContainer, c => c.GetInstance <IOrganizationUserQueryService>() .SearchOrganizationUser(new OrganizationUserSearchTerms())); result.Should().NotBeNull(); result.Items.Length.Should().Be(1); result.Items[0].Role.Should().Be(testParams.organizationUser1.Role); result.Items[0].Organization.Should().Be(testParams.organizationUser1.Organization); }
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.Unit) .SetReportingFreQuency(reportingFrequency) .BuildAndPersist(s); var report = new UnitReportBuilder() .SetOrganization(organization) .SetReportingPeriod(new ReportingPeriod(reportingFrequency, reportingTerm, year)) .BuildAndPersist(s); var associateMemberData = new TestObjectBuilder <MemberData>() .Build(); var preliminaryMemberData = new TestObjectBuilder <MemberData>() .Build(); var workerMeetingProgramData = new TestObjectBuilder <MeetingProgramData>() .Build(); var supporterMemberData = new TestObjectBuilder <MemberData>() .Build(); var memberMemberData = new TestObjectBuilder <MemberData>() .Build(); PlanData planData = new ReportDataBuilder() .SetAssociateMemberData(associateMemberData) .SetPreliminaryMemberData(preliminaryMemberData) .SetWorkerMeetingProgramData(workerMeetingProgramData) .SetSupporterMemberData(supporterMemberData) .SetMemberMemberData(memberMemberData) .Build(); EntityReference reportRef = report; var expectedEvt = Test.CreateInstance <IUnitPlanUpdated>(e => { e.Organization = organization; e.Username = username; e.UnitReport = reportRef; }); return(new { Cmd = new UpdateUnitPlanCommand(report.Id, planData), Organization = organization, Report = report, username, expectedEvt }); }); var context = await Endpoint.Act <UpdateUnitPlanCommandHandler>(AssemblySetupFixture.EndpointTestContainer, (h, ctx) => { ctx.SetUsernameOnHeader(testParams.username); return(h.Handle(testParams.Cmd, ctx)); }); var evt = context.ExpectPublish <IUnitPlanUpdated>(); 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) ); ReportData reportData = unitReport; PlanData planData = reportData; planData.Should().BeEquivalentTo(testParams.Cmd.PlanData); evt.Should().BeEquivalentTo(testParams.expectedEvt, e => e.Excluding(p => p.SerializedData)); evt.SerializedData.Should().NotBe(null); }); }
public void GetReportingPeriodsToCreatePlan_For_User_Should_Return_CorrectResult(OrganizationType organizationType) { DateTimeDbTestExtensions.SetLocalNowToRandomDate(); var username = DataProvider.Get <string>(); var testParams = Endpoint.ArrangeOnSqlSession(AssemblySetupFixture.EndpointTestContainer, s => { var organizations = IntegrationTestOrganizationHelper.SetupOrzanizations(); var central = organizations.First(o => o.Key == IntegrationTestOrganizationHelper.Central).Value; var state = organizations.First(o => o.Key == IntegrationTestOrganizationHelper.NswState).Value; var zone = organizations.First(o => o.Key == IntegrationTestOrganizationHelper.NswZoneOne).Value; var unit = organizations.First(o => o.Key == IntegrationTestOrganizationHelper.Footscray).Value; EntityReference sut = null; switch (organizationType) { case OrganizationType.Central: sut = central; break; case OrganizationType.State: sut = state; break; case OrganizationType.Zone: sut = zone; break; default: sut = unit; break; } var organizationUser1 = new TestObjectBuilder <OrganizationUser>() .SetArgument(o => o.Username, username) .SetArgument(o => o.Organization, sut) .BuildAndPersist(s); new UserContextBuilder() .SetUsername(username) .AddClaims(TestHelper.GetOrganizationClaims(username, new[] { organizationUser1 })) .SetCurrentPrincipal(); return(new { sut }); }); var result = NsbWebTest.Act(AssemblySetupFixture.WebTestContainer, c => { return(c.GetInstance <OrganizationQueryService>() .GetReportingPeriods(testParams.sut.Id)); }); if (organizationType == OrganizationType.Unit) { result.Length.Should().Be(36); var activeReportPeriod = result.Single(o => o.IsActive); activeReportPeriod.Should().NotBeNull(); } else { result.Length.Should().Be(20); var activeAnnualReportPeriod = result.Single(o => o.IsActive && o.ReportingFrequency == ReportingFrequency.Yearly); activeAnnualReportPeriod.Should().NotBeNull(); var activeQuarterlyReportPeriod = result.Single(o => o.IsActive && o.ReportingFrequency == ReportingFrequency.Quarterly); activeQuarterlyReportPeriod.Should().NotBeNull(); } }
public void PromotePlanToUnitReportAi_SavesCorrectlyWhenLastYearSubmitted(ReportingFrequency reportingFrequency) { DateTimeDbTestExtensions.SetUtcNowToRandomDate(); var testParams = Endpoint.ArrangeOnSqlSession(AssemblySetupFixture.EndpointTestContainer, s => { var organizationType = OrganizationType.Unit; var description = DataProvider.Get <string>(); var year = 2019; var reportingTerm = ReportingTerm.One; var organization = new TestObjectBuilder <Organization>() .SetArgument(o => o.OrganizationType, organizationType) .SetArgument(o => o.ReportingFrequency, reportingFrequency) .BuildAndPersist(s); var period1 = new ReportingPeriod(reportingFrequency, reportingTerm, year); var period1ReportingData = new ReportDataBuilder().Build(); var period1UnitReport = new UnitReport(description, organization, period1, period1ReportingData); s.Save(period1UnitReport); var lastPeriod2 = period1.GetReportingPeriodOfPreviousTerm(); var lastPeriod2ReportingData = new ReportDataBuilder().Build(); var lastPeriod2UnitReport = new UnitReport(description, organization, lastPeriod2, lastPeriod2ReportingData); lastPeriod2UnitReport.MarkStatusAsSubmitted(); s.Save(lastPeriod2UnitReport); return(new { period1UnitReport, lastPeriod2UnitReport }); }); var result = Endpoint.Act(AssemblySetupFixture.EndpointTestContainer, c => { var unitReport = c.GetInstance <UnitReportService>() .PromotePlanToUnitReportAi(testParams.period1UnitReport.Id); return(new { unitReport }); }); result.unitReport.Should().NotBeNull(); result.unitReport.Should().BeEquivalentTo(testParams.period1UnitReport, e => e.Excluding(p => p.ReportStatus) .Excluding(p => p.AssociateMemberData) .Excluding(p => p.PreliminaryMemberData) .Excluding(p => p.WorkerMeetingProgramData)); result.unitReport.ReportStatus.Should().Be(ReportStatus.PlanPromoted); result.unitReport.AssociateMemberData.UpgradeTarget.Should() .Be(testParams.period1UnitReport.AssociateMemberData.UpgradeTarget); result.unitReport.AssociateMemberData.LastPeriod.Should() .Be(testParams.period1UnitReport.AssociateMemberData.LastPeriod); result.unitReport.AssociateMemberData.ThisPeriod.Should() .Be(testParams.lastPeriod2UnitReport.AssociateMemberData.ThisPeriod); result.unitReport.PreliminaryMemberData.UpgradeTarget.Should() .Be(testParams.period1UnitReport.PreliminaryMemberData.UpgradeTarget); result.unitReport.PreliminaryMemberData.LastPeriod.Should() .Be(testParams.period1UnitReport.PreliminaryMemberData.LastPeriod); result.unitReport.PreliminaryMemberData.ThisPeriod.Should() .Be(testParams.lastPeriod2UnitReport.PreliminaryMemberData.ThisPeriod); //Worker meeting values should be initial values. Should not set last period values (as that will be irrelevant) result.unitReport.WorkerMeetingProgramData.Target.Should() .Be(testParams.period1UnitReport.WorkerMeetingProgramData.Target); result.unitReport.WorkerMeetingProgramData.Actual.Should() .Be(testParams.period1UnitReport.WorkerMeetingProgramData.Actual); result.unitReport.WorkerMeetingProgramData.AverageAttendance.Should() .Be(testParams.period1UnitReport.WorkerMeetingProgramData.AverageAttendance); }
public ReportData Build() { var reportData = new TestObjectBuilder <ReportData>() .SetArgument(o => o.MemberMemberData, _memberMemberData) .SetArgument(o => o.AssociateMemberData, _associateMemberData) .SetArgument(o => o.PreliminaryMemberData, _preliminaryMemberData) .SetArgument(o => o.WorkerMeetingProgramData, _workerMeetingProgramData) .SetArgument(o => o.SupporterMemberData, _supporterMemberData) .SetArgument(o => o.DawahMeetingProgramData, _dawahMeetingProgramData) .SetArgument(o => o.StateLeaderMeetingProgramData, _stateLeaderMeetingProgramData) .SetArgument(o => o.StateOutingMeetingProgramData, _stateOutingMeetingProgramData) .SetArgument(o => o.IftarMeetingProgramData, _iftarMeetingProgramData) .SetArgument(o => o.LearningMeetingProgramData, _learningMeetingProgramData) .SetArgument(o => o.SocialDawahMeetingProgramData, _socialDawahMeetingProgramData) .SetArgument(o => o.DawahGroupMeetingProgramData, _dawahGroupMeetingProgramData) .SetArgument(o => o.NextGMeetingProgramData, _nextGMeetingProgramData) .SetArgument(o => o.CmsMeetingProgramData, _cmsMeetingProgramData) .SetArgument(o => o.SmMeetingProgramData, _smMeetingProgramData) .SetArgument(o => o.MemberMeetingProgramData, _memberMeetingProgramData) .SetArgument(o => o.TafsirMeetingProgramData, _tafsirMeetingProgramData) .SetArgument(o => o.UnitMeetingProgramData, _unitMeetingProgramData) .SetArgument(o => o.FamilyVisitMeetingProgramData, _familyVisitMeetingProgramData) .SetArgument(o => o.EidReunionMeetingProgramData, _eidReunionMeetingProgramData) .SetArgument(o => o.BbqMeetingProgramData, _bbqMeetingProgramData) .SetArgument(o => o.GatheringMeetingProgramData, _gatheringMeetingProgramData) .SetArgument(o => o.OtherMeetingProgramData, _otherMeetingProgramData) .SetArgument(o => o.BaitulMalFinanceData, _baitulMalFinanceData) .SetArgument(o => o.ADayMasjidProjectFinanceData, _aDayMasjidProjectFinanceData) .SetArgument(o => o.MasjidTableBankFinanceData, _masjidTableBankFinanceData) .SetArgument(o => o.QardeHasanaSocialWelfareData, _qardeHasanaSocialWelfareData) .SetArgument(o => o.PatientVisitSocialWelfareData, _patientVisitSocialWelfareData) .SetArgument(o => o.SocialVisitSocialWelfareData, _socialVisitSocialWelfareData) .SetArgument(o => o.TransportSocialWelfareData, _transportSocialWelfareData) .SetArgument(o => o.ShiftingSocialWelfareData, _shiftingSocialWelfareData) .SetArgument(o => o.ShoppingSocialWelfareData, _shoppingSocialWelfareData) .SetArgument(o => o.FoodDistributionSocialWelfareData, _foodDistributionSocialWelfareData) .SetArgument(o => o.CleanUpAustraliaSocialWelfareData, _cleanUpAustraliaSocialWelfareData) .SetArgument(o => o.OtherSocialWelfareData, _otherSocialWelfareData) .SetArgument(o => o.BookSaleMaterialData, _bookSaleMaterialData) .SetArgument(o => o.BookDistributionMaterialData, _bookDistributionMaterialData) .SetArgument(o => o.BookLibraryStockData, _bookLibraryStockData) .SetArgument(o => o.OtherSaleMaterialData, _otherSaleMaterialData) .SetArgument(o => o.OtherDistributionMaterialData, _otherDistributionMaterialData) .SetArgument(o => o.OtherLibraryStockData, _otherLibraryStockData) .SetArgument(o => o.VhsSaleMaterialData, _vhsSaleMaterialData) .SetArgument(o => o.VhsDistributionMaterialData, _vhsDistributionMaterialData) .SetArgument(o => o.VhsLibraryStockData, _vhsLibraryStockData) .SetArgument(o => o.EmailDistributionMaterialData, _emailDistributionMaterialData) .SetArgument(o => o.IpdcLeafletDistributionMaterialData, _ipdcLeafletDistributionMaterialData) .SetArgument(o => o.GroupStudyTeachingLearningProgramData, _groupStudyTeachingLearningProgramData) .SetArgument(o => o.StudyCircleTeachingLearningProgramData, _studyCircleTeachingLearningProgramData) .SetArgument(o => o.PracticeDarsTeachingLearningProgramData, _practiceDarsTeachingLearningProgramData) .SetArgument(o => o.StateLearningCampTeachingLearningProgramData, _stateLearningCampTeachingLearningProgramData) .SetArgument(o => o.QuranStudyTeachingLearningProgramData, _quranStudyTeachingLearningProgramData) .SetArgument(o => o.QuranClassTeachingLearningProgramData, _quranClassTeachingLearningProgramData) .SetArgument(o => o.MemorizingAyatTeachingLearningProgramData, _memorizingAyatTeachingLearningProgramData) .SetArgument(o => o.StateLearningSessionTeachingLearningProgramData, _stateLearningSessionTeachingLearningProgramData) .SetArgument(o => o.StateQiyamulLailTeachingLearningProgramData, _stateQiyamulLailTeachingLearningProgramData) .SetArgument(o => o.StudyCircleForAssociateMemberTeachingLearningProgramData, _studyCircleForAssociateMemberTeachingLearningProgramData) .SetArgument(o => o.HadithTeachingLearningProgramData, _hadithTeachingLearningProgramData) .SetArgument(o => o.WeekendIslamicSchoolTeachingLearningProgramData, _weekendIslamicSchoolTeachingLearningProgramData) .SetArgument(o => o.MemorizingHadithTeachingLearningProgramData, _memorizingHadithTeachingLearningProgramData) .SetArgument(o => o.MemorizingDoaTeachingLearningProgramData, _memorizingDoaTeachingLearningProgramData) .SetArgument(o => o.OtherTeachingLearningProgramData, _otherTeachingLearningProgramData) .SetArgument(o => o.Comment, _comment) .Build(); return(reportData); }
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_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_SavesZoneReport(ReportingFrequency reportingFrequency, ReportingFrequency differentFrequency) { DateTimeDbTestExtensions.SetUtcNowToRandomDate(); var testParams = Endpoint.ArrangeOnSqlSession(AssemblySetupFixture.EndpointTestContainer, s => { var username = DataProvider.Get <string>(); var year = 2019; var reportingTerm = ReportingTerm.One; var organization = new TestObjectBuilder <Organization>() .SetArgument(o => o.OrganizationType, OrganizationType.Zone) .SetArgument(o => o.ReportingFrequency, reportingFrequency) .BuildAndPersist(s); var existing = new ZoneReportBuilder() .SetDescription(DataProvider.Get <string>()) .SetOrganization(organization) .SetReportingPeriod(new ReportingPeriod(reportingFrequency, reportingTerm, year)) .BuildAndPersist(s); var newReportYear = year + 1; new ZoneReportBuilder() .SetDescription(DataProvider.Get <string>()) .SetOrganization(organization) .SetReportingPeriod(new ReportingPeriod(differentFrequency, reportingTerm, newReportYear)) .BuildAndPersist(s); var cmd = new CopyZonePlanCommand(existing.Id, organization, newReportYear, reportingTerm, reportingFrequency); var description = cmd.Description; var lastPeriodData = Calculator.GetLastPeriodUpdateData(existing); var expected = new ZoneReportBuilder() .SetDescription(description) .SetOrganization(organization) .SetReportingPeriod(new ReportingPeriod(reportingFrequency, reportingTerm, newReportYear)) .SetReportData(existing) .Build(); expected.Update(lastPeriodData); return(new { cmd, username, expected }); }); var context = await Endpoint.Act <CopyZonePlanCommandHandler>(AssemblySetupFixture.EndpointTestContainer, (h, ctx) => { ctx.SetUsernameOnHeader(testParams.username); return(h.Handle(testParams.cmd, ctx)); }); var evt = context.ExpectPublish <IZonePlanCopied>(); Endpoint.AssertOnSqlSessionThat(AssemblySetupFixture.EndpointTestContainer, s => { var report = s.Query <ZoneReport>().OrderByDescending(o => o.Id).First(); report.Should().NotBeNull(); report.Should().BeEquivalentTo(testParams.expected, e => e.Excluding(p => p.Id) .Excluding(p => p.ReportingPeriod) .Excluding(p => p.ReportStatus)); EntityReference reportRef = report; var expectedEvt = Test.CreateInstance <IZonePlanCopied>(e => { e.Organization = testParams.expected.Organization; e.Username = testParams.username; e.ZoneReport = reportRef; }); evt.Should().BeEquivalentTo(expectedEvt, e => e.Excluding(p => p.SerializedData)); evt.SerializedData.Should().NotBe(null); }); }
public void CreateNewUnitPlanAi_SavesCorrectlyWhenLastYearSubmitted(ReportingFrequency reportingFrequency) { DateTimeDbTestExtensions.SetUtcNowToRandomDate(); var testParams = Endpoint.ArrangeOnSqlSession(AssemblySetupFixture.EndpointTestContainer, s => { var organizationType = OrganizationType.Unit; var description = DataProvider.Get <string>(); var year = 2019; var reportingTerm = ReportingTerm.One; var organization = new TestObjectBuilder <Organization>() .SetArgument(o => o.OrganizationType, organizationType) .SetArgument(o => o.ReportingFrequency, reportingFrequency) .BuildAndPersist(s); OrganizationReference organizationRef = organization; var reportingPeriod = new ReportingPeriod(reportingFrequency, reportingTerm, year); var lastPeriod1 = reportingPeriod.GetReportingPeriodOfPreviousTerm(); var lastPeriod1ReportingData = new ReportDataBuilder().Build(); var lastPeriod1UnitReport = new UnitReport(description, organization, lastPeriod1, lastPeriod1ReportingData); lastPeriod1UnitReport.MarkStatusAsSubmitted(); s.Save(lastPeriod1UnitReport); var lastPeriod2 = lastPeriod1.GetReportingPeriodOfPreviousTerm(); var lastPeriod2ReportingData = new ReportDataBuilder().Build(); var lastPeriod2UnitReport = new UnitReport(description, organization, lastPeriod2, lastPeriod2ReportingData); lastPeriod2UnitReport.MarkStatusAsSubmitted(); s.Save(lastPeriod2UnitReport); var expected = new UnitReportBuilder() .SetDescription(description) .SetOrganization(organization) .SetReportingPeriod(new ReportingPeriod(reportingFrequency, reportingTerm, year)) .Build(); return(new { description, organizationRef, reportingPeriod, lastPeriod1UnitReport, expected }); }); var result = Endpoint.Act(AssemblySetupFixture.EndpointTestContainer, c => { var unitReport = c.GetInstance <UnitReportFactory>() .CreateNewUnitPlanAi(testParams.description, testParams.organizationRef, testParams.reportingPeriod.ReportingTerm, testParams.reportingPeriod.Year, reportingFrequency); return(new { unitReport }); }); result.unitReport.Should().NotBeNull(); result.unitReport.Should().BeEquivalentTo(testParams.expected, e => e.Excluding(p => p.Id) .Excluding(p => p.AssociateMemberData) .Excluding(p => p.PreliminaryMemberData) .Excluding(p => p.WorkerMeetingProgramData) .Excluding(p => p.SupporterMemberData) .Excluding(p => p.DawahMeetingProgramData) .Excluding(p => p.MemberMemberData)); TestHelper.MemberDataForCreateUnitPlanShouldBeEquivalent(result.unitReport.AssociateMemberData, testParams.lastPeriod1UnitReport.AssociateMemberData); TestHelper.MemberDataForCreateUnitPlanShouldBeEquivalent(result.unitReport.PreliminaryMemberData, testParams.lastPeriod1UnitReport.PreliminaryMemberData); result.unitReport.PreliminaryMemberData.Should().BeEquivalentTo(testParams.lastPeriod1UnitReport.WorkerMeetingProgramData); }