public Budget CreateBudget(BudgetRequest request) { string loggedUser = _httpContextAccessor.HttpContext.User.FindFirstValue("userId"); LocalDate newStartDate = LocalDate.FromDateTime((DateTime)request.StartDate); LocalDate newEndDate = LocalDate.FromDateTime((DateTime)request.EndDate); List <Budget> foundBudgets = dbContext.Budgets.Where(b => (b.StartDate.CompareTo(newStartDate) < 0 && b.EndDate.CompareTo(newStartDate) > 0) || (b.StartDate.CompareTo(newEndDate) < 0 && b.EndDate.CompareTo(newStartDate) > 0)) .ToList(); if (foundBudgets.Count > 0) { throw new SkrillaApiException("conflict", "There is a budget for that time period already"); } Budget budget = new Budget( LocalDate.FromDateTime((DateTime)request.StartDate), LocalDate.FromDateTime((DateTime)request.EndDate), request.Amount, loggedUser); dbContext.Add(budget); List <int> categoryIds = request.BudgetItems.Select(i => i.category).ToList(); List <Category> categories = dbContext.Categories .Where(s => s.PersonId.Equals(loggedUser)) .ToList(); if (categories == null) { throw new SkrillaApiException("not_found", "One or more categories were not found."); } categories.ForEach(category => { BudgetItem item = new BudgetItem(budget, category, 0); dbContext.Add(item); }); request.BudgetItems.ForEach(i => { BudgetItem item = budget.BudgetItems.Where(bi => i.category.Equals(bi.Category.CategoryId)).FirstOrDefault(); if (item != null) { item.BudgetedAmount = i.amount; } }); dbContext.SaveChanges(); return(budget); }
public void BudgetIsCreatedSuccessfully() { LocalDate start = new LocalDate(2019, 05, 20); LocalDate end = new LocalDate(2029, 05, 20); Budget budget = new Budget(start, end, 123.5, "examplePerson"); context.Add(budget); context.SaveChanges(); int budgetId = budget.BudgetId; Budget foundBudget = context.Budgets .Where(b => b.BudgetId == budgetId). FirstOrDefault(); Assert.NotNull(foundBudget); Assert.Equal(budget, foundBudget); BudgetItem item1 = new BudgetItem(budget, category, 12.5); BudgetItem item2 = new BudgetItem(budget, category, 24.3); context.Add(item1); context.Add(item2); context.SaveChanges(); foundBudget = context.Budgets .Where(b => b.BudgetId == budgetId). FirstOrDefault(); Assert.Equal(2, foundBudget.BudgetItems.Count); }
public Category CreateCategory(CategoryRequest request) { string loggedUser = _httpContextAccessor.HttpContext.User.FindFirstValue("userId"); List <Category> categories = dbContext .Categories .Where(s => s.Name == request.Name && s.PersonId.Equals(loggedUser)) .ToList <Category>(); Category aCategory; if (categories.Count == 0) { aCategory = new Category( request.Name, request.Nonedit, loggedUser, request.Icon); dbContext.Add(aCategory); dbContext.SaveChanges(); } else { aCategory = categories.First <Category>(); } return(aCategory); }
public void BudgetItemIsCreatedSuccessfully() { LocalDate start = new LocalDate(2019, 05, 20); LocalDate end = new LocalDate(2029, 05, 20); Budget budget = new Budget(start, end, 23.5, "examplePerson"); context.Add(budget); context.SaveChanges(); Budget foundBudget = context.Budgets .Where(b => b.BudgetId == budget.BudgetId). FirstOrDefault(); Assert.NotNull(foundBudget); BudgetItem item1 = new BudgetItem(budget, category, 12.5); context.Add(item1); context.SaveChanges(); int itemId = item1.BudgetItemId; BudgetItem foundBudgetItem = context.BudgetItems .Where(b => b.BudgetItemId == itemId). FirstOrDefault(); Assert.NotNull(foundBudgetItem); Assert.Equal("ExampleCategory", foundBudgetItem.Category.Name); Assert.Equal(12.5, foundBudgetItem.BudgetedAmount); }
public void ConsumptionInstanceCreatedSuccessfully() { Consumption aConsumption = new Consumption("Example", 50.5, category, "1-abc", new LocalDate(2020, 05, 21)); context.Consumptions.Add(aConsumption); context.SaveChanges(); Consumption consumptionFound = context.Consumptions .Where(c => c.Title == "Example" && c.Amount == 50.5).FirstOrDefault(); Assert.NotNull(consumptionFound); Assert.Equal(aConsumption, consumptionFound); }
public ConsumptionServiceTest() { ContextOptions = new DbContextOptionsBuilder <SkrillaDbContext>() .UseSqlite(CreateInMemoryDatabase()) .Options; _connection = RelationalOptionsExtension.Extract(ContextOptions).Connection; dbContext = new SkrillaDbContext(ContextOptions); dbContext.Database.EnsureDeleted(); dbContext.Database.EnsureCreated(); consumptionRequest = new ConsumptionRequest { Title = "Example", Amount = 123.4, Category = "ExampleCategory", Date = new DateTime(2020, 05, 12) }; category = new Category("ExampleCategory", false, "mockUser", "exampleIcon"); dbContext.Add(category); dbContext.SaveChanges(); var loggerMock = new Mock <ILogger <ConsumptionService> >(); this.consumptionService = new ConsumptionService(loggerMock.Object, dbContext, GetMockHttpAccesor()); }
public BudgetControllerTest() { ContextOptions = new DbContextOptionsBuilder <SkrillaDbContext>() .UseSqlite(CreateInMemoryDatabase()) .Options; _connection = RelationalOptionsExtension.Extract(ContextOptions).Connection; dbContext = new SkrillaDbContext(ContextOptions); dbContext.Database.EnsureDeleted(); dbContext.Database.EnsureCreated(); category = new Category("ExampleCategory", false, "mockUser", "exampleIcon"); category2 = new Category("ExampleCategory2", false, "mockUser", "exampleIcon"); dbContext.Add(category); dbContext.Add(category2); dbContext.SaveChanges(); List <BudgetItemRequest> budgetItems = new List <BudgetItemRequest> { new BudgetItemRequest { category = category.CategoryId, amount = 23.5 }, new BudgetItemRequest { category = category2.CategoryId, amount = 101.5 } }; budgetRequest = new BudgetRequest { StartDate = new DateTime(2019, 05, 06), EndDate = new DateTime(2030, 04, 17), Amount = 123.5, BudgetItems = budgetItems }; var budgetLoggerMock = new Mock <ILogger <BudgetService> >(); var controllerLoggerMock = new Mock <ILogger <BudgetController> >(); budgetService = new BudgetService(budgetLoggerMock.Object, dbContext, GetMockHttpAccesor()); controller = new BudgetController(controllerLoggerMock.Object, budgetService); controller.ControllerContext = new ControllerContext { HttpContext = new DefaultHttpContext { User = principal } }; }
public BudgetTest() { ContextOptions = new DbContextOptionsBuilder <SkrillaDbContext>() .UseSqlite(CreateInMemoryDatabase()) .Options; _connection = RelationalOptionsExtension.Extract(ContextOptions).Connection; context = new SkrillaDbContext(ContextOptions); context.Database.EnsureDeleted(); context.Database.EnsureCreated(); context.Add(category); context.SaveChanges(); }
public ConsumptionTest() { ContextOptions = new DbContextOptionsBuilder <SkrillaDbContext>() .UseSqlite(CreateInMemoryDatabase()) .Options; _connection = RelationalOptionsExtension.Extract(ContextOptions).Connection; context = new SkrillaDbContext(ContextOptions); context.Database.EnsureDeleted(); context.Database.EnsureCreated(); category = new Category("Otros", false, "exmapleUser", "exampleIcon"); context.Add(category); context.SaveChanges(); }
public void GetBudgetSummaryIsSuccessful() { Budget budget = budgetService.CreateBudget(budgetRequest); Category category3 = new Category("ExampleCategory3", false, "mockUser", "exampleIcon"); Category category4 = new Category("ExampleCategory4", false, "mockUser", "exampleIcon"); dbContext.Add(category3); dbContext.Add(category4); int id = budget.BudgetId; budget = dbContext.Budgets.Where(b => b.BudgetId == id).FirstOrDefault(); Assert.NotNull(budget); budget = budgetService.GetCurrentBudget(); Consumption consumption_a = new Consumption("ExampleA", 50.5, category, "mockUser", new LocalDate(2020, 03, 21)); Consumption consumption_b = new Consumption("ExampleB", 95.3, category2, "mockUser", new LocalDate(2019, 10, 21)); Consumption consumption_c = new Consumption("ExampleC", 45.6, category, "mockUser", new LocalDate(2016, 05, 21)); Consumption consumption_d = new Consumption("ExampleD", 46.6, category3, "mockUser", new LocalDate(2020, 01, 21)); dbContext.Add(consumption_a); dbContext.Add(consumption_b); dbContext.Add(consumption_c); dbContext.Add(consumption_d); dbContext.SaveChanges(); BudgetSummary summary = budgetService.GetBudgetSummary(); Assert.Equal(192.4, summary.TotalSpent); Assert.Equal(budget.Amount, summary.Amount); Assert.Equal(4, summary.CategoryItems.Count); Assert.Contains(23.5, summary.CategoryItems.Select(c => c.BudgetedAmount)); Assert.Contains(50.5, summary.CategoryItems.Select(c => c.TotalSpent)); Assert.Contains(101.5, summary.CategoryItems.Select(c => c.BudgetedAmount)); Assert.Contains(95.3, summary.CategoryItems.Select(c => c.TotalSpent)); Assert.Contains(46.6, summary.CategoryItems.Select(c => c.TotalSpent)); }
public Consumption ModifyConsumption(ConsumptionRequest consumptionRequest, int id) { string loggedUser = _httpContextAccessor.HttpContext.User.FindFirstValue("userId"); Consumption consumption = dbContext .Consumptions .Where(s => s.Id == id && s.PersonId.Equals(loggedUser)) .Include(c => c.Category).FirstOrDefault(); if (consumption == null) { _logger.LogDebug("Consumption not found: " + id + " for user: "******"not_found", "Consumption not found"); } UpdateValues(consumption, consumptionRequest); dbContext.SaveChanges(); return(consumption); }
private void SetUpConsumption() { consumption = new Consumption("TestConsumption", 123.78, category, "mockUser", new LocalDate(2020, 06, 5)); dbContext.Add(consumption); dbContext.SaveChanges(); }