Esempio n. 1
0
        public void Withdraw_followed_by_deposit_should_work()
        {
            var     accountId = Guid.NewGuid();
            var     clientId  = Guid.NewGuid();
            decimal balance   = 100m;
            var     client    = new Client(clientId, "Jonh", "Doe");
            var     account   = new Account(accountId, balance, client);

            var subject = Sys.ActorOf(AccountActor.Props(account));

            decimal withdraw = 50m;

            subject.Tell(new Withdraw(withdraw));
            ExpectMsg((Result <Withdraw> msg) => Assert.True(msg.Status == MoneyTransactions.Status.Success));

            subject.Tell(new CheckBalance());
            ExpectMsg <BalanceStatus>(msg =>
            {
                decimal expected = balance - withdraw;
                Assert.Equal(expected, msg.Balance);
            });

            decimal deposit = 50m;

            subject.Tell(new Deposit(deposit));
            ExpectMsg((Result <Deposit> msg) => Assert.Equal(MoneyTransactions.Status.Success, msg.Status));

            subject.Tell(new CheckBalance());
            ExpectMsg <BalanceStatus>(msg =>
            {
                decimal expected = balance + deposit - withdraw;
                Assert.Equal(expected, msg.Balance);
            });
        }
Esempio n. 2
0
        public static void Main(string[] args)
        {
            var account = new AccountActor();
            var output  = new OutputActor();

            account.Send(new Deposit(50));
            account.Send(new QueryBalance(output));

            account.Completion.Wait();
            output.Completion.Wait();

            Console.WriteLine("Done!");
            Console.ReadLine();
        }
Esempio n. 3
0
        public void Withdraw_should_fail_when_balance_is_not_enough()
        {
            var     accountId = Guid.NewGuid();
            var     clientId  = Guid.NewGuid();
            decimal balance   = 40m;
            var     client    = new Client(clientId, "Jonh", "Doe");
            var     account   = new Account(accountId, balance, client);

            var subject = Sys.ActorOf(AccountActor.Props(account));

            decimal amount = 50m;

            subject.Tell(new Withdraw(amount));
            ExpectMsg((Result <Withdraw> msg) => Assert.True(msg.Status == MoneyTransactions.Status.Error));

            subject.Tell(new CheckBalance());
            ExpectMsg <BalanceStatus>(msg => Assert.Equal(balance, msg.Balance));
        }
Esempio n. 4
0
        public void Withdraw_should_succeed_when_requested_with_correct_values()
        {
            var     accountId = Guid.NewGuid();
            var     clientId  = Guid.NewGuid();
            decimal balance   = 100m;
            var     client    = new Client(clientId, "Jonh", "Doe");
            var     account   = new Account(accountId, balance, client);

            var subject = Sys.ActorOf(AccountActor.Props(account));

            decimal amount = 50m;

            subject.Tell(new Withdraw(amount));
            ExpectMsg((Result <Withdraw> msg) => Assert.True(msg.Status == MoneyTransactions.Status.Success));

            subject.Tell(new CheckBalance());
            ExpectMsg <BalanceStatus>(msg => Assert.Equal(balance - amount, msg.Balance));
        }