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); }
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(); }
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"); }
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); }
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")); }