From 826df5c136c093e0ec2ca12d74e610393c3093ae Mon Sep 17 00:00:00 2001 From: leeyimin Date: Tue, 25 Oct 2016 20:53:25 +0800 Subject: [PATCH] Fix ListPanelHandle and select test in gui test --- src/test/java/guitests/AddCommandTest.java | 7 ++- src/test/java/guitests/ClearCommandTest.java | 8 ++-- src/test/java/guitests/DeleteCommandTest.java | 2 +- src/test/java/guitests/HelpWindowTest.java | 2 +- src/test/java/guitests/ListCommandTest.java | 4 +- src/test/java/guitests/SelectCommandTest.java | 30 +++++++----- src/test/java/guitests/TaskManGuiTest.java | 12 +++-- ...tPanelHandle.java => ListPanelHandle.java} | 48 ++++++++++++++----- .../guitests/guihandles/MainGuiHandle.java | 13 ++++- 9 files changed, 83 insertions(+), 43 deletions(-) rename src/test/java/guitests/guihandles/{TaskListPanelHandle.java => ListPanelHandle.java} (78%) diff --git a/src/test/java/guitests/AddCommandTest.java b/src/test/java/guitests/AddCommandTest.java index 0fddc7d17e43..e0f86542eec1 100644 --- a/src/test/java/guitests/AddCommandTest.java +++ b/src/test/java/guitests/AddCommandTest.java @@ -10,7 +10,6 @@ import static org.junit.Assert.assertTrue; -import org.junit.Test; //TODO Change to DoCommandTest and MarkCommandTest public class AddCommandTest extends TaskManGuiTest { @@ -34,7 +33,7 @@ public void add() { expectedList[i] = new Activity(new Task(currentList[i])); } assertResultMessage(DoCommand.MESSAGE_DUPLICATE_EVENT); - assertTrue(taskListPanel.isListMatching(expectedList)); + assertTrue(deadlineListPanel.isListMatching(expectedList)); //add to empty list commandBox.runCommand("clear"); @@ -49,7 +48,7 @@ private void assertAddSuccess(TestTask taskToAdd, TestTask... currentList) { commandBox.runCommand(taskToAdd.getAddCommand()); //confirm the new row contains the right data - TaskRowHandle addedRow = taskListPanel.navigateToTask(taskToAdd.getTitle().title); + TaskRowHandle addedRow = deadlineListPanel.navigateToActivity(taskToAdd.getTitle().title); assertMatching(new Activity(new Task(taskToAdd)), addedRow); //confirm the list now contains all previous tasks plus the new task @@ -58,7 +57,7 @@ private void assertAddSuccess(TestTask taskToAdd, TestTask... currentList) { for (int i = 0; i < expectedActivityList.length; i++) { expectedActivityList[i] = new Activity(new Task(expectedList[i])); } - assertTrue(taskListPanel.isListMatching(expectedActivityList)); + assertTrue(deadlineListPanel.isListMatching(expectedActivityList)); } } diff --git a/src/test/java/guitests/ClearCommandTest.java b/src/test/java/guitests/ClearCommandTest.java index 87744ef9a025..1d4292926b7a 100644 --- a/src/test/java/guitests/ClearCommandTest.java +++ b/src/test/java/guitests/ClearCommandTest.java @@ -17,14 +17,14 @@ public void clear() { for (int i = 0; i < expectedList.length; i++) { expectedList[i] = new Activity(new Task(currentList[i])); } - assertTrue(taskListPanel.isListMatching(expectedList)); + assertTrue(deadlineListPanel.isListMatching(expectedList)); assertClearCommandSuccess(); //verify other commands can work after a clear command commandBox.runCommand(testTasks.taskCS2102.getAddCommand()); - assertTrue(taskListPanel.isListMatching(new Activity(new Task(testTasks.taskCS2102)))); + assertTrue(deadlineListPanel.isListMatching(new Activity(new Task(testTasks.taskCS2102)))); commandBox.runCommand("delete 1"); - assertListSize(0); + assertDeadlineListSize(0); //verify clear command works when the list is empty assertClearCommandSuccess(); @@ -32,7 +32,7 @@ public void clear() { private void assertClearCommandSuccess() { commandBox.runCommand("clear"); - assertListSize(0); + assertDeadlineListSize(0); assertResultMessage("Task man has been cleared!"); } } diff --git a/src/test/java/guitests/DeleteCommandTest.java b/src/test/java/guitests/DeleteCommandTest.java index c063213ebba2..428e7d31f3a9 100644 --- a/src/test/java/guitests/DeleteCommandTest.java +++ b/src/test/java/guitests/DeleteCommandTest.java @@ -54,7 +54,7 @@ private void assertDeleteSuccess(int targetIndexOneIndexed, final TestTask[] cur commandBox.runCommand("delete " + targetIndexOneIndexed); //confirm the list now contains all previous tasks except the deleted task - assertTrue(taskListPanel.isListMatching(expectedRemainderActivities)); + assertTrue(deadlineListPanel.isListMatching(expectedRemainderActivities)); //confirm the result message is correct assertResultMessage(String.format(MESSAGE_DELETE_EVENT_SUCCESS, taskToDelete)); diff --git a/src/test/java/guitests/HelpWindowTest.java b/src/test/java/guitests/HelpWindowTest.java index 588ef0899edd..1b8d064d2e77 100644 --- a/src/test/java/guitests/HelpWindowTest.java +++ b/src/test/java/guitests/HelpWindowTest.java @@ -13,7 +13,7 @@ public class HelpWindowTest extends TaskManGuiTest { @Test public void openHelpWindow() { - taskListPanel.clickOnTableView(); + deadlineListPanel.clickOnTableView(); assertHelpWindowOpen(mainMenu.openHelpWindowUsingAccelerator()); diff --git a/src/test/java/guitests/ListCommandTest.java b/src/test/java/guitests/ListCommandTest.java index 6eaa26c34b22..0bb77f2fdb8c 100644 --- a/src/test/java/guitests/ListCommandTest.java +++ b/src/test/java/guitests/ListCommandTest.java @@ -41,8 +41,8 @@ private void assertListResult(String command, TestTask... expectedHits) { for (int i = 0; i < expectedHits.length; i++) { expectedActivities[i] = new Activity(new Task(expectedHits[i])); } - assertListSize(expectedActivities.length); + assertDeadlineListSize(expectedActivities.length); assertResultMessage(expectedActivities.length + " tasks listed!"); - assertTrue(taskListPanel.isListMatching(expectedActivities)); + assertTrue(deadlineListPanel.isListMatching(expectedActivities)); } } diff --git a/src/test/java/guitests/SelectCommandTest.java b/src/test/java/guitests/SelectCommandTest.java index 312e11111c2b..a446d36933bd 100644 --- a/src/test/java/guitests/SelectCommandTest.java +++ b/src/test/java/guitests/SelectCommandTest.java @@ -1,15 +1,21 @@ package guitests; -import org.junit.Ignore; import org.junit.Test; import seedu.taskman.model.event.Activity; +import java.util.regex.Pattern; + import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; -// todo: should fix -@Ignore +/** + * Test select deadlines() + */ public class SelectCommandTest extends TaskManGuiTest { + public static final Pattern SELECT_SUCCESS_MESSAGE_CHECK = + Pattern.compile("Selected Task: (?:\\S*\\s*)*"); + @Test public void selectTask_nonEmptyList() { @@ -32,30 +38,30 @@ public void selectTask_nonEmptyList() { @Test public void selectTask_emptyList() { commandBox.runCommand("clear"); - assertListSize(0); + assertDeadlineListSize(0); assertSelectionInvalid(1); //invalid index } private void assertSelectionInvalid(int index) { - commandBox.runCommand("select " + index); + commandBox.runCommand("select d" + index); assertResultMessage("The task index provided is invalid"); } private void assertSelectionSuccess(int index) { - commandBox.runCommand("select " + index); - assertResultMessage("Selected Task: " + index); + commandBox.runCommand("select d" + index); + System.out.println(resultDisplay.getText()); + assertTrue(SELECT_SUCCESS_MESSAGE_CHECK.matcher(resultDisplay.getText()).matches()); assertTaskSelected(index); } private void assertTaskSelected(int index) { - assertEquals(taskListPanel.getSelectedTasks().size(), 1); - Activity selectedTask = taskListPanel.getSelectedTasks().get(0); - assertEquals(taskListPanel.getTask(index - 1), selectedTask); - //TODO: confirm the correct page is loaded in the Browser Panel + assertEquals(deadlineListPanel.getSelectedTasks().size(), 1); + Activity selectedTask = deadlineListPanel.getSelectedTasks().get(0); + assertEquals(deadlineListPanel.getActivity(index - 1), selectedTask); } private void assertNoTaskSelected() { - assertEquals(taskListPanel.getSelectedTasks().size(), 0); + assertEquals(deadlineListPanel.getSelectedTasks().size(), 0); } } diff --git a/src/test/java/guitests/TaskManGuiTest.java b/src/test/java/guitests/TaskManGuiTest.java index abd9fd92ff0a..300be5b16331 100644 --- a/src/test/java/guitests/TaskManGuiTest.java +++ b/src/test/java/guitests/TaskManGuiTest.java @@ -39,7 +39,9 @@ public abstract class TaskManGuiTest { */ protected MainGuiHandle mainGui; protected MainMenuHandle mainMenu; - protected TaskListPanelHandle taskListPanel; + protected ListPanelHandle deadlineListPanel; + protected ListPanelHandle floatingListPanel; + protected ListPanelHandle scheduleListPanel; protected ResultDisplayHandle resultDisplay; protected CommandBoxHandle commandBox; private Stage stage; @@ -59,7 +61,9 @@ public void setup() throws Exception { FxToolkit.setupStage((stage) -> { mainGui = new MainGuiHandle(new GuiRobot(), stage); mainMenu = mainGui.getMainMenu(); - taskListPanel = mainGui.getTaskListPanel(); + deadlineListPanel = mainGui.getDeadlineListPanel(); + floatingListPanel = mainGui.getFloatingListPanel(); + scheduleListPanel = mainGui.getScheduleListPanel(); resultDisplay = mainGui.getResultDisplay(); commandBox = mainGui.getCommandBox(); this.stage = stage; @@ -103,8 +107,8 @@ public void assertMatching(Activity task, TaskRowHandle row) { /** * Asserts the size of the task list is equal to the given number. */ - protected void assertListSize(int size) { - int numberOfPeople = taskListPanel.getNumberOfPeople(); + protected void assertDeadlineListSize(int size) { + int numberOfPeople = deadlineListPanel.getNumberOfPeople(); assertEquals(size, numberOfPeople); } diff --git a/src/test/java/guitests/guihandles/TaskListPanelHandle.java b/src/test/java/guitests/guihandles/ListPanelHandle.java similarity index 78% rename from src/test/java/guitests/guihandles/TaskListPanelHandle.java rename to src/test/java/guitests/guihandles/ListPanelHandle.java index 999fb2721723..4e1edbd5d053 100644 --- a/src/test/java/guitests/guihandles/TaskListPanelHandle.java +++ b/src/test/java/guitests/guihandles/ListPanelHandle.java @@ -4,7 +4,6 @@ import guitests.GuiRobot; import javafx.collections.ObservableList; import javafx.geometry.Point2D; -import javafx.scene.Node; import javafx.scene.control.TableView; import javafx.stage.Stage; import seedu.taskman.TestApp; @@ -13,21 +12,43 @@ import java.util.List; import java.util.Optional; -import java.util.Set; import static org.junit.Assert.assertTrue; /** * Provides a handle for the panel containing the task list. */ -public class TaskListPanelHandle extends GuiHandle { +public class ListPanelHandle extends GuiHandle { public static final int NOT_FOUND = -1; - private static final String EVENT_LIST_VIEW_ID = "#taskListView"; + private final String listViewId; - public TaskListPanelHandle(GuiRobot guiRobot, Stage primaryStage) { + public static final String SCHEDULE_LIST_VIEW_ID = "#scheduleTableView"; + public static final String FLOATING_LIST_VIEW_ID = "#floatingTableView"; + public static final String DEADLINE_LIST_VIEW_ID = "#deadlineTableView"; + + + public ListPanelHandle(GuiRobot guiRobot, Stage primaryStage, Activity.PanelType panelType) { super(guiRobot, primaryStage, TestApp.APP_TITLE); + switch(panelType){ + case SCHEDULE:{ + listViewId = SCHEDULE_LIST_VIEW_ID; + break; + } + case FLOATING:{ + listViewId = FLOATING_LIST_VIEW_ID; + break; + } + case DEADLINE:{ + listViewId = DEADLINE_LIST_VIEW_ID; + break; + } + default:{ + listViewId = "unsupported"; + assert false: "Unsupported Panel Type"; + } + } } public List getSelectedTasks() { @@ -37,10 +58,11 @@ public List getSelectedTasks() { // TODO Resolve generic type issue. @SuppressWarnings("unchecked") - public TableView getTableView() { - return (TableView) getNode(EVENT_LIST_VIEW_ID); + public TableView getTableView(){ + return (TableView) getNode(listViewId); } + /** * Returns true if the list is showing the task details correctly and in correct order. * @@ -103,21 +125,21 @@ public boolean isListMatching(int startPosition, Activity... tasks) throws Illeg } - public TaskRowHandle navigateToTask(String title) { + public TaskRowHandle navigateToActivity(String title) { guiRobot.sleep(500); //Allow a bit of time for the list to be updated final Optional task = getTableView().getItems().stream().filter(p -> p.getTitle().title.equals(title)).findAny(); if (!task.isPresent()) { throw new IllegalStateException("Title not found: " + title); } - return navigateToTask(task.get()); + return navigateToActivity(task.get()); } /** * Navigates the TableView to display and select the task. */ - public TaskRowHandle navigateToTask(Activity task) { - int index = getTaskIndex(task); + public TaskRowHandle navigateToActivity(Activity task) { + int index = getActivityIndex(task); guiRobot.interact(() -> { getTableView().scrollTo(index); @@ -132,7 +154,7 @@ public TaskRowHandle navigateToTask(Activity task) { /** * Returns the position of the task given, {@code NOT_FOUND} if not found in the list. */ - public int getTaskIndex(Activity targetTask) { + public int getActivityIndex(Activity targetTask) { List tasksInList = getTableView().getItems(); for (int i = 0; i < tasksInList.size(); i++) { if (tasksInList.get(i).getTitle().equals(targetTask.getTitle())) { @@ -145,7 +167,7 @@ public int getTaskIndex(Activity targetTask) { /** * Gets a task from the list by index */ - public Activity getTask(int index) { + public Activity getActivity(int index) { return getTableView().getItems().get(index); } diff --git a/src/test/java/guitests/guihandles/MainGuiHandle.java b/src/test/java/guitests/guihandles/MainGuiHandle.java index 7a1d34f0d884..8b8adbe5ae6a 100644 --- a/src/test/java/guitests/guihandles/MainGuiHandle.java +++ b/src/test/java/guitests/guihandles/MainGuiHandle.java @@ -3,6 +3,7 @@ import guitests.GuiRobot; import javafx.stage.Stage; import seedu.taskman.TestApp; +import seedu.taskman.model.event.Activity; /** * Provides a handle for the main GUI. @@ -13,8 +14,16 @@ public MainGuiHandle(GuiRobot guiRobot, Stage primaryStage) { super(guiRobot, primaryStage, TestApp.APP_TITLE); } - public TaskListPanelHandle getTaskListPanel() { - return new TaskListPanelHandle(guiRobot, primaryStage); + public ListPanelHandle getDeadlineListPanel() { + return new ListPanelHandle(guiRobot, primaryStage, Activity.PanelType.DEADLINE); + } + + public ListPanelHandle getFloatingListPanel() { + return new ListPanelHandle(guiRobot, primaryStage, Activity.PanelType.FLOATING); + } + + public ListPanelHandle getScheduleListPanel() { + return new ListPanelHandle(guiRobot, primaryStage, Activity.PanelType.SCHEDULE); } public ResultDisplayHandle getResultDisplay() {