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);
        }
Beispiel #2
0
        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);
        }