public async Task ArrangeAsync() { var today = new DateTime(2021, 1, 30); _fixture = new Fixture(); _collectionPeriods = new List <Domain.ValueObjects.CollectionCalendarPeriod>() { new CollectionCalendarPeriod( new Domain.ValueObjects.CollectionPeriod(1, (short)today.Year), (byte)today.Month, (short)today.Year, today.AddDays(-1), today.AddDays(-1), false, false), new CollectionCalendarPeriod( new Domain.ValueObjects.CollectionPeriod(1, (short)today.AddMonths(1).Year), (byte)today.AddMonths(1).Month, (short)today.AddMonths(1).Year, today.AddMonths(1).AddDays(-1), today.AddMonths(1).AddDays(-1), false, false) }; _firstCollectionPeriod = _collectionPeriods.First().CollectionPeriod; _mockIncentiveDomainRespository = new Mock <IApprenticeshipIncentiveDomainRepository>(); _mockCollectionCalendarService = new Mock <ICollectionCalendarService>(); _mockIncentivePaymentProfilesService = new Mock <IIncentivePaymentProfilesService>(); _incentive = await ApprenticeshipIncentiveCreator(); _sut = new CreatePaymentCommandHandler(_mockIncentiveDomainRespository.Object); }
public async Task ShouldSavePaymentToDatabaseEvenIfBankAcquirerDoesNotSucceed() { var acquiringBankResult = Result.Failure <Guid>(FakeAcquiringBankErrors.AmountMustBeLessThan10000); _mockAcquiringBankService.Setup(a => a.ProcessPayment(It.IsAny <Payment>())).ReturnsAsync(acquiringBankResult); var sut = new CreatePaymentCommandHandler(_mockAcquiringBankService.Object, _mockPaymentHistoryRepository.Object, _mockMetrics.Object, _mockLogger.Object, _mockEventStoreClient.Object); var command = new CreatePaymentCommand() { Amount = 44044.44M, Currency = Currency.GBP.ToString(), CardNumber = "1234-5678-8765-4321", CVV = 321, ExpiryMonth = 10, ExpiryYear = 20, FirstName = "Jim", Surname = "Jimson" }; var result = await sut.Handle(command, default); _mockAcquiringBankService.Verify(a => a.ProcessPayment(It.IsAny <Payment>()), Times.Once()); _mockPaymentHistoryRepository.Verify(p => p.InsertPayment(It.IsAny <Payment>()), Times.Once()); Assert.False(result.IsSuccess); }
public async Task ShouldSendPaymentToAcquiringBankAndSaveInDB() { var acquiringBankResult = Result.Ok(Guid.NewGuid()); _mockAcquiringBankService.Setup(a => a.ProcessPayment(It.IsAny <Payment>())).ReturnsAsync(acquiringBankResult); _mockPaymentHistoryRepository.Setup(p => p.InsertPayment(It.IsAny <Payment>())).ReturnsAsync(Result.Ok(Guid.NewGuid())); var sut = new CreatePaymentCommandHandler(_mockAcquiringBankService.Object, _mockPaymentHistoryRepository.Object, _mockMetrics.Object, _mockLogger.Object, _mockEventStoreClient.Object); var command = new CreatePaymentCommand() { Amount = 4404.44M, Currency = Currency.GBP.ToString(), CardNumber = "1234-5678-8765-4321", CVV = 321, ExpiryMonth = 10, ExpiryYear = 20, FirstName = "Jim", Surname = "Jimson" }; var result = await sut.Handle(command, default); _mockAcquiringBankService.Verify(a => a.ProcessPayment(It.IsAny <Payment>()), Times.Once()); _mockPaymentHistoryRepository.Verify(p => p.InsertPayment(It.IsAny <Payment>()), Times.Once()); Assert.True(result.IsSuccess); }
public CreatePaymentCommandTest() { _createdDateUtc = DateTimeOffset.UtcNow; _transactionUid = Guid.NewGuid(); _paymentRepository = new Mock <IPaymentRepository>(); var systemClock = new Mock <ISystemClock>(); systemClock.Setup(d => d.UtcNow).Returns(_createdDateUtc); _bank = new Mock <IBank>(); _sut = new CreatePaymentCommandHandler(_paymentRepository.Object, _bank.Object, systemClock.Object); }
public void Handle_GivenMoreThanBalanceAmount_ShouldCreateClosedPayment() { var sut = new CreatePaymentCommandHandler(_context, _mediator.Object, CurrentUser); var request = new CreatePaymentCommand { Amount = 100000, Date = DateTime.Now }; var result = sut.Handle(request, CancellationToken.None).Result; Assert.AreNotEqual(Guid.Empty, result); var record = _context.Payments.SingleOrDefault(i => i.Id == result); Assert.IsNotNull(record); Assert.AreEqual(PaymentStatus.Closed, record.Status); }
public async Task Handle_ShouldPersistPayment() { var command = new CreatePaymentCommand { Name = "Do yet another thing." }; var sut = new CreatePaymentCommandHandler(_repository); var result = await sut.Handle(command, CancellationToken.None); var entity = await _repository.GetByIdAsync(result); entity.Should().NotBeNull(); entity.Name.Should().Be(command.Name); entity.IsComplete.Should().BeFalse(); }