Skip to content

Commit

Permalink
Fix ListPanelHandle and select test in gui test
Browse files Browse the repository at this point in the history
  • Loading branch information
leeyimin committed Oct 25, 2016
1 parent 0c24c9e commit 826df5c
Show file tree
Hide file tree
Showing 9 changed files with 83 additions and 43 deletions.
7 changes: 3 additions & 4 deletions src/test/java/guitests/AddCommandTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -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 {

Expand All @@ -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");
Expand All @@ -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
Expand All @@ -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));
}

}
8 changes: 4 additions & 4 deletions src/test/java/guitests/ClearCommandTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,22 +17,22 @@ 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();
}

private void assertClearCommandSuccess() {
commandBox.runCommand("clear");
assertListSize(0);
assertDeadlineListSize(0);
assertResultMessage("Task man has been cleared!");
}
}
2 changes: 1 addition & 1 deletion src/test/java/guitests/DeleteCommandTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -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));
Expand Down
2 changes: 1 addition & 1 deletion src/test/java/guitests/HelpWindowTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ public class HelpWindowTest extends TaskManGuiTest {
@Test
public void openHelpWindow() {

taskListPanel.clickOnTableView();
deadlineListPanel.clickOnTableView();

assertHelpWindowOpen(mainMenu.openHelpWindowUsingAccelerator());

Expand Down
4 changes: 2 additions & 2 deletions src/test/java/guitests/ListCommandTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -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));
}
}
30 changes: 18 additions & 12 deletions src/test/java/guitests/SelectCommandTest.java
Original file line number Diff line number Diff line change
@@ -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() {
Expand All @@ -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);
}

}
12 changes: 8 additions & 4 deletions src/test/java/guitests/TaskManGuiTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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;
Expand Down Expand Up @@ -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);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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<Activity> getSelectedTasks() {
Expand All @@ -37,10 +58,11 @@ public List<Activity> getSelectedTasks() {

// TODO Resolve generic type issue.
@SuppressWarnings("unchecked")
public TableView<Activity> getTableView() {
return (TableView<Activity>) getNode(EVENT_LIST_VIEW_ID);
public TableView<Activity> getTableView(){
return (TableView<Activity>) getNode(listViewId);
}


/**
* Returns true if the list is showing the task details correctly and in correct order.
*
Expand Down Expand Up @@ -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<Activity> 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);
Expand All @@ -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<Activity> tasksInList = getTableView().getItems();
for (int i = 0; i < tasksInList.size(); i++) {
if (tasksInList.get(i).getTitle().equals(targetTask.getTitle())) {
Expand All @@ -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);
}

Expand Down
13 changes: 11 additions & 2 deletions src/test/java/guitests/guihandles/MainGuiHandle.java
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand All @@ -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() {
Expand Down

0 comments on commit 826df5c

Please sign in to comment.