public async Task ShouldFailToSetUncompletedTwice()
        {
            Guid profileId = Guid.NewGuid();

            List <Goal> goals = new List <Goal>
            {
                new Goal(profileId, "Novo para teste", "Testando")
            };

            goals.First().SetCompleted(DateTime.Now, "Completado para testes");

            SetUncompletedGoalCommand command = new SetUncompletedGoalCommand
            {
                GoalId = goals.FirstOrDefault().Id
            };

            GoalFakeRepository goalFakeRepository = new GoalFakeRepository(goals);
            GoalCommandHandler handler            = new GoalCommandHandler(
                goalFakeRepository,
                GetIdentityService(profileId),
                GetMediator(),
                GetUnitOfWork(),
                GetLogger()
                );

            CommandResult commandResult = await handler.Handle(command, default(CancellationToken));

            Assert.IsTrue(commandResult.Success);
            Assert.IsFalse(goals.First().Status.IsCompleted);

            CommandResult commandResultTwo = await handler.Handle(command, default(CancellationToken));

            Assert.IsFalse(commandResultTwo.Success);
            Assert.AreEqual("Esse objetivo já está marcado como incompleto.", commandResultTwo.Notifications.FirstOrDefault().Description);
        }
        public async Task ShouldFailToSetGoalUncompletedIdNotFound()
        {
            Guid profileId = Guid.NewGuid();

            List <Goal> goals = new List <Goal>
            {
                new Goal(profileId, "Novo para teste", "Testando")
            };

            goals.First().SetCompleted(DateTime.Now, "Completado para testes");

            SetUncompletedGoalCommand command = new SetUncompletedGoalCommand
            {
                GoalId = Guid.NewGuid()
            };

            GoalFakeRepository goalFakeRepository = new GoalFakeRepository(goals);
            GoalCommandHandler handler            = new GoalCommandHandler(
                goalFakeRepository,
                GetIdentityService(profileId),
                GetMediator(),
                GetUnitOfWork(),
                GetLogger()
                );

            CommandResult commandResult = await handler.Handle(command, default(CancellationToken));

            Assert.IsFalse(commandResult.Success);
            Assert.AreEqual("Falha ao buscar Objetivo no banco de dados.", commandResult.Notifications.FirstOrDefault().Description);
        }
Exemple #3
0
        public async Task <IActionResult> SetUncompletedAsync(Guid id)
        {
            SetUncompletedGoalCommand command = new SetUncompletedGoalCommand
            {
                GoalId = id
            };

            return(await CreateCommandResponse(command));
        }
        public async Task <CommandResult> Handle(SetUncompletedGoalCommand request, CancellationToken cancellationToken)
        {
            Goal goal = await _goalRepository.GetByIdAsync(request.GoalId);

            if (!FoundValidGoal(goal))
            {
                return(FailureDueToGoalNotFound());
            }

            goal.SetUncompleted();
            if (!goal.IsValid)
            {
                return(FailureDueToEntityStateInconsistency(goal));
            }

            await _goalRepository.UpdateAsync(goal);

            return(await CommitAndPublishDefaultAsync());
        }