コード例 #1
0
        public async Task Integration_CancelPayment_ExpectPaymentInResultAndRepository()
        {
            Account newAccount = new Account {
                Name = "Test Account"
            };

            _context.Accounts.Add(newAccount);
            _context.SaveChanges();
            // 1 Deposits of 10000
            Transaction deposit = new Transaction
            {
                AccountId         = newAccount.Id,
                Amount            = 1000,
                TransactionStatus = TransactionStatusEnum.Processed,
                TransactionType   = TransactionTypeEnum.Deposit,
                Date           = new DateTime(2020, 1, 1),
                CreationDate   = new DateTime(2020, 1, 1),
                LastUpdateDate = new DateTime(2020, 1, 1)
            };

            _context.Transactions.Add(deposit);

            // 1 Payment of 1000
            Transaction newPayment = new Transaction
            {
                AccountId         = newAccount.Id,
                Amount            = 1000,
                TransactionStatus = TransactionStatusEnum.Pending,
                TransactionType   = TransactionTypeEnum.Withdrawal,
                Date           = new DateTime(2020, 1, 1),
                CreationDate   = new DateTime(2020, 1, 1),
                LastUpdateDate = new DateTime(2020, 1, 1)
            };

            _context.Transactions.Add(newPayment);
            _context.SaveChanges();

            TransactionCancelDto payment = new TransactionCancelDto
            {
                AccountId     = newPayment.AccountId,
                TransactionId = newPayment.Id,
                Reason        = "Some Reason"
            };

            var content       = JsonConvert.SerializeObject(payment);
            var stringContent = new StringContent(content, Encoding.UTF8, "application/json");
            var response      = await _client.PutAsync("/api/payment/cancel", stringContent);

            response.StatusCode.Should().Be(System.Net.HttpStatusCode.OK);
            var responseString = await response.Content.ReadAsStringAsync();

            TransactionResultDto PaymentResult = JsonConvert.DeserializeObject <TransactionResultDto>(responseString);

            PaymentResult.Should().NotBeNull();
            PaymentResult.AccountId.Should().Be(newAccount.Id);
            PaymentResult.Amount.Should().Be(newPayment.Amount);
            PaymentResult.Date.Should().Be((DateTime)newPayment.Date);
            PaymentResult.ClosedReason.Should().Be("Some Reason");
            PaymentResult.TransactionStatus.Should().Be(TransactionStatusEnum.Closed.ToString());

            Transaction PaymentFromDb = _context.Transactions.Find(PaymentResult.Id);

            _context.Entry(PaymentFromDb).Reload();

            PaymentFromDb.Should().NotBeNull();
            PaymentFromDb.Amount.Should().Be(PaymentResult.Amount);
            PaymentFromDb.Date.Should().Be((DateTime)PaymentResult.Date);
            PaymentFromDb.Id.Should().Be(PaymentResult.Id);
            PaymentFromDb.TransactionStatus.Should().Be(TransactionStatusEnum.Closed);
            PaymentFromDb.TransactionType.Should().Be(TransactionTypeEnum.Withdrawal);
            PaymentFromDb.ClosedReason.Should().Be("Some Reason");
        }
コード例 #2
0
        public async Task <IActionResult> CancelPayment([FromBody] TransactionCancelDto objDto)
        {
            TransactionUpdaterService updater = new TransactionUpdaterService(_logger, _mapper, (int)objDto.AccountId, (int)objDto.TransactionId, _accountRepo, _transRepo, TransactionStatusEnum.Closed, Messages.Payment_FailedToCancel, objDto.Reason);

            return(this.GetActionResultFromServiceResult(await updater.UpdateTransaction()));
        }
コード例 #3
0
        public async Task Integration_CancelPayment_EmptyOrNullFields_ExpectBadRequest(TransactionCancelDto objDto)
        {
            var content       = JsonConvert.SerializeObject(objDto);
            var stringContent = new StringContent(content, Encoding.UTF8, "application/json");
            var response      = await _client.PutAsync("/api/payment/cancel", stringContent);

            response.StatusCode.Should().Be(System.Net.HttpStatusCode.BadRequest);
            var responseString = await response.Content.ReadAsStringAsync();

            responseString.Should().Contain("The AccountId field is required");
            responseString.Should().Contain("The TransactionId field is required");
        }