public async Task <JsonResult> RemoveBudget(Guid id) { User currentUser = await this.authService.GetCurrentUser(); RemoveBudgetCommand command = new RemoveBudgetCommand(this.unitOfWork, id, currentUser); await command.Run(); return(new JsonResult(new { success = true })); }
public async Task DontRemoveBudget() { var command = new RemoveBudgetCommand { BudgetIds = new List <Guid> { Guid.NewGuid() } }; _db.Setup(x => x.SaveChangesAsync()).ReturnsAsync(0); var result = await _handler.Execute(command); Assert.IsNotNull(result); Assert.AreEqual(result.EffectiveRows, 0); Assert.AreEqual(_budgets.Count, 1); }
public async Task RemoveExistingBudget() { var command = new RemoveBudgetCommand { BudgetIds = new List <Guid> { new Guid("714b19c9-7c5b-47f9-9a99-46639db1595d") } }; _db.Setup(x => x.SaveChangesAsync()).ReturnsAsync(1); var result = await _handler.Execute(command); Assert.IsNotNull(result); Assert.AreEqual(result.EffectiveRows, 1); Assert.AreEqual(_budgets.Count, 0); }
public async Task Test_ExceptionThrown_WhenRemoveCommandCalled_ByUserThatDoesntOwnIt() { Mock <IUnitOfWork> unitOfWork = new Mock <IUnitOfWork>(); Mock <IRepository <Budget> > budgetRepo = new Mock <IRepository <Budget> >(); UserFactory userFactory = this.buildersAndFactories.GetService <UserFactory>(); Budget rootBudget = this.buildersAndFactories.BudgetBuilder.Build(); User unauthorizedUser = userFactory.NewUser(); IIncludableQuerySet <Budget> budgets = new InMemoryIncludableQuerySet <Budget>(new List <Budget>() { rootBudget }); budgetRepo.Setup(r => r.GetAll()).Returns(budgets); unitOfWork.Setup(u => u.SaveChangesAsync()).Returns(Task.CompletedTask); unitOfWork.Setup(u => u.GetRepository <Budget>()).Returns(budgetRepo.Object); RemoveBudgetCommand command = new RemoveBudgetCommand(unitOfWork.Object, rootBudget.Id, unauthorizedUser); await Assert.ThrowsAsync <InvalidOperationException>(() => command.Run()); }
public async Task Test_BudgetNoLongerExists_WhenRemoveCommandCalled() { Mock <IUnitOfWork> unitOfWork = new Mock <IUnitOfWork>(); Mock <IRepository <Budget> > budgetRepo = new Mock <IRepository <Budget> >(); UserFactory userFactory = this.buildersAndFactories.GetService <UserFactory>(); Budget rootBudget = this.buildersAndFactories.BudgetBuilder.Build(); User user = userFactory.NewUser(rootBudget.Fund.UserId); IIncludableQuerySet <Budget> budgets = new InMemoryIncludableQuerySet <Budget>(new List <Budget>() { rootBudget }); budgetRepo.Setup(r => r.GetAll()).Returns(budgets); unitOfWork.Setup(u => u.SaveChangesAsync()).Returns(Task.CompletedTask); unitOfWork.Setup(u => u.GetRepository <Budget>()).Returns(budgetRepo.Object); RemoveBudgetCommand command = new RemoveBudgetCommand(unitOfWork.Object, rootBudget.Id, user); await command.Run(); budgetRepo.Verify(r => r.Remove(rootBudget), Times.Once); }
public async Task <RemoveBudgetCommand.Result> Delete([FromUri] RemoveBudgetCommand command) { return(await _commandDispatcher.Execute <RemoveBudgetCommand, RemoveBudgetCommand.Result>(command)); }