public void can_create_expense_on_repository() { Expense expense; User georgeUser, martiUser; Tag restaurantTag; IExpenseService expenseService; FakeExpenseRepository expenseRespository; georgeUser = new User("George Mcfly"); martiUser = new User("Marti Mcfly"); expense = new Expense(1, new DateTime(2019, 12, 31), "Domino's Pizza", new Contribution[] { new Contribution(georgeUser, 19.95m), }); expense.setDebtor(georgeUser); expense.setDebtor(martiUser); restaurantTag = new Tag("Restaurants and Coffee shops"); expense.setTag(restaurantTag); expenseRespository = new FakeExpenseRepository(); expenseService = new ExpenseService(expenseRespository); expenseRespository.OnEnumerate = () => new RootExpense[] { }; expenseRespository.OnSet = e => { Assert.Equal(new DateTime(2019, 12, 31), e.Head.Date); Assert.Equal("Domino's Pizza", e.Head.Concept); Assert.Equal(1, e.Head.Id); e.Contributions.Single(c => c.Amount == 19.95m); e.Contributions.Single(c => c.User.Name == "George Mcfly"); e.Debtors.Single(u => u.Name == "George Mcfly"); e.Debtors.Single(u => u.Name == "Marti Mcfly"); e.Tags.Single(t => t.Name == "Restaurants and Coffee shops"); }; expenseService.save(expense); }
public void can_create_expense() { Expense expense; User georgeUser, martiUser; Tag restaurantTag; IExpenseService expenseService; FakeExpenseRepository expenseRespository; georgeUser = new User("George Mcfly"); martiUser = new User("Marti Mcfly"); expense = new Expense(1, DateTime.Now, "Domino's Pizza", new Contribution[] { new Contribution(georgeUser, 19.95m), }); expense.setDebtor(georgeUser); Assert.Throws <AlreadyAddedExpenseDebtor>(() => expense.setDebtor(georgeUser)); expense.setDebtor(martiUser); restaurantTag = new Tag("Restaurants and Coffee shops"); expense.setTag(restaurantTag); expenseRespository = new FakeExpenseRepository(); expenseService = new ExpenseService(expenseRespository); expenseService.save(expense); Assert.Equal(1, expenseRespository.Expenses.Count); Assert.Equal("Domino's Pizza", expenseRespository.Expenses[0].Expense.Concept); Assert.Single(expenseRespository.Expenses[0].Contributions); Assert.Equal("George Mcfly", expenseRespository.Expenses[0].Contributions.ToList()[0].User.Name); Assert.Equal(19.95m, expenseRespository.Expenses[0].Contributions.ToList()[0].Amount); Assert.Single(expenseRespository.Expenses[0].Debtors, d => d.Name == "Marti Mcfly"); Assert.Single(expenseRespository.Expenses[0].Debtors, d => d.Name == "George Mcfly"); Assert.Single(expenseRespository.Expenses[0].Tags); Assert.Single(expenseRespository.Expenses[0].Tags, t => t.Name == "Restaurants and Coffee shops"); }