public async Task Amount_Is_Greater_Than_Zero_Pledge_Is_Credited(int amount) { var command = _fixture .Build <CreditPledgeCommand>() .With(x => x.Amount, amount) .Create(); var apiResponse = new ApiResponse <CreditPledgeRequest>(new CreditPledgeRequest(command.PledgeId, new CreditPledgeRequest.CreditPledgeRequestData()), HttpStatusCode.OK, string.Empty); CreditPledgeRequest request = null; _levyTransferMatchingService.Setup(x => x.CreditPledge(It.IsAny <CreditPledgeRequest>())) .Callback <CreditPledgeRequest>(r => request = r) .ReturnsAsync(apiResponse); var result = await _handler.Handle(command, CancellationToken.None); var credit = (CreditPledgeRequest.CreditPledgeRequestData)request.Data; Assert.IsNotNull(result); Assert.IsFalse(result.CreditPledgeSkipped); Assert.AreEqual($"pledges/{command.PledgeId}/credit", request.PostUrl); Assert.AreEqual(command.Amount, credit.Amount); Assert.AreEqual(command.ApplicationId, credit.ApplicationId); }
public async Task <CreditPledgeCommandResult> Handle(CreditPledgeCommand request, CancellationToken cancellationToken) { if (request.Amount <= 0) { _logger.LogInformation($"Amount is 0 for pledge {request.PledgeId} - pledge will *not* be credited"); return(new CreditPledgeCommandResult() { CreditPledgeSkipped = true, }); } _logger.LogInformation($"Crediting pledge {request.PledgeId}"); var data = new CreditPledgeRequest.CreditPledgeRequestData { Amount = request.Amount, ApplicationId = request.ApplicationId }; var debitRequest = new CreditPledgeRequest(request.PledgeId, data); var response = await _levyTransferMatchingService.CreditPledge(debitRequest); return(new CreditPledgeCommandResult { ErrorContent = response.ErrorContent, StatusCode = response.StatusCode }); }
public async Task <Unit> Handle(ApplicationWithdrawnAfterAcceptanceCommand request, CancellationToken cancellationToken) { var apiRequest = new CreditPledgeRequest(request.PledgeId, new CreditPledgeRequest.CreditPledgeRequestData { ApplicationId = request.ApplicationId, Amount = request.Amount }); await _levyTransferMatchingService.CreditPledge(apiRequest); return(Unit.Value); }
public async Task <ApiResponse <CreditPledgeRequest> > CreditPledge(CreditPledgeRequest request) { return(await _levyTransferMatchingApiClient.PostWithResponseCode <CreditPledgeRequest>(request)); }