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()); }
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()); }
public void WhenSubaccountCreatedItsPathNameIsCorrect() { var acc = new Account("root"); Account acc2 = acc.CreateSubaccount("subroot"); Assert.AreEqual( AccountPathName.FromString("root.subroot"), acc2.PathName ); }
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()); }