diff --git a/source/backend/challenge/modules/task/infra/http/controllers/TaskController.java b/source/backend/challenge/modules/task/infra/http/controllers/TaskController.java index 6a06a52..eb4c226 100644 --- a/source/backend/challenge/modules/task/infra/http/controllers/TaskController.java +++ b/source/backend/challenge/modules/task/infra/http/controllers/TaskController.java @@ -1,5 +1,6 @@ package backend.challenge.modules.task.infra.http.controllers; +import backend.challenge.modules.task.dtos.TaskDTO; import backend.challenge.modules.task.infra.http.views.TaskView; import backend.challenge.modules.task.models.Task; import backend.challenge.modules.task.services.*; @@ -22,54 +23,53 @@ public class TaskController { public TaskController( final ICreateTaskService createTaskService, final IDeleteTaskService deleteTaskService, - final IRetrieveAllTasksService retrieveAllTasksService + final IRetrieveAllTasksService retrieveAllTasksService, + final IRetrieveTaskByIdService retrieveTaskByIdService, + final IUpdateTaskService updateTaskService ) { this.createTaskService = createTaskService; this.deleteTaskService = deleteTaskService; this.retrieveAllTasksService = retrieveAllTasksService; - this.retrieveTaskByIdService = null; - this.updateTaskService = null; + this.retrieveTaskByIdService = retrieveTaskByIdService; + this.updateTaskService = updateTaskService; } @GET public Response show() { - // TODO: Rota que lista todas as tarefas - - return DefaultResponse.ok().entity("Hello world"); + return DefaultResponse.ok(retrieveAllTasksService.execute()); } @GET @Path("single/{taskId}") public Response index(@PathParam("taskId") Long taskId) { - // TODO: A rota deve retornar somente a tarefa a qual o id corresponder - - return DefaultResponse.ok().entity("Hello world"); + return DefaultResponse.ok().entity(retrieveTaskByIdService.execute(taskId)); } @POST public Response create(TaskView task) { - // TODO: A rota deve receber title e description, sendo o `title` o título da tarefa e `description` uma descrição da tarefa. - - return DefaultResponse.ok().entity("Hello world"); + return DefaultResponse.ok().entity(createTaskService.execute(TaskDTO.create() + .setTitle(task.getTitle()) + .setDescription(task.getDescription()))); } @PUT @Path("single/{taskId}") public Response update(@PathParam("taskId") Long taskId, Task task) { - /* - TODO: A rota deve alterar apenas o title e description da tarefa - que possua o id igual ao id correspondente nos parâmetros da rota. - */ - - return DefaultResponse.ok().entity("Hello world"); + Task updatedTask = this.retrieveTaskByIdService.execute(taskId); + if(updatedTask != null) { + updatedTask.setTitle(task.getTitle()); + updatedTask.setDescription(task.getDescription()); + return DefaultResponse.ok().entity(this.updateTaskService.execute(updatedTask)); + } else { + return DefaultResponse.notFound().statusCode(400); + } } @DELETE @Path("single/{taskId}") public Response delete(@PathParam("taskId") Long taskId) { - // TODO: A rota deve deletar a tarefa com o id correspondente nos parâmetros da rota - - return DefaultResponse.ok().entity("Hello world"); + this.deleteTaskService.execute(taskId); + return DefaultResponse.ok().entity("Deleted"); } } diff --git a/source/backend/challenge/modules/task/infra/http/controllers/TaskProgressController.java b/source/backend/challenge/modules/task/infra/http/controllers/TaskProgressController.java index 4a25520..cdb054c 100644 --- a/source/backend/challenge/modules/task/infra/http/controllers/TaskProgressController.java +++ b/source/backend/challenge/modules/task/infra/http/controllers/TaskProgressController.java @@ -1,5 +1,6 @@ package backend.challenge.modules.task.infra.http.controllers; +import backend.challenge.modules.task.dtos.TaskProgressDTO; import backend.challenge.modules.task.infra.http.views.TaskProgressView; import backend.challenge.modules.task.models.Task; import backend.challenge.modules.task.services.*; @@ -22,14 +23,7 @@ public TaskProgressController(final IUpdateTaskProgressService updateTaskProgres @PUT @Path("single/{taskId}") public Response updateProgress(@PathParam("taskId") Long taskId, TaskProgressView taskProgressView) { - /* - TODO: A rota deve alterar apenas o progresso da tarefa que possua o id igual ao id correspondente - nos parâmetros da rota. - O `progress` pode ter o valor máximo de 100, e quando ele atingi o máximo, - o `status` deve ser alterado para `COMPLETE` - */ - - return DefaultResponse.ok().entity("Hello world"); + return DefaultResponse.ok().entity(updateTaskProgressService.execute(TaskProgressDTO.create().setId(taskId).setProgress(taskProgressView.getProgress()))); } } diff --git a/source/backend/challenge/modules/task/repositories/TaskRepository.java b/source/backend/challenge/modules/task/repositories/TaskRepository.java index c47c8fd..23337b0 100644 --- a/source/backend/challenge/modules/task/repositories/TaskRepository.java +++ b/source/backend/challenge/modules/task/repositories/TaskRepository.java @@ -1,46 +1,59 @@ package backend.challenge.modules.task.repositories; import backend.challenge.modules.task.dtos.TaskDTO; +import backend.challenge.modules.task.enums.TaskStatus; import backend.challenge.modules.task.models.Task; import javax.inject.Singleton; import java.util.List; +import java.util.Map; +import java.util.HashMap; +import java.time.Instant; +import java.util.Date; @Singleton public class TaskRepository implements ITaskRepository { + private Map tasks; + private Long currentId; + + public TaskRepository() { + this.tasks = new HashMap(); + this.currentId = 1L; + } + @Override public Task index(final Long taskId) { - // TODO: Criar método responsável por retornar tarefa por id - - return null; + return this.tasks.get(taskId); } @Override public List show() { - // TODO: Criar método responsável por retornar todas as tarefas - - return null; + return this.tasks.values().stream().toList(); } @Override public Task create(final TaskDTO taskDTO) { - // TODO: Criar método responsável por criar uma tarefa - - return null; + Task newTask = new Task(); + newTask.setId(this.currentId); + newTask.setTitle(taskDTO.getTitle()); + newTask.setDescription(taskDTO.getDescription()); + newTask.setProgress(0); + newTask.setStatus(TaskStatus.PROGRESS); + newTask.setCreatedAt(Date.from(Instant.now())); + this.tasks.put(this.currentId, newTask); + this.currentId++; + return newTask; } @Override - public Task update(final Task task) { - // TODO: Criar método responsável por atualizar uma tarefa - - return null; + public Task update(final Task task) {; + return this.tasks.replace(task.getId(), task); } @Override public void delete(final Long taskId) { - // TODO: Criar método responsável por deletar tarefa por id - + Task task = this.index(taskId); + this.tasks.remove(taskId, task); } - } diff --git a/source/backend/challenge/modules/task/services/CreateTaskService.java b/source/backend/challenge/modules/task/services/CreateTaskService.java index 46b144b..3ce2018 100644 --- a/source/backend/challenge/modules/task/services/CreateTaskService.java +++ b/source/backend/challenge/modules/task/services/CreateTaskService.java @@ -19,9 +19,7 @@ public CreateTaskService(final ITaskRepository taskRepository) { @Override public Task execute(TaskDTO taskDTO) { - // TODO: Criar serviço responsável por criar uma tarefa - - return null; + return this.taskRepository.create(taskDTO); } } diff --git a/source/backend/challenge/modules/task/services/DeleteTaskService.java b/source/backend/challenge/modules/task/services/DeleteTaskService.java index c957d70..033622e 100644 --- a/source/backend/challenge/modules/task/services/DeleteTaskService.java +++ b/source/backend/challenge/modules/task/services/DeleteTaskService.java @@ -17,7 +17,7 @@ public DeleteTaskService(final ITaskRepository taskRepository) { @Override public void execute(Long taskId) { - // TODO: Criar serviço responsável por deletar a tarefa + this.taskRepository.delete(taskId); } } diff --git a/source/backend/challenge/modules/task/services/RetrieveAllTasksService.java b/source/backend/challenge/modules/task/services/RetrieveAllTasksService.java index 52a4149..ec7b3f9 100644 --- a/source/backend/challenge/modules/task/services/RetrieveAllTasksService.java +++ b/source/backend/challenge/modules/task/services/RetrieveAllTasksService.java @@ -19,9 +19,7 @@ public RetrieveAllTasksService(final ITaskRepository taskRepository) { @Override public List execute() { - // TODO: Criar serviço responsável por recuperar todas as tarefas - - return null; + return this.taskRepository.show(); } } diff --git a/source/backend/challenge/modules/task/services/RetrieveTaskByIdService.java b/source/backend/challenge/modules/task/services/RetrieveTaskByIdService.java new file mode 100644 index 0000000..4fe0a01 --- /dev/null +++ b/source/backend/challenge/modules/task/services/RetrieveTaskByIdService.java @@ -0,0 +1,26 @@ +package backend.challenge.modules.task.services; + +import backend.challenge.modules.task.models.Task; +import backend.challenge.modules.task.repositories.ITaskRepository; + +import javax.inject.Inject; +import javax.inject.Singleton; + + +//There was no service applied for that METHOD +@Singleton +public class RetrieveTaskByIdService implements IRetrieveTaskByIdService { + + private final ITaskRepository taskRepository; + + @Inject + public RetrieveTaskByIdService(final ITaskRepository taskRepository) { + this.taskRepository = taskRepository; + } + + @Override + public Task execute(Long taskId) { + return this.taskRepository.index(taskId); + } + +} diff --git a/source/backend/challenge/modules/task/services/UpdateTaskProgressService.java b/source/backend/challenge/modules/task/services/UpdateTaskProgressService.java new file mode 100644 index 0000000..ac658e2 --- /dev/null +++ b/source/backend/challenge/modules/task/services/UpdateTaskProgressService.java @@ -0,0 +1,31 @@ +package backend.challenge.modules.task.services; + +import javax.inject.Inject; + +import backend.challenge.modules.task.dtos.TaskProgressDTO; +import backend.challenge.modules.task.enums.TaskStatus; +import backend.challenge.modules.task.models.Task; +import backend.challenge.modules.task.repositories.ITaskRepository; + +public class UpdateTaskProgressService implements IUpdateTaskProgressService{ + + private final ITaskRepository taskRepository; + private final IRetrieveTaskByIdService retrieveTaskByIdService; + + @Inject + public UpdateTaskProgressService(final ITaskRepository taskRepository) { + this.taskRepository = taskRepository; + this.retrieveTaskByIdService = new RetrieveTaskByIdService(taskRepository); + } + + @Override + public Task execute(TaskProgressDTO taskProgressDTO) { + Task task = retrieveTaskByIdService.execute(taskProgressDTO.getId()); + task.setProgress(taskProgressDTO.getProgress() > 100 ? 100 : taskProgressDTO.getProgress()); + if(task.getProgress() >= 100) { + task.setStatus(TaskStatus.COMPLETE); + } + return taskRepository.update(task); + } + +} diff --git a/source/backend/challenge/modules/task/services/UpdateTaskService.java b/source/backend/challenge/modules/task/services/UpdateTaskService.java new file mode 100644 index 0000000..d19940d --- /dev/null +++ b/source/backend/challenge/modules/task/services/UpdateTaskService.java @@ -0,0 +1,22 @@ +package backend.challenge.modules.task.services; + +import javax.inject.Inject; + +import backend.challenge.modules.task.models.Task; +import backend.challenge.modules.task.repositories.ITaskRepository; + +public class UpdateTaskService implements IUpdateTaskService { + + private final ITaskRepository taskRepository; + + @Inject + public UpdateTaskService(final ITaskRepository taskRepository){ + this.taskRepository = taskRepository; + } + + @Override + public Task execute(Task task) { + return this.taskRepository.update(task); + } + +} diff --git a/tests/Runner.java b/tests/Runner.java index 1ff4b19..6cb2593 100644 --- a/tests/Runner.java +++ b/tests/Runner.java @@ -1,5 +1,3 @@ -package backend.challenge; - import kikaha.core.test.KikahaServerRunner; import org.junit.Ignore; import org.junit.Test; diff --git a/tests/backend/challenge/modules/task/services/CreateTaskServiceTest.java b/tests/backend/challenge/modules/task/services/CreateTaskServiceTest.java index 684dc44..8302875 100644 --- a/tests/backend/challenge/modules/task/services/CreateTaskServiceTest.java +++ b/tests/backend/challenge/modules/task/services/CreateTaskServiceTest.java @@ -1,14 +1,16 @@ package backend.challenge.modules.task.services; - +import backend.challenge.modules.task.models.Task; +import backend.challenge.modules.task.dtos.TaskDTO; import backend.challenge.modules.task.repositories.ITaskRepository; import backend.challenge.modules.task.repositories.TaskRepository; import kikaha.core.test.KikahaRunner; +import org.junit.Assert; import org.junit.Before; import org.junit.Ignore; import org.junit.Test; import org.junit.runner.RunWith; -@RunWith( KikahaRunner.class ) +@RunWith(KikahaRunner.class) public class CreateTaskServiceTest { private ICreateTaskService createTaskService; @@ -22,11 +24,10 @@ public void init() { @Test public void shouldBeAbleToCreateANewTask() { - // TODO: Para que esse teste passe, sua aplicação deve permitir que - // uma tarefa seja criado, e retorne um json com a tarefa criada. + TaskDTO taskDTO = TaskDTO.create().setTitle("TEST").setDescription("TEST DESC"); + final Task task = createTaskService.execute(taskDTO); + Assert.assertEquals(taskDTO.getTitle(), task.getTitle()); + Assert.assertEquals(taskDTO.getDescription(), task.getDescription()); } - - - } \ No newline at end of file diff --git a/tests/backend/challenge/modules/task/services/DeleteTaskServiceTest.java b/tests/backend/challenge/modules/task/services/DeleteTaskServiceTest.java index 93497a5..af096c9 100644 --- a/tests/backend/challenge/modules/task/services/DeleteTaskServiceTest.java +++ b/tests/backend/challenge/modules/task/services/DeleteTaskServiceTest.java @@ -1,8 +1,12 @@ package backend.challenge.modules.task.services; +import backend.challenge.modules.task.models.Task; +import backend.challenge.modules.task.dtos.TaskDTO; import backend.challenge.modules.task.repositories.ITaskRepository; import backend.challenge.modules.task.repositories.TaskRepository; import kikaha.core.test.KikahaRunner; + +import org.junit.Assert; import org.junit.Before; import org.junit.Ignore; import org.junit.Test; @@ -12,17 +16,24 @@ public class DeleteTaskServiceTest { private IDeleteTaskService deleteTaskService; + private ICreateTaskService createTaskService; + private IRetrieveTaskByIdService retrieveTaskByIdService; @Before public void init() { final ITaskRepository taskRepository = new TaskRepository(); - deleteTaskService = new DeleteTaskService(taskRepository); + createTaskService = new CreateTaskService(taskRepository); + retrieveTaskByIdService = new RetrieveTaskByIdService(taskRepository); } @Test public void shouldBeAbleToDeleteTaskById() { - // TODO: Para que esse teste passe, sua aplicação deve permitir que tarefas sejam deletadas por id. + TaskDTO taskDTO = TaskDTO.create().setTitle("TEST").setDescription("TEST"); + Task task = createTaskService.execute(taskDTO); + Assert.assertNotNull(retrieveTaskByIdService.execute(task.getId())); + deleteTaskService.execute(task.getId()); + Assert.assertNull(retrieveTaskByIdService.execute(task.getId())); } diff --git a/tests/backend/challenge/modules/task/services/RetrieveAllTasksServiceTest.java b/tests/backend/challenge/modules/task/services/RetrieveAllTasksServiceTest.java index 68f0012..9356bd5 100644 --- a/tests/backend/challenge/modules/task/services/RetrieveAllTasksServiceTest.java +++ b/tests/backend/challenge/modules/task/services/RetrieveAllTasksServiceTest.java @@ -1,8 +1,15 @@ package backend.challenge.modules.task.services; +import backend.challenge.modules.task.models.Task; +import backend.challenge.modules.task.dtos.TaskDTO; import backend.challenge.modules.task.repositories.ITaskRepository; import backend.challenge.modules.task.repositories.TaskRepository; import kikaha.core.test.KikahaRunner; + +import java.util.ArrayList; +import java.util.List; + +import org.junit.Assert; import org.junit.Before; import org.junit.Ignore; import org.junit.Test; @@ -12,20 +19,23 @@ public class RetrieveAllTasksServiceTest { private IRetrieveAllTasksService retrieveAllTasksService; + private ICreateTaskService createTaskService; @Before public void init() { final ITaskRepository taskRepository = new TaskRepository(); retrieveAllTasksService = new RetrieveAllTasksService(taskRepository); + this.createTaskService = new CreateTaskService(taskRepository); } @Test - public void shouldBeAbleToListTheTasks() { - /* - TODO: Para que esse teste passe, sua aplicação deve permitir que seja - retornado um array com todas as tarefas que foram criadas até o momento. - */ + public void shouldBeAbleToListTheTaskById() { + TaskDTO taskDTO = TaskDTO.create().setTitle("TEST").setDescription("TEST DESC"); + Task task = createTaskService.execute(taskDTO); + List tasks = new ArrayList<>(); + tasks.add(task); + Assert.assertEquals(retrieveAllTasksService.execute(), tasks); } } \ No newline at end of file diff --git a/tests/backend/challenge/modules/task/services/RetrieveTaskByIdServiceTest.java b/tests/backend/challenge/modules/task/services/RetrieveTaskByIdServiceTest.java index eb96b15..6b57b3d 100644 --- a/tests/backend/challenge/modules/task/services/RetrieveTaskByIdServiceTest.java +++ b/tests/backend/challenge/modules/task/services/RetrieveTaskByIdServiceTest.java @@ -1,9 +1,12 @@ package backend.challenge.modules.task.services; - +import backend.challenge.modules.task.models.Task; +import backend.challenge.modules.task.dtos.TaskDTO; import backend.challenge.modules.task.repositories.ITaskRepository; import backend.challenge.modules.task.repositories.TaskRepository; import kikaha.core.test.KikahaRunner; + +import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -12,13 +15,21 @@ public class RetrieveTaskByIdServiceTest { private IRetrieveTaskByIdService retrieveTaskByIdService; + private ICreateTaskService createTaskService; + private ITaskRepository taskRepository; + + @Before + public void init() { + this.taskRepository = new TaskRepository(); + this.retrieveTaskByIdService = new RetrieveTaskByIdService(taskRepository); + this.createTaskService = new CreateTaskService(taskRepository); + } @Test public void shouldBeAbleToListTheTaskById() { - /* - TODO: Para que esse teste passe, sua aplicação deve permitir que seja - retornado uma tarefa com o mesmo id informado. - */ + TaskDTO taskDTO = TaskDTO.create().setTitle("TEST").setDescription("TEST DESC"); + Task task = createTaskService.execute(taskDTO); + Assert.assertEquals(retrieveTaskByIdService.execute(task.getId()), task); } } diff --git a/tests/backend/challenge/modules/task/services/UpdateTaskProgressServiceTest.java b/tests/backend/challenge/modules/task/services/UpdateTaskProgressServiceTest.java index e6b0bf6..016b163 100644 --- a/tests/backend/challenge/modules/task/services/UpdateTaskProgressServiceTest.java +++ b/tests/backend/challenge/modules/task/services/UpdateTaskProgressServiceTest.java @@ -2,26 +2,46 @@ import kikaha.core.test.KikahaRunner; + +import org.junit.Assert; +import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; +import backend.challenge.modules.task.dtos.TaskDTO; +import backend.challenge.modules.task.dtos.TaskProgressDTO; +import backend.challenge.modules.task.enums.TaskStatus; +import backend.challenge.modules.task.models.Task; +import backend.challenge.modules.task.repositories.ITaskRepository; +import backend.challenge.modules.task.repositories.TaskRepository; + @RunWith( KikahaRunner.class ) public class UpdateTaskProgressServiceTest { + private ICreateTaskService createTaskService; + private IUpdateTaskProgressService updateTaskProgressService; + + @Before + public void init() { + final ITaskRepository taskRepository = new TaskRepository(); + this.createTaskService = new CreateTaskService(taskRepository); + this.updateTaskProgressService = new UpdateTaskProgressService(taskRepository); + } + @Test public void shouldBeAbleToUpdateTaskProgress() { - /* - TODO: Para que esse teste passe, sua aplicação deve permitir que sejam - alterados apenas o campo `progress`. - */ + Task task = createTaskService.execute(TaskDTO.create().setTitle("TEST").setDescription("TEST DESC")); + Assert.assertEquals(task.getProgress(), 0); + updateTaskProgressService.execute(TaskProgressDTO.create().setId(task.getId()).setProgress(120)); + Assert.assertEquals(task.getProgress(), 100); } @Test public void shouldBeAbleToUpdateOnlyTaskStatusWhenProgressEqualsOneHundred() { - /* - TODO: Para que esse teste passe, sua aplicação deve permitir que sejam - alterado apenas o campo `status`, quando o progresso for igual a 100. - */ + Task task = createTaskService.execute(TaskDTO.create().setTitle("TEST").setDescription("TEST DESC")); + Assert.assertEquals(task.getStatus(), TaskStatus.PROGRESS); + updateTaskProgressService.execute(TaskProgressDTO.create().setId(task.getId()).setProgress(100)); + Assert.assertEquals(task.getStatus(), TaskStatus.COMPLETE); } } diff --git a/tests/backend/challenge/modules/task/services/UpdateTaskServiceTest.java b/tests/backend/challenge/modules/task/services/UpdateTaskServiceTest.java index 53a4082..274e5ba 100644 --- a/tests/backend/challenge/modules/task/services/UpdateTaskServiceTest.java +++ b/tests/backend/challenge/modules/task/services/UpdateTaskServiceTest.java @@ -1,44 +1,69 @@ package backend.challenge.modules.task.services; +import backend.challenge.modules.task.dtos.TaskDTO; +import backend.challenge.modules.task.enums.TaskStatus; +import backend.challenge.modules.task.infra.http.controllers.TaskController; +import backend.challenge.modules.task.models.Task; import backend.challenge.modules.task.repositories.ITaskRepository; import backend.challenge.modules.task.repositories.TaskRepository; import kikaha.core.test.KikahaRunner; +import kikaha.urouting.api.Response; + +import org.junit.Assert; import org.junit.Before; import org.junit.Ignore; import org.junit.Test; import org.junit.runner.RunWith; +import org.yaml.snakeyaml.events.Event.ID; -@RunWith( KikahaRunner.class ) +@RunWith(KikahaRunner.class) public class UpdateTaskServiceTest { private IUpdateTaskService updateTaskService; + private ICreateTaskService createTaskService; + private IRetrieveTaskByIdService retrieveTaskByIdService; + private IRetrieveAllTasksService retrieveAllTasksService; + private IDeleteTaskService deleteTaskService; + private TaskController taskController; + + @Before + public void init() { + final ITaskRepository taskRepository = new TaskRepository(); + this.createTaskService = new CreateTaskService(taskRepository); + this.deleteTaskService = new DeleteTaskService(taskRepository); + this.updateTaskService = new UpdateTaskService(taskRepository); + this.retrieveTaskByIdService = new RetrieveTaskByIdService(taskRepository); + this.retrieveAllTasksService = new RetrieveAllTasksService(taskRepository); + this.taskController = new TaskController(createTaskService, deleteTaskService, retrieveAllTasksService, retrieveTaskByIdService, updateTaskService); + } @Test public void shouldBeAbleToUpdateTask() { - /* - TODO: Para que esse teste passe, sua aplicação deve permitir que sejam - alterados apenas os campos `title` e `observation`. - */ + Task task = this.createTaskService.execute(TaskDTO.create().setTitle("TEST").setDescription("TEST DESC")); + Task task2 = this.createTaskService.execute(TaskDTO.create().setTitle("TEST 2").setDescription("TEST DESC 2")); + task.setDescription("TEST DESC #2"); + task.setTitle("TEST #2"); + this.taskController.update(task.getId(), task2); + Assert.assertEquals(task.getTitle(), task2.getTitle()); + Assert.assertEquals(task.getDescription(), task2.getDescription()); } @Test public void shouldNotBeAbleToUpdateATaskThatDoesNotExist() { - /* - TODO: Para que esse teste passe, você deve validar na sua rota de update se - o id da tarefa enviada pela url existe ou não. Caso não exista, retornar um erro com status 400. - */ + Task task2 = this.createTaskService.execute(TaskDTO.create().setTitle("TEST 2").setDescription("TEST DESC 2")); + Response response = this.taskController.update(9L, task2); + Assert.assertEquals(response.statusCode(), 400); } @Test public void shouldNotBeAbleToUpdateTaskStatusManually() { - /* - TODO: Para que esse teste passe, você não deve permitir que sua rota de update - altere diretamente o `status` dessa tarefa, mantendo o mesmo status que a tarefa - já possuía antes da atualização. Isso porque o único lugar que deve atualizar essa informação - é a rota responsável por alterar o progresso da tarefa. - - */ + Task task = this.createTaskService.execute(TaskDTO.create().setTitle("TEST").setDescription("TEST DESC")); + Task task2 = this.createTaskService.execute(TaskDTO.create().setTitle("TEST 2").setDescription("TEST DESC 2")); + task.setDescription("TEST DESC #2"); + task.setTitle("TEST #2"); + task.setStatus(TaskStatus.COMPLETE); + this.taskController.update(task.getId(), task2); + Assert.assertNotEquals(task.getStatus(), task2.getStatus()); } - } \ No newline at end of file