コード例 #1
0
        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 }));
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
        }
コード例 #4
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());
        }
コード例 #5
0
        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);
        }
コード例 #6
0
ファイル: BudgetApiController.cs プロジェクト: gd1468/KPI2016
 public async Task <RemoveBudgetCommand.Result> Delete([FromUri] RemoveBudgetCommand command)
 {
     return(await _commandDispatcher.Execute <RemoveBudgetCommand, RemoveBudgetCommand.Result>(command));
 }