public async Task ShouldFailToSetGoalCompletedIdNotFound() { 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"); SetCompletedGoalCommand command = new SetCompletedGoalCommand { 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); }
public async Task ShouldSetCompleted() { Guid profileId = Guid.NewGuid(); List <Goal> goals = new List <Goal> { new Goal(profileId, "Novo para teste", "Testando") }; SetCompletedGoalCommand command = new SetCompletedGoalCommand { GoalId = goals.FirstOrDefault().Id, AccomplishmentDetails = "Ëu completei !!!!", DateCompleted = DateTime.Now }; 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.IsTrue(goals.First().Status.IsCompleted); }
public async Task ShouldFailToSetCompletedTwice() { Guid profileId = Guid.NewGuid(); List <Goal> goals = new List <Goal> { new Goal(profileId, "Novo para teste", "Testando") }; SetCompletedGoalCommand command = new SetCompletedGoalCommand { GoalId = goals.FirstOrDefault().Id, AccomplishmentDetails = "Foi completado primeira vez, será completado de novo", DateCompleted = DateTime.Now }; 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.IsTrue(goals.First().Status.IsCompleted); CommandResult commandResultTwo = await handler.Handle(command, default(CancellationToken)); Assert.IsFalse(commandResultTwo.Success); Assert.AreEqual("Esse objetivo já está marcado como completo.", commandResultTwo.Notifications.FirstOrDefault().Description); }
public async Task <CommandResult> Handle(SetCompletedGoalCommand request, CancellationToken cancellationToken) { Goal goal = await _goalRepository.GetByIdAsync(request.GoalId); if (!FoundValidGoal(goal)) { return(FailureDueToGoalNotFound()); } goal.SetCompleted(request.DateCompleted, request.AccomplishmentDetails); if (!goal.IsValid) { return(FailureDueToEntityStateInconsistency(goal)); } await _goalRepository.UpdateAsync(goal); return(await CommitAndPublishAsync(new GoalCompletedDomainEvent( goal.Id, goal.ProfileId, request.WritePost ))); }
public async Task <IActionResult> SetCompletedAsync(Guid id, [FromBody] SetCompletedGoalCommand command) { command.GoalId = id; return(await CreateCommandResponse(command)); }