public async Task RemoveCategoryAsync_removes_category_then_saves() { // Arrange var category = new BudgetCategory { ID = 1 }; var categories = new List <BudgetCategory> { category }.AsQueryable(); var sequence = new MockSequence(); _mockRepo.Setup(m => m.GetCategories()).Returns(categories); _mockRepo.InSequence(sequence).Setup(m => m.DeleteBudgetCategory(It.IsAny <BudgetCategory>())); _mockRepo.InSequence(sequence).Setup(m => m.SaveChangesAsync()).ReturnsAsync(1); // Act await _testService.RemoveCategoryAsync(1); // Assert _mockRepo.Verify(m => m.DeleteBudgetCategory(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()); } } }; }