public void Execute_WillGetBalanceForOnlyAssetAndLiabilityAccounts() { var repository = MockRepository.GenerateMock<IRepository>(); var getAccountBalanceForDateCommand = MockRepository.GenerateMock<IGetAccountBalanceForDateCommand>(); var date = DateTime.Today.AddDays(1); const decimal assetAccountBalance = 100; const decimal liabilityAccountBalance = 20; var assetAccount = new AssetAccount { Name = "some asset account" }; var liabilityAccount = new LiabilityAccount { Name = "some liability account" }; var expenseAccount = new ExpenseAccount { Name = "some expense account" }; var incomeAccount = new IncomeAccount { Name = "some income account" }; var accounts = new List<Account> { assetAccount, liabilityAccount, expenseAccount, incomeAccount }; repository.Stub(x => x.Get<Account>()).Return(accounts); getAccountBalanceForDateCommand.Stub(x => x.Execute(assetAccount.Id, date)).Return(assetAccountBalance); getAccountBalanceForDateCommand.Stub(x => x.Execute(liabilityAccount.Id, date)).Return(liabilityAccountBalance); var command = new GetAccountBalancesCommand(repository, getAccountBalanceForDateCommand); var result = command.Execute(date); Assert.That(result.Count(), Is.EqualTo(2)); Assert.That(result.Any(x => (x.AccountName == assetAccount.Name) && (x.Balance == assetAccountBalance)), Is.True); Assert.That(result.Any(x => (x.AccountName == liabilityAccount.Name) && (x.Balance == liabilityAccountBalance)), Is.True); }
public void Create_ShouldReturnViewWithModel() { var assetAccount1 = new AssetAccount(); var assetAccount2 = new AssetAccount(); var liabilityAccount1 = new LiabilityAccount(); var liabilityAccount2 = new LiabilityAccount(); var accounts = new Account[] { assetAccount1, assetAccount2, liabilityAccount1, liabilityAccount2 }; _repository.Stub(x => x.Get<Account>()).Return(accounts); var controller = GetController(); var result = (ViewResult)controller.Create(); Assert.That(result.ViewName, Is.EqualTo("Create")); var viewModel = (CreateModel)result.Model; Assert.That(viewModel.AssetAndLiabilityAccounts.Count(), Is.EqualTo(4)); Assert.That(viewModel.AssetAndLiabilityAccounts.Any(x => x.Id == assetAccount1.Id), Is.True); Assert.That(viewModel.AssetAndLiabilityAccounts.Any(x => x.Id == assetAccount2.Id), Is.True); Assert.That(viewModel.AssetAndLiabilityAccounts.Any(x => x.Id == liabilityAccount1.Id), Is.True); Assert.That(viewModel.AssetAndLiabilityAccounts.Any(x => x.Id == liabilityAccount2.Id), Is.True); Assert.That(viewModel.SelectedFromAccountId, Is.EqualTo(assetAccount1.Id)); Assert.That(viewModel.SelectedToAccountId, Is.EqualTo(assetAccount2.Id)); Assert.That(viewModel.Date, Is.EqualTo(DateTime.Today)); Assert.That(viewModel.Amount, Is.EqualTo(0)); Assert.That(viewModel.Comments, Is.Null); }
public void Configure_ShouldSetPropertiesAsExpected() { const decimal amount = 100; var date = DateTime.Today.AddDays(1); const string comments = "something"; var assetAccount = new AssetAccount(); var liabilityAccount = new LiabilityAccount(); var transaction = new TransferTransaction(); transaction.Configure(amount) .ForDate(date) .WithComments(comments) .FromAccount(assetAccount) .ToAccount(liabilityAccount); Assert.That(transaction.Date, Is.EqualTo(date)); Assert.That(transaction.Comments, Is.EqualTo(comments)); Assert.That(transaction.Entries.Count, Is.EqualTo(2)); Assert.That(transaction.Entries.Any(x => (x.Amount == amount) && (x.Type == EntryType.Credit) && (x.Account == assetAccount)), Is.True); Assert.That(transaction.Entries.Any(x => (x.Amount == amount) && (x.Type == EntryType.Debit) && (x.Account == liabilityAccount)), Is.True); }
public Account Create(AccountType type) { Account account = null; switch (type) { case AccountType.Asset: account = new AssetAccount(); break; case AccountType.Income: account = new IncomeAccount(); break; case AccountType.Expense: account = new ExpenseAccount(); break; case AccountType.Liability: account = new LiabilityAccount(); break; } return account; }
public void Edit_ShouldReturnViewWithModel() { var assetAccount1 = new AssetAccount(); var assetAccount2 = new AssetAccount(); var liabilityAccount1 = new LiabilityAccount(); var liabilityAccount2 = new LiabilityAccount(); var accounts = new Account[] { assetAccount1, assetAccount2, liabilityAccount1, liabilityAccount2 }; const string comments = "something"; const decimal amount = 100; var date = DateTime.Today.AddDays(1); var TransferTransaction = new TransferTransaction(); TransferTransaction.Configure(amount) .ForDate(date) .WithComments(comments) .FromAccount(assetAccount1) .ToAccount(assetAccount2); _repository.Stub(x => x.Find<TransferTransaction>(TransferTransaction.Id)).Return(TransferTransaction); _repository.Stub(x => x.Get<Account>()).Return(accounts); var controller = GetController(); var result = (ViewResult)controller.Edit(TransferTransaction.Id); Assert.That(result.ViewName, Is.EqualTo("Edit")); var viewModel = (EditModel)result.Model; Assert.That(viewModel.Id, Is.EqualTo(TransferTransaction.Id)); Assert.That(viewModel.AssetAndLiabilityAccounts.Count(), Is.EqualTo(4)); Assert.That(viewModel.AssetAndLiabilityAccounts.Any(x => x.Id == assetAccount1.Id), Is.True); Assert.That(viewModel.AssetAndLiabilityAccounts.Any(x => x.Id == assetAccount2.Id), Is.True); Assert.That(viewModel.AssetAndLiabilityAccounts.Any(x => x.Id == liabilityAccount1.Id), Is.True); Assert.That(viewModel.AssetAndLiabilityAccounts.Any(x => x.Id == liabilityAccount2.Id), Is.True); Assert.That(viewModel.SelectedFromAccountId, Is.EqualTo(assetAccount1.Id)); Assert.That(viewModel.SelectedToAccountId, Is.EqualTo(assetAccount2.Id)); Assert.That(viewModel.Date, Is.EqualTo(date)); Assert.That(viewModel.Amount, Is.EqualTo(amount)); Assert.That(viewModel.Comments, Is.EqualTo(comments)); }
public void Edit_ShouldReturnViewWithModel() { var expenseAccount1 = new ExpenseAccount(); var expenseAccount2 = new ExpenseAccount(); var assetAccount = new AssetAccount(); var liabilityAccount = new LiabilityAccount(); var accounts = new Account[] { expenseAccount1, expenseAccount2, assetAccount, liabilityAccount }; const string comments = "something"; const decimal amount = 100; var date = DateTime.Today.AddDays(1); var expenseTransaction = new ExpenseTransaction(); expenseTransaction.Configure(amount) .ForDate(date) .WithComments(comments) .ExpenseAccount(expenseAccount2) .AccountToCredit(liabilityAccount); _repository.Stub(x => x.Find<ExpenseTransaction>(expenseTransaction.Id)).Return(expenseTransaction); _repository.Stub(x => x.Get<Account>()).Repeat.Times(2).Return(accounts); var controller = GetController(); var result = (ViewResult)controller.Edit(expenseTransaction.Id); Assert.That(result.ViewName, Is.EqualTo("Edit")); var viewModel = (EditModel)result.Model; Assert.That(viewModel.Id, Is.EqualTo(expenseTransaction.Id)); Assert.That(viewModel.ExpenseAccounts.Count(), Is.EqualTo(2)); Assert.That(viewModel.ExpenseAccounts.Any(x => x.Id == expenseAccount1.Id), Is.True); Assert.That(viewModel.ExpenseAccounts.Any(x => x.Id == expenseAccount2.Id), Is.True); Assert.That(viewModel.SelectedExpenseAccountId, Is.EqualTo(expenseAccount2.Id)); Assert.That(viewModel.AssetAndLiabilityAccounts.Count(), Is.EqualTo(2)); Assert.That(viewModel.AssetAndLiabilityAccounts.Any(x => x.Id == assetAccount.Id), Is.True); Assert.That(viewModel.AssetAndLiabilityAccounts.Any(x => x.Id == liabilityAccount.Id), Is.True); Assert.That(viewModel.SelectedAssetOrLiabilityAccountId, Is.EqualTo(liabilityAccount.Id)); Assert.That(viewModel.Date, Is.EqualTo(date)); Assert.That(viewModel.Amount, Is.EqualTo(amount)); Assert.That(viewModel.Comments, Is.EqualTo(comments)); }
public void AccountType_ShouldReturnExpense() { var account = new LiabilityAccount(); Assert.That(account.AccountType, Is.EqualTo(AccountType.Liability)); }