public async Task <IHttpActionResult> MakeCentralPlan2( OrganizationReference organization, int year, ReportingTerm reportingTerm, ReportingFrequency reportingFrequency) { try { if (!_userContext.CurrentUserIsSystemUser()) { return(Unauthorized()); } if (organization == null) { throw new ArgumentNullException(nameof(organization)); } if (!_userContext.CurrentUserCanAccess(organization.Id)) { return(Unauthorized()); } var cmd = new CreateCentralPlanCommand(organization, year, reportingTerm, reportingFrequency); await _endpointInstance().SendWithSignalRMetaData(cmd, Request); return(this.Accepted()); } catch (Exception ex) { _log.Error(ex); return(InternalServerError()); } }
public async Task Handle_SavesCentralReport(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.Central) .SetArgument(o => o.ReportingFrequency, reportingFrequency) .BuildAndPersist(s); var cmd = new CreateCentralPlanCommand(organization, year, reportingTerm, reportingFrequency); var description = cmd.Description; var expected = new CentralReportBuilder() .SetDescription(description) .SetOrganization(organization) .SetReportingPeriod(new ReportingPeriod(reportingFrequency, reportingTerm, year)) .Build(); return(new { Cmd = cmd, Organization = organization, username, expected }); }); var context = await Endpoint.Act <CreateCentralPlanCommandHandler>( AssemblySetupFixture.EndpointTestContainer, (h, ctx) => { ctx.SetUsernameOnHeader(testParams.username); return(h.Handle(testParams.Cmd, ctx)); }); var evt = context.ExpectPublish <ICentralPlanCreated>(); Endpoint.AssertOnSqlSessionThat(AssemblySetupFixture.EndpointTestContainer, s => { var report = s.Query <CentralReport>().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 <ICentralPlanCreated>(e => { e.Organization = testParams.expected.Organization; e.Username = testParams.username; e.CentralReport = reportRef; }); evt.Should().BeEquivalentTo(expectedEvt, e => e.Excluding(p => p.SerializedData)); evt.SerializedData.Should().NotBe(null); }); }