Example #1
0
        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
            });
        }
Example #3
0
        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));
 }