public async void Withdraw_Valid_Amount(string accountId, double amount) { Account account = new Account(); account.Deposit(new Credit(Guid.NewGuid(), amount)); accountReadOnlyRepository .Get(Guid.Parse(accountId)) .Returns(account); var output = Substitute.For <CustomPresenter <Application.UseCases.Withdraw.WithdrawOutput> >(); var depositUseCase = new Application.UseCases.Withdraw.WithdrawInteractor( accountReadOnlyRepository, bus, output, converter ); var request = new Application.UseCases.Withdraw.WithdrawInput( Guid.Parse(accountId), amount ); await depositUseCase.Process(request); Assert.Equal(request.Amount, output.Output.Transaction.Amount); }
public async void Withdraw_Valid_Amount(string accountId, double amount) { Account account = Substitute.For <Account>(); account.Deposit(new Credit(new Amount(1000))); var customer = Substitute.For <Customer>(); customer.FindAccount(Arg.Any <Guid>()) .Returns(account); customerReadOnlyRepository .GetByAccount(Guid.Parse(accountId)) .Returns(customer); var output = Substitute.For <CustomPresenter <Application.UseCases.Withdraw.WithdrawResponse> >(); var depositUseCase = new Application.UseCases.Withdraw.WithdrawInteractor( customerReadOnlyRepository, customerWriteOnlyRepository, output, converter ); var request = new Application.UseCases.Withdraw.WithdrawCommand( Guid.Parse(accountId), amount ); await depositUseCase.Handle(request); Assert.Equal(request.Amount, output.Response.Transaction.Amount); }