Esempio n. 1
0
        public async Task <IActionResult> CreateShortlistForUser(CreateShortListRequest shortlistRequest)
        {
            try
            {
                var result = await _mediator.Send(new CreateShortlistForUserCommand
                {
                    Lat   = shortlistRequest.Lat,
                    Lon   = shortlistRequest.Lon,
                    Ukprn = shortlistRequest.Ukprn,
                    LocationDescription = shortlistRequest.LocationDescription,
                    StandardId          = shortlistRequest.StandardId,
                    ShortlistUserId     = shortlistRequest.ShortlistUserId
                });

                return(Created("", result));
            }
            catch (HttpRequestContentException e)
            {
                return(StatusCode((int)e.StatusCode, e.ErrorContent));
            }
            catch (Exception e)
            {
                _logger.LogError(e, "Error creating shortlist item");
                return(BadRequest());
            }
        }
        public async Task Then_If_There_Is_An_Error_A_Bad_Request_Is_Returned(
            CreateShortListRequest shortlistRequest,
            [Frozen] Mock <IMediator> mockMediator,
            [Greedy] ShortlistController controller)
        {
            mockMediator
            .Setup(mediator => mediator.Send(
                       It.IsAny <CreateShortlistForUserCommand>(),
                       It.IsAny <CancellationToken>())).ThrowsAsync(new Exception());

            var controllerResult = await controller.CreateShortlistForUser(shortlistRequest) as StatusCodeResult;

            controllerResult !.StatusCode.Should().Be((int)HttpStatusCode.BadRequest);
        }
        public async Task Then_If_There_Is_A_HttpException_It_Is_Returned(
            string errorContent,
            CreateShortListRequest shortlistRequest,
            [Frozen] Mock <IMediator> mockMediator,
            [Greedy] ShortlistController controller)
        {
            mockMediator
            .Setup(mediator => mediator.Send(
                       It.IsAny <CreateShortlistForUserCommand>(),
                       It.IsAny <CancellationToken>()))
            .ThrowsAsync(new HttpRequestContentException("Error", HttpStatusCode.BadRequest, errorContent));

            var controllerResult = await controller.CreateShortlistForUser(shortlistRequest) as ObjectResult;

            controllerResult !.StatusCode.Should().Be((int)HttpStatusCode.BadRequest);
            controllerResult.Value.Should().Be(errorContent);
        }
        public async Task Then_Creates_Shortlist_From_Mediator_Command(
            Guid returnId,
            CreateShortListRequest shortlistRequest,
            [Frozen] Mock <IMediator> mockMediator,
            [Greedy] ShortlistController controller)
        {
            mockMediator
            .Setup(mediator => mediator.Send(
                       It.Is <CreateShortlistForUserCommand>(command =>
                                                             command.ShortlistUserId == shortlistRequest.ShortlistUserId &&
                                                             command.Lat.Equals(shortlistRequest.Lat) &&
                                                             command.Lon.Equals(shortlistRequest.Lon) &&
                                                             command.Ukprn.Equals(shortlistRequest.Ukprn) &&
                                                             command.LocationDescription.Equals(shortlistRequest.LocationDescription) &&
                                                             command.StandardId.Equals(shortlistRequest.StandardId)
                                                             ),
                       It.IsAny <CancellationToken>())).ReturnsAsync((returnId));

            var controllerResult = await controller.CreateShortlistForUser(shortlistRequest) as CreatedResult;

            controllerResult !.StatusCode.Should().Be((int)HttpStatusCode.Created);
            controllerResult.Value.Should().Be(returnId);
        }