diff --git a/src/main/java/hhn/temp/project/AssignmentManager.java b/src/main/java/hhn/temp/project/AssignmentManager.java index 0f6d07d1..eca8d408 100644 --- a/src/main/java/hhn/temp/project/AssignmentManager.java +++ b/src/main/java/hhn/temp/project/AssignmentManager.java @@ -26,11 +26,14 @@ public class AssignmentManager { workerMap.put(workerIdCounter, worker); return workerIdCounter; } + public void removeWorker(int workerId) { + workerMap.remove(workerId); + } public int addTask(int workerId, String name, String description) { if (!workerMap.containsKey(workerId) || name == null || description == null) { throw new IllegalArgumentException("WorkerId must exist and name or description can't be null"); } - Task task = new Task(++taskIdCounter, workerId, name, description, this); + Task task = new Task(++taskIdCounter, workerId, name, description); taskMap.put(taskIdCounter, task); return taskIdCounter; } diff --git a/src/main/java/hhn/temp/project/Task.java b/src/main/java/hhn/temp/project/Task.java index b5ee9cc9..f4d015bb 100644 --- a/src/main/java/hhn/temp/project/Task.java +++ b/src/main/java/hhn/temp/project/Task.java @@ -5,10 +5,8 @@ public class Task { String description; int taskId; int workerId; - AssignmentManager manager; TaskState state; - public Task(int taskId, int workerId, String name, String description, AssignmentManager manager) { - this.manager = manager; + public Task(int taskId, int workerId, String name, String description) { this.name = name; this.description = description; this.taskId = taskId; diff --git a/test/hhn/temp/project/BadCasesTest.java b/test/hhn/temp/project/BadCasesTest.java index 09452e83..ebda57b3 100644 --- a/test/hhn/temp/project/BadCasesTest.java +++ b/test/hhn/temp/project/BadCasesTest.java @@ -52,4 +52,20 @@ public class BadCasesTest { assertThrows(IllegalArgumentException.class, () -> manager.finishTask(20405, 21034)); assertThrows(IllegalArgumentException.class, () -> manager.unfinishTask(20405, 21034)); } + @Test + @DisplayName("Assert that removing a non-existent worker throws an Exception") + public void assertRemovingNonExistentWorkerFails() { + assertThrows(IllegalArgumentException.class, () -> manager.removeWorker(34054)); + } + @Test + @DisplayName("Assert non-existent commands are recognized as such") + public void assertInvalidCommandsDontCrash() { + int workerId = manager.createWorker("Alfred"); + int taskId = manager.addTask(workerId, "Run", "Jog 10 Miles"); + try { + manager.getUserCommands().handleInput("baum"); + } catch (Exception e) { + fail("Should not crash just because a command is invalid"); + } + } } diff --git a/test/hhn/temp/project/GoodCasesTest.java b/test/hhn/temp/project/GoodCasesTest.java index efab70d8..0fc849e7 100644 --- a/test/hhn/temp/project/GoodCasesTest.java +++ b/test/hhn/temp/project/GoodCasesTest.java @@ -113,7 +113,41 @@ public class GoodCasesTest { int taskId = manager.addTask(workerId, "Run", "Jog 10 Miles"); manager.getUserCommands().handleInput("selectTask"); assertDoesNotThrow(() -> manager.getUserCommands().handleInput(taskId)); - assertDoesNotThrow(() -> manager.getUserCommands().handleInput("finishTask")); + assertDoesNotThrow(() -> manager.getUserCommands().handleInput("finish")); + assertDoesNotThrow(() -> manager.getUserCommands().handleInput("unfinish")); + assertDoesNotThrow(() -> manager.getUserCommands().handleInput("remove")); + assertDoesNotThrow(() -> manager.getUserCommands().handleInput("back")); + assertDoesNotThrow(() -> manager.getUserCommands().handleInput("edit")); + } + @Test + @DisplayName("Check that editing is possible through UI") + public void assertEditingTasksIsPossibleThroughUi() { + int workerId = manager.createWorker("Alfred"); + int taskId = manager.addTask(workerId, "Run", "Jog 10 Miles"); + manager.getUserCommands().handleInput("selectTask"); + manager.getUserCommands().handleInput(taskId); + manager.getUserCommands().handleInput("edit"); + assertDoesNotThrow(() -> manager.getUserCommands().handleInput("Walk;Walk 3 Miles")); + assertEquals("Walk", manager.getTask(taskId).getName()); + assertEquals("Walk 3 Miles", manager.getTask(taskId).getDescription()); + assertDoesNotThrow(() -> manager.getUserCommands().handleInput("back")); + } + @Test + @DisplayName("Assert that removing Workers is possible through the UI") + public void assertRemovingWorkersIsPossibleThroughUI() { + int workerId = manager.createWorker("Alfred"); + int workerId2 = manager.createWorker("Balfred"); + manager.getUserCommands().handleInput("listWorkers"); + manager.getUserCommands().handleInput(workerId); + assertDoesNotThrow(() -> manager.getUserCommands().handleInput("remove")); + manager.getUserCommands().handleInput(workerId2); + assertDoesNotThrow(() -> manager.getUserCommands().handleInput("back")); + } + @Test + @DisplayName("Assert that removing a worker removes the worker from the worker list") + public void assertRemoveWorkerActuallyRemoves() { + int workerId = manager.createWorker("Alfred"); + manager.removeWorker(workerId); + assertThrows(IllegalArgumentException.class, () -> manager.workerMap.containsKey(workerId)); } - }