public async Task Execute_WhenCommandValid_CallsAquiringBankService() { const int MERCHANT_ID = 4; AddBankPaymentCommand addBankPaymentCommand = null; var aquiringBankService = new Mock <MockAquiringBankService>(); aquiringBankService .Setup(m => m.MakePaymentAsync(It.IsAny <AddBankPaymentCommand>())) .Callback <AddBankPaymentCommand>(c => addBankPaymentCommand = c) .CallBase(); var userSessionService = new Mock <IUserSessionService>(); userSessionService .Setup(m => m.GetCurrentMerchantId()) .Returns(MERCHANT_ID); var handler = new AddPaymentCommandHandler( NullLogger <AddPaymentCommandHandler> .Instance, aquiringBankService.Object, userSessionService.Object, new InMemoryPaymentsRepository(NullLogger <InMemoryPaymentsRepository> .Instance) ); var command = AddPaymentCommandValidatorTests.CreateValidCommand(); await handler.ExecuteAsync(command); Assert.Equal(command.CreditCard, addBankPaymentCommand.CreditCard); Assert.Equal(MERCHANT_ID, addBankPaymentCommand.MerchantId); Assert.True(addBankPaymentCommand.PaymentId > 0); }
public async Task <AddPaymentCommandResult> Post([FromBody] AddPaymentCommand command) { if (ModelState.IsValid) { return(await _addPaymentCommandHandler.ExecuteAsync(command)); } return(null); }
public Task Execute_WhenCommandInvalid_ThrowsException() { var handler = new AddPaymentCommandHandler( NullLogger <AddPaymentCommandHandler> .Instance, new MockAquiringBankService(), new MockUserSessionService(), new InMemoryPaymentsRepository(NullLogger <InMemoryPaymentsRepository> .Instance) ); var command = AddPaymentCommandValidatorTests.CreateValidCommand(); command.Currency = null; return(Assert.ThrowsAsync <ValidationException>(() => handler.ExecuteAsync(command))); }
public async Task Execute_WhenCommandValid_PaymentSavedToRepository() { var paymentRepository = new InMemoryPaymentsRepository(NullLogger <InMemoryPaymentsRepository> .Instance); var handler = new AddPaymentCommandHandler( NullLogger <AddPaymentCommandHandler> .Instance, new MockAquiringBankService(), new MockUserSessionService(), paymentRepository ); var command = AddPaymentCommandValidatorTests.CreateValidCommand(); var result = await handler.ExecuteAsync(command); var paymentDetails = await paymentRepository.GetPaymentDetailsByPaymentIdAsync(result.PaymentId); Assert.NotNull(paymentDetails); }