示例#1
0
        public async Task And_TransferDetailsForSender_Succeeds_Then_Api_Called_To_Update(
            Mock <ICommitmentsApiClient> mockCommitmentsApiClient,
            Mock <ILogger <TransferRequestController> > mockLogger,
            UpdateTransferApprovalForSenderRequest request,
            TransferRequestForSenderViewModel viewModel,
            [Frozen] Mock <IModelMapper> mockMapper)
        {
            mockMapper
            .Setup(mapper => mapper.Map <UpdateTransferApprovalForSenderRequest>(viewModel))
            .ReturnsAsync(request);

            mockCommitmentsApiClient
            .Setup(r => r.UpdateTransferRequestForSender(
                       It.IsAny <long>(),
                       It.IsAny <long>(),
                       It.IsAny <long>(),
                       It.IsAny <UpdateTransferApprovalForSenderRequest>(),
                       It.IsAny <CancellationToken>()))
            .Returns(Task.CompletedTask);

            TransferRequestController controller = new TransferRequestController(mockCommitmentsApiClient.Object,
                                                                                 mockLogger.Object, mockMapper.Object);

            var result = (await controller.TransferDetailsForSender(viewModel)) as RedirectToActionResult;

            mockCommitmentsApiClient.Verify(m => m.UpdateTransferRequestForSender(
                                                It.IsAny <long>(),
                                                It.IsAny <long>(),
                                                It.IsAny <long>(),
                                                It.IsAny <UpdateTransferApprovalForSenderRequest>(),
                                                It.IsAny <CancellationToken>()), Times.Once);
        }
示例#2
0
        public async Task And_TransferDetailsForSender_Fails_Then_Redirect_To_Error(
            TransferRequestForSenderViewModel viewModel,
            [Frozen] Mock <IModelMapper> mockMapper,
            [Greedy] TransferRequestController controller)
        {
            mockMapper
            .Setup(mapper => mapper.Map <UpdateTransferApprovalForSenderRequest>(viewModel))
            .ThrowsAsync(new Exception("Some error"));

            var result = (await controller.TransferDetailsForSender(viewModel)) as RedirectToActionResult;

            result.Should().NotBeNull();
            result.ActionName.Should().Be("Error");
            result.ControllerName.Should().Be("Error");
            result.RouteValues.Should().BeNull();
        }
示例#3
0
        public async Task And_TransferDetailsForSender_Succeeds_Then_Redirect_To_Confirmation(
            UpdateTransferApprovalForSenderRequest request,
            TransferRequestForSenderViewModel viewModel,
            [Frozen] Mock <IModelMapper> mockMapper,
            [Greedy] TransferRequestController controller)
        {
            mockMapper
            .Setup(mapper => mapper.Map <UpdateTransferApprovalForSenderRequest>(viewModel))
            .ReturnsAsync(request);

            var result = (await controller.TransferDetailsForSender(viewModel)) as RedirectToActionResult;

            result.Should().NotBeNull();
            result.ActionName.Should().Be("TransferConfirmation");
            result.ControllerName.Should().Be("TransferRequest");
        }
示例#4
0
        public async Task Then_Returns_View_With_Correct_Model(
            TransferRequestRequest request,
            TransferRequestForSenderViewModel viewModel,
            [Frozen] Mock <IModelMapper> mockMapper,
            [Greedy] TransferRequestController controller)
        {
            mockMapper
            .Setup(mapper => mapper.Map <TransferRequestForSenderViewModel>(request))
            .ReturnsAsync(viewModel);

            var result = await controller.TransferDetailsForSender(request) as ViewResult;

            result.ViewName.Should().BeNull();
            var model = result.Model as TransferRequestForSenderViewModel;

            model.Should().BeSameAs(viewModel);
        }
示例#5
0
        public async Task <IActionResult> TransferDetailsForSender(TransferRequestForSenderViewModel viewModel)
        {
            _logger.LogInformation($"Updating TransferRequest, Account: {viewModel.TransferSenderHashedAccountId}, CohortReference: {viewModel.HashedCohortReference}");

            try
            {
                var request = await _modelMapper.Map <UpdateTransferApprovalForSenderRequest>(viewModel);

                await _commitmentsApiClient.UpdateTransferRequestForSender(request.TransferSenderId, request.TransferRequestId, request.CohortId, request);

                return(RedirectToAction(nameof(TransferRequestController.TransferConfirmation), nameof(TransferRequestController).ControllerName(), new { viewModel.AccountHashedId, viewModel.TransferRequestHashedId }));
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, "Failed to update transfer request");
            }

            return(RedirectToAction("Error", "Error"));
        }