Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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");
        }