package hhn.temp.project; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.*; public class GoodCasesTest { AssignmentManager manager; @BeforeEach public void setup() { manager = new AssignmentManager(); } @Test @DisplayName("Assert that a Worker can add a Task") public void assertWorkerCanAddTask() { int workerId = manager.createWorker("Alfred"); int taskId = manager.addTask(workerId, "Run", "Jog 10 Miles"); assertNotNull(manager.getTask(taskId)); assertEquals("Run", manager.getTask(taskId).getName()); } @Test @DisplayName("Assert that added Tasks are added to the List") public void assertTasksShowInList() { int sizeCount = manager.getTaskMap().size(); int workerId = manager.createWorker("Alfred"); int taskId = manager.addTask(workerId, "Run", "Jog 10 Miles"); assertEquals(sizeCount + 1, manager.getTaskMap().size()); } @Test @DisplayName("Assert existing Tasks can be edited") public void assertExistingTasksCanBeEdited() { int workerId = manager.createWorker("Alfred"); int taskId = manager.addTask(workerId, "Run", "Jog 10 Miles"); manager.editTask(workerId, taskId, "Walk", "Walk 3 Miles"); assertEquals("Walk", manager.getTask(taskId).getName()); assertEquals("Walk 3 Miles", manager.getTask(taskId).getDescription()); } @Test @DisplayName("Assert that Worker can remove Task") public void assertWorkerCanRemoveOwnTask() { int sizeCount = manager.getTaskMap().size(); int workerId = manager.createWorker("Alfred"); int taskId = manager.addTask(workerId, "Run", "Jog 10 Miles"); assertEquals(sizeCount + 1, manager.getTaskMap().size()); manager.removeTask(taskId); assertEquals(sizeCount, manager.getTaskMap().size()); } @Test @DisplayName("Assert deleted Tasks no longer show up in the List") public void assertDeletedTasksDisappear() { int workerId = manager.createWorker("Alfred"); int taskId = manager.addTask(workerId, "Run", "Jog 10 Miles"); manager.removeTask(taskId); assertThrows(IllegalArgumentException.class, () -> manager.getTask(taskId)); } @Test @DisplayName("Check Getters") public void assertGettersWorkCorrectly() { int workerId = manager.createWorker("Alfred"); int taskId = manager.addTask(workerId, "Run", "Jog 10 Miles"); assertEquals("Alfred", manager.workerMap.get(workerId).getName()); //This one may be somewhat nonsensical, but it ensures the getId works so one may iterate over the workerMap assertEquals(manager.workerMap.get(workerId).getId(), workerId); assertEquals(manager.getTask(taskId).getTaskId(), taskId); assertEquals(manager.getTask(taskId).getWorkerId(), workerId); } @Test @DisplayName("Assert that Task State is actually changed when submitted as finished") public void assertTaskStateChanges() { int workerId = manager.createWorker("Alfred"); int taskId = manager.addTask(workerId, "Run", "Jog 10 Miles"); manager.finishTask(workerId, taskId); assertSame(TaskState.FINISHED, manager.getTask(taskId).getTaskState()); manager.unfinishTask(workerId, taskId); assertSame(TaskState.IN_PROGRESS, manager.getTask(taskId).getTaskState()); } @Test @DisplayName("Assert that the Scanner is actually started when AM calls start") public void assertScannerExists() { try { manager.getUserCommands().getScanner(); } catch (Exception e) { fail("Scanner does not exists or can't be gotten by getScanner()"); } } @Test @DisplayName("Check that every required surface command actually works") public void assertCommandsAreRecognized() { assertDoesNotThrow(() -> manager.getUserCommands().handleInput("?")); assertDoesNotThrow(() -> manager.getUserCommands().handleInput("help")); assertDoesNotThrow(() -> manager.getUserCommands().handleInput("createWorker")); assertDoesNotThrow(() -> manager.getUserCommands().handleInput("createTask")); assertDoesNotThrow(() -> manager.getUserCommands().handleInput("selectTask")); assertDoesNotThrow(() -> manager.getUserCommands().handleInput("listWorkers")); assertDoesNotThrow(() -> manager.getUserCommands().handleInput("exit")); } @Test @DisplayName("Check that every task command works") public void assertFinishingTasksIsPossibleThroughUi() { int workerId = manager.createWorker("Alfred"); int taskId = manager.addTask(workerId, "Run", "Jog 10 Miles"); manager.getUserCommands().handleInput("selectTask"); assertDoesNotThrow(() -> manager.getUserCommands().handleInput(taskId)); assertDoesNotThrow(() -> manager.getUserCommands().handleInput("finishTask")); } }