Beispiel #1
0
        public void ExpensesCategoryMustBeLessOrEqualToBudgetAmount()
        {
            var request = new MonthBudgetRequest
            {
                UserId           = "ingris",
                Amount           = 3000,
                BudgetCategories = new List <BudgetCategoryDto> {
                    new BudgetCategoryDto {
                        Percentage = 80
                    },
                    new BudgetCategoryDto {
                        Percentage = 20, CategoryId = 1
                    }
                }
            };
            var categories = new List <ExpenseCategory> {
                new ExpenseCategory {
                }, new ExpenseCategory {
                    UId = 1
                }
            };

            var budget     = ExpensesTrackerFactory.CreateNewBudget(request, categories);
            var validation = _userBudgetDomainService.IsValidNewUserBudget(budget);

            Assert.IsTrue(validation.IsValid());
            Assert.AreEqual((decimal)3000, budget.BudgetDetails.Sum(c => c.Amount));
        }
Beispiel #2
0
        public void BudgetMustHaveOwnerId()
        {
            var request    = new MonthBudgetRequest {
            };
            var budget     = ExpensesTrackerFactory.CreateNewBudget(request, null);
            var validation = _userBudgetDomainService.IsValidNewUserBudget(budget);

            Assert.IsFalse(validation.IsValid());
            Assert.AreEqual(Messages.BudgetMustHaveAnOwner, validation.ValidationErrorMessage);
        }
Beispiel #3
0
        public async Task <MonthBudgetResponse> AddNewUserBudget(MonthBudgetRequest request)
        {
            var categories = await _context.ExpenseCategory.Where(c => c.IsDefault || c.OwnerId == request.UserId).ToListAsync();

            var newBudget = ExpensesTrackerFactory.CreateNewBudget(request, categories);

            var validation = _budgetDomainService.IsValidNewUserBudget(newBudget);

            if (validation.IsValid())
            {
                _context.UserBudget.Add(newBudget);
                await _context.SaveChangesAsync();
            }
            return(MapUserBudgetToResponse(newBudget, !validation.IsValid(), validation));
        }
Beispiel #4
0
        public void AllExpensesCategoriesExists()
        {
            var request = new MonthBudgetRequest {
                UserId = "ingris", BudgetCategories = new List <BudgetCategoryDto> {
                    new BudgetCategoryDto {
                    }
                }
            };
            var categories = new List <ExpenseCategory> {
            };
            var budget     = ExpensesTrackerFactory.CreateNewBudget(request, categories);
            var validation = _userBudgetDomainService.IsValidNewUserBudget(budget);

            Assert.IsFalse(validation.IsValid());
            Assert.AreEqual(Messages.ExpensesCategoriesMustExists, validation.ValidationErrorMessage);
        }
Beispiel #5
0
        public void ExpensesCategoryMustBeLessOrEqualTo100Percent()
        {
            var request = new MonthBudgetRequest
            {
                UserId           = "ingris",
                Amount           = 3000,
                BudgetCategories = new List <BudgetCategoryDto> {
                    new BudgetCategoryDto {
                        Percentage = 120,
                    }
                }
            };
            var categories = new List <ExpenseCategory> {
                new ExpenseCategory {
                }
            };
            var budget     = ExpensesTrackerFactory.CreateNewBudget(request, categories);
            var validation = _userBudgetDomainService.IsValidNewUserBudget(budget);

            Assert.IsFalse(validation.IsValid());
            Assert.AreEqual(Messages.ExpesesCategoriesExceed100Percent, validation.ValidationErrorMessage);
        }