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>();
        }
Пример #2
0
        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;
        }