public async Task AddCategoryAsync_adds_category_then_saves() { // Arrange var category = new BudgetCategory { Name = "Test" }; var sequence = new MockSequence(); _mockRepo.Setup(m => m.GetCategories()).Returns(new List <BudgetCategory>().AsQueryable()); _mockRepo.InSequence(sequence).Setup(m => m.AddBudgetCategory(It.IsAny <BudgetCategory>())); _mockRepo.InSequence(sequence).Setup(m => m.SaveChangesAsync()).ReturnsAsync(1); // Act await _testService.AddCategoryAsync(category); // Assert _mockRepo.Verify(m => m.AddBudgetCategory(category), Times.Once()); _mockRepo.Verify(m => m.SaveChangesAsync(), Times.Once()); }
/// <summary> /// The default Constructor /// </summary> /// <param name="service">The service to use in the controller</param> public BudgetCategoryController(ICategoryManagerService service) : base( // Setup required functions singleAdder: vm => service.AddCategoryAsync(vm.Name, vm.Amount, vm.Type), singleDeleter: id => service.RemoveCategoryAsync(id), singleEditor: vm => service.UpdateCategoryAsync(vm.NavId, vm.Amount, vm.EffectiveFrom, vm.Type), existanceChecker: vm => service.CategoryExists(vm.NavId) ) { CollectionGetter = () => GetViewModelCollection(service); ViewModelCreator = id => CreateViewModel(id, service); ExceptionHandling = new Dictionary <Type, Func <Exception, IActionResult> > { { typeof(InvalidDateExpection), ex => { ModelState.AddModelError(nameof(BudgetCategory.EffectiveFrom), ex.Message); return(null); } }, { typeof(ExpenseTrackerException), ex => { return(NotFound()); } } }; }