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