public void WhenTransactionExecutedOnhierarchicalAccountsThenParametersCalculated()
        {
            var rootAccount = new Account("root");
            var accIncome = rootAccount.CreateSubaccount("income")
                .CreateSubaccount("income2");
            var accOutcome = rootAccount.CreateSubaccount("expences");

            const decimal amount1 = 42.0m;
            const decimal amount2 = 77.0m;

            new AccountingTransaction("tx1",
                accIncome,
                accOutcome,
                amount1).Execute();

            new AccountingTransaction("tx2",
                accOutcome,
                accIncome,
                amount2).Execute();

            Assert.AreEqual(amount2, accIncome.CreditTurnover);
            Assert.AreEqual(amount1, accIncome.DebtTurnover);
            Assert.AreEqual(amount2-amount1, accIncome.GetBalance());

            Assert.AreEqual(amount2, accOutcome.DebtTurnover);
            Assert.AreEqual(amount1, accOutcome.CreditTurnover);
            Assert.AreEqual(amount1-amount2, accOutcome.GetBalance());

            Assert.AreEqual(0.0m, rootAccount.GetBalance());
            Assert.AreEqual(2* (amount1+amount2), rootAccount.GetTurnover());
        }
Esempio n. 2
0
        public void WhenTransactionCreditAndDebtThenParentAccountSaldoAndTurnoverAreOk()
        {
            var acc = new Account("root");
            var acc1 = acc.CreateSubaccount("expence");
            var acc2 = acc.CreateSubaccount("income");

            acc1.TransactDebt(6.0m);
            acc2.TransactCredit(17.0m);

            Assert.AreEqual(17.0m, acc.CreditTurnover);
            Assert.AreEqual(6.0m, acc.DebtTurnover);

            Assert.AreEqual(23.0m, acc.GetTurnover());
            Assert.AreEqual(11.0, acc.GetBalance());
        }
Esempio n. 3
0
 public void WhenSubaccountCreatedItsPathNameIsCorrect()
 {
     var acc = new Account("root");
     Account acc2 = acc.CreateSubaccount("subroot");
     Assert.AreEqual(
         AccountPathName.FromString("root.subroot"),
         acc2.PathName
         );
 }
Esempio n. 4
0
        public void WhenSubaccountCreatedItIsCorrectAndEventIsGenerated()
        {
            EntityCreatedEvent<Account> @event = null;
            Container.Resolve<IDomainEventBus>()
                .RegisterThreaded<EntityCreatedEvent<Account>>(x => { @event = x; });

            var acc = new Account("root");
            Account acc2 = acc.CreateSubaccount("subroot");
            Assert.IsTrue(acc2.IsSubaccount);

            Assert.IsNotNull(@event);
            Assert.IsInstanceOf(typeof (EntityCreatedEvent<Account>), @event);
            Assert.AreEqual(acc2, @event.Subject);
        }
 public TestAccountRepository()
 {
     _root = new Account("root");
     _subroot1 = _root.CreateSubaccount("subroot1");
     _subroot2 = _root.CreateSubaccount("subroot2");
 }
        public void WhenTransactionExecutedOnPairedAccountsThenParametersCalculated()
        {
            var rootAccount = new Account("root");
            var accIncome = rootAccount.CreateSubaccount("income");
            var accOutcome = rootAccount.CreateSubaccount("expences");

            const decimal amount = 77.0m;

            var tx = new AccountingTransaction("tx1",
                accIncome,
                accOutcome,
                amount);
            tx.Execute();

            Assert.AreEqual(0.0m, accIncome.CreditTurnover);
            Assert.AreEqual(amount, accIncome.DebtTurnover);
            Assert.AreEqual(-amount, accIncome.GetBalance());

            Assert.AreEqual(0.0m, accOutcome.DebtTurnover);
            Assert.AreEqual(amount, accOutcome.CreditTurnover);
            Assert.AreEqual(amount, accOutcome.GetBalance());

            Assert.AreEqual(0.0m, rootAccount.GetBalance());
            Assert.AreEqual(2 * amount, rootAccount.GetTurnover());
        }