public async void PutOutstandingCaseItems_When_Called_With_No_Case_Id_Returns_Bad_Request() { // Arrange var logger = new Mock <IAsyncQueryHandler <CreateMELoggerQuery, LogMessageActionDefault> >(); var mapper = new Mock <IMapper>(); var usersRetrievalByOktaIdService = new Mock <IAsyncQueryHandler <UserRetrievalByOktaIdQuery, MeUser> >(); var closeCaseService = new Mock <IAsyncQueryHandler <CloseCaseQuery, string> >(); var coronerReferralService = new Mock <IAsyncQueryHandler <CoronerReferralQuery, string> >(); var examinationRetrievalService = new Mock <IAsyncQueryHandler <ExaminationRetrievalQuery, Examination> >(); var saveOutstandingCaseItems = new Mock <IAsyncQueryHandler <SaveOutstandingCaseItemsQuery, string> >(); var confirmationOfScrutinyService = new Mock <IAsyncQueryHandler <ConfirmationOfScrutinyQuery, Examination> >(); var voidCaseService = new Mock <IAsyncQueryHandler <VoidCaseQuery, Examination> >(); var sut = new CaseOutcomeController( logger.Object, mapper.Object, coronerReferralService.Object, closeCaseService.Object, examinationRetrievalService.Object, saveOutstandingCaseItems.Object, confirmationOfScrutinyService.Object, usersRetrievalByOktaIdService.Object, voidCaseService.Object, AuthorizationServiceMock.Object, PermissionServiceMock.Object); sut.ControllerContext = GetControllerContext(); var putOutstandingCaseItemsRequest = new PutOutstandingCaseItemsRequest { MccdIssued = true, CremationFormStatus = CremationFormStatus.Yes, GpNotifiedStatus = GPNotified.GPNotified }; // Act var response = await sut.PutOutstandingCaseItems(string.Empty, putOutstandingCaseItemsRequest); // Assert response.Should().BeAssignableTo <BadRequestObjectResult>(); }
public async Task <ActionResult> PutOutstandingCaseItems( string examinationId, [FromBody] PutOutstandingCaseItemsRequest putOutstandingCaseItemsRequest) { if (string.IsNullOrEmpty(examinationId)) { return(new BadRequestObjectResult(nameof(examinationId))); } if (!Guid.TryParse(examinationId, out _)) { return(new BadRequestObjectResult(nameof(examinationId))); } var user = await CurrentUser(); var examination = await _examinationRetrievalService.Handle(new ExaminationRetrievalQuery(examinationId, user)); if (examination == null) { return(new NotFoundResult()); } if (!CanAsync(Permission.UpdateExamination, examination)) { return(Forbid()); } if (!examination.ScrutinyConfirmed) { return(new BadRequestObjectResult("Scrutiny has not yet been confirmed.")); } var caseOutcome = Mapper.Map <CaseOutcome>(putOutstandingCaseItemsRequest); await _saveOutstandingCaseItemsService.Handle(new SaveOutstandingCaseItemsQuery(examinationId, caseOutcome, user)); return(Ok()); }
public async void PutOutstandingCaseItems_When_Called_With_Valid_Examination_Id_Returns_Ok() { // Arrange var logger = new Mock <IAsyncQueryHandler <CreateMELoggerQuery, LogMessageActionDefault> >(); var mapper = new Mock <IMapper>(); var examination = new Examination { ExaminationId = Guid.NewGuid().ToString(), ScrutinyConfirmed = true }; var mockMeUser = new Mock <MeUser>(); var usersRetrievalByOktaIdService = new Mock <IAsyncQueryHandler <UserRetrievalByOktaIdQuery, MeUser> >(); usersRetrievalByOktaIdService.Setup(service => service.Handle(It.IsAny <UserRetrievalByOktaIdQuery>())) .Returns(Task.FromResult(mockMeUser.Object)); var closeCaseService = new Mock <IAsyncQueryHandler <CloseCaseQuery, string> >(); closeCaseService.Setup(service => service.Handle(It.IsAny <CloseCaseQuery>())) .Returns(Task.FromResult("test")).Verifiable(); var coronerReferralService = new Mock <IAsyncQueryHandler <CoronerReferralQuery, string> >(); var saveOutstandingCaseItems = new Mock <IAsyncQueryHandler <SaveOutstandingCaseItemsQuery, string> >(); var examinationRetrievalService = new Mock <IAsyncQueryHandler <ExaminationRetrievalQuery, Examination> >(); examinationRetrievalService.Setup(service => service.Handle(It.IsAny <ExaminationRetrievalQuery>())) .Returns(Task.FromResult(examination)).Verifiable(); var confirmationOfScrutinyService = new Mock <IAsyncQueryHandler <ConfirmationOfScrutinyQuery, Examination> >(); var voidCaseService = new Mock <IAsyncQueryHandler <VoidCaseQuery, Examination> >(); var sut = new CaseOutcomeController( logger.Object, mapper.Object, coronerReferralService.Object, closeCaseService.Object, examinationRetrievalService.Object, saveOutstandingCaseItems.Object, confirmationOfScrutinyService.Object, usersRetrievalByOktaIdService.Object, voidCaseService.Object, AuthorizationServiceMock.Object, PermissionServiceMock.Object); sut.ControllerContext = GetControllerContext(); var putOutstandingCaseItemsRequest = new PutOutstandingCaseItemsRequest { MccdIssued = true, CremationFormStatus = CremationFormStatus.Yes, GpNotifiedStatus = GPNotified.GPNotified }; // Act var response = await sut.PutOutstandingCaseItems(examination.ExaminationId, putOutstandingCaseItemsRequest); // Assert var okResult = response.Should().BeAssignableTo <OkResult>().Subject; }