Skip to content

Commit

Permalink
Merge pull request #186 from koh-jx/add-Tests
Browse files Browse the repository at this point in the history
Add tests
  • Loading branch information
yeppog authored Nov 3, 2021
2 parents 5249c38 + 27980e4 commit 362c5ef
Show file tree
Hide file tree
Showing 11 changed files with 294 additions and 3 deletions.
4 changes: 2 additions & 2 deletions src/main/java/seedu/address/logic/commands/RedoCommand.java
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ public class RedoCommand implements Command {
"Redoes the last executed command."
);

public static final String MESSAGE_UNDO_SUCCESS = "Successfully redid: ";
public static final String MESSAGE_REDO_SUCCESS = "Successfully redid: ";
public static final String MESSAGE_NOT_UNDONE = "Cannot redo any further.";

@Override
Expand All @@ -24,7 +24,7 @@ public CommandResult execute(Model model) throws CommandException {
Optional<UndoableCommand> commandToRedo = commandHistory.redo();
if (commandToRedo.isPresent()) {
CommandResult result = commandToRedo.get().execute(model);
return new CommandResult(MESSAGE_UNDO_SUCCESS + result.getFeedbackToUser());
return new CommandResult(MESSAGE_REDO_SUCCESS + result.getFeedbackToUser());
} else {
return new CommandResult(MESSAGE_NOT_UNDONE);
}
Expand Down
19 changes: 19 additions & 0 deletions src/test/java/seedu/address/logic/commands/ClearCommandTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -30,4 +30,23 @@ public void execute_nonEmptyAddressBook_success() {
assertCommandSuccess(new ClearCommand(), model, ClearCommand.MESSAGE_SUCCESS, expectedModel);
}

@Test
public void undo_nonEmptyAddressBook_success() {
Model model = new ModelManager(getTypicalAddressBook(), getTypicalTaskList(), new UserPrefs());
Model expectedModel = new ModelManager(getTypicalAddressBook(), getTypicalTaskList(), new UserPrefs());
Model originalModel = new ModelManager(getTypicalAddressBook(), getTypicalTaskList(), new UserPrefs());
expectedModel.setAddressBook(new AddressBook());
UndoableCommand clearCommand = new ClearCommand();
String expectedMessage = ClearCommand.MESSAGE_SUCCESS;

assertCommandSuccess(clearCommand, model, expectedMessage, expectedModel);
model.getCommandHistory().pushCommand(clearCommand);

String successUndoMessage = UndoCommand.MESSAGE_UNDO_SUCCESS + expectedMessage;
assertCommandSuccess(new UndoCommand(), model, successUndoMessage, originalModel);

String successRedoMessage = RedoCommand.MESSAGE_REDO_SUCCESS + expectedMessage;
assertCommandSuccess(new RedoCommand(), model, successRedoMessage, expectedModel);
}

}
34 changes: 34 additions & 0 deletions src/test/java/seedu/address/logic/commands/EditCommandTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import static org.junit.jupiter.api.Assertions.assertTrue;
import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;
import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;
import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;
import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;
import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;
import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;
Expand All @@ -26,8 +27,10 @@
import seedu.address.model.TaskList;
import seedu.address.model.UserPrefs;
import seedu.address.model.person.Person;
import seedu.address.model.task.Task;
import seedu.address.testutil.EditPersonDescriptorBuilder;
import seedu.address.testutil.PersonBuilder;
import seedu.address.testutil.TaskBuilder;

/**
* Contains integration tests (interaction with the Model) and unit tests for EditCommand.
Expand All @@ -51,6 +54,37 @@ public void execute_allFieldsSpecifiedUnfilteredList_success() {
assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);
}

@Test
public void execute_nameFieldSpecifiedUnfilteredList_success() {
Model model = new ModelManager(getTypicalAddressBook(), getTypicalTaskList(), new UserPrefs());

Index indexLastPerson = Index.fromOneBased(model.getFilteredPersonList().size());
Person lastPerson = model.getFilteredPersonList().get(indexLastPerson.getZeroBased());
Person newLastPerson = new PersonBuilder(lastPerson).withName("Test name").build();
model.setPerson(lastPerson, newLastPerson);

Index indexLastTask = Index.fromOneBased(model.getFilteredTaskList().size());
Task lastTask = model.getFilteredTaskList().get(indexLastTask.getZeroBased());
Task newLastTask = new TaskBuilder(lastTask).withContacts("Test name").build();
model.setTask(lastTask, newLastTask);

PersonBuilder personInList = new PersonBuilder(newLastPerson);
Person editedPerson = personInList.withName(VALID_NAME_AMY).build();
TaskBuilder taskInList = new TaskBuilder(newLastTask);
Task editedTask = taskInList.withContacts(VALID_NAME_AMY).build();

EditPersonDescriptor descriptor = new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY).build();
EditCommand editCommand = new EditCommand(indexLastPerson, descriptor);

String expectedMessage = String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, editedPerson);

Model expectedModel = new ModelManager(
new AddressBook(model.getAddressBook()), new TaskList(model.getTaskList()) , new UserPrefs());
expectedModel.setPerson(newLastPerson, editedPerson);

assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);
}

@Test
public void execute_someFieldsSpecifiedUnfilteredList_success() {
Index indexLastPerson = Index.fromOneBased(model.getFilteredPersonList().size());
Expand Down
22 changes: 22 additions & 0 deletions src/test/java/seedu/address/logic/commands/RedoCommandTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package seedu.address.logic.commands;

import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;
import static seedu.address.testutil.TypicalTasks.getTypicalTaskList;

import org.junit.jupiter.api.Test;

import seedu.address.model.Model;
import seedu.address.model.ModelManager;
import seedu.address.model.UserPrefs;

class RedoCommandTest {

private final Model model = new ModelManager(getTypicalAddressBook(), getTypicalTaskList(), new UserPrefs());

@Test
void execute_invalid_undo() {
RedoCommand redoCommand = new RedoCommand();
CommandTestUtil.assertCommandSuccess(redoCommand, model, RedoCommand.MESSAGE_NOT_UNDONE, model);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,12 @@

import seedu.address.commons.core.Messages;
import seedu.address.commons.core.index.Index;
import seedu.address.logic.commands.RedoCommand;
import seedu.address.logic.commands.UndoCommand;
import seedu.address.model.AddressBook;
import seedu.address.model.Model;
import seedu.address.model.ModelManager;
import seedu.address.model.TaskList;
import seedu.address.model.UserPrefs;
import seedu.address.model.tag.Tag;
import seedu.address.model.task.Task;
Expand Down Expand Up @@ -58,4 +62,25 @@ public void execute_invalidIndexFilteredList_throwsCommandException() {

}

@Test
public void undoRedo_validIndexUnfilteredList_success() {
Model originalModel = new ModelManager(
new AddressBook(model.getAddressBook()), new TaskList(model.getTaskList()), new UserPrefs());

Index targetIndex = Index.fromOneBased(1);
Task taskToDelete = model.getFilteredTaskList().get(targetIndex.getZeroBased());
DeleteTaskCommand deleteTaskCommand = new DeleteTaskCommand(targetIndex);
String expectedMessage = String.format(DeleteTaskCommand.MESSAGE_SUCCESS, taskToDelete);
ModelManager expectedModel = ModelManager.from(model);
expectedModel.deleteTask(taskToDelete);
assertCommandSuccess(deleteTaskCommand, model, expectedMessage, expectedModel);
model.getCommandHistory().pushCommand(deleteTaskCommand);

String successUndoMessage = UndoCommand.MESSAGE_UNDO_SUCCESS + expectedMessage;
assertCommandSuccess(new UndoCommand(), model, successUndoMessage, originalModel);

String successRedoMessage = RedoCommand.MESSAGE_REDO_SUCCESS + expectedMessage;
assertCommandSuccess(new RedoCommand(), model, successRedoMessage, expectedModel);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@

import seedu.address.commons.core.Messages;
import seedu.address.commons.core.index.Index;
import seedu.address.logic.commands.UndoCommand;
import seedu.address.model.AddressBook;
import seedu.address.model.Model;
import seedu.address.model.ModelManager;
Expand Down Expand Up @@ -48,6 +49,28 @@ void execute_invalidTaskIndex_failure() {
assertCommandFailure(doneTaskCommand, model, Messages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX);
}

@Test
void undo_unfilteredDoneTask_success() {
Model originalModel = new ModelManager(
new AddressBook(model.getAddressBook()), new TaskList(model.getTaskList()), new UserPrefs());

Task editedTask = new TaskBuilder().withDone(true).build();
DoneTaskCommand doneTaskCommand = new DoneTaskCommand(INDEX_FIRST_PERSON);

String expectedMessage = String.format(DoneTaskCommand.MESSAGE_SUCCESS, editedTask);
Task task = model.getTaskList().getTasks().get(INDEX_FIRST_PERSON.getZeroBased());

Model expectedModel = new ModelManager(
new AddressBook(model.getAddressBook()), new TaskList(model.getTaskList()), new UserPrefs());
expectedModel.setTask(task, editedTask);

assertCommandSuccess(doneTaskCommand, model, expectedMessage, expectedModel);
model.getCommandHistory().pushCommand(doneTaskCommand);

String successMessage = UndoCommand.MESSAGE_UNDO_SUCCESS + expectedMessage;
assertCommandSuccess(new UndoCommand(), model, successMessage, originalModel);
}

@Test
void equals() {
DoneTaskCommand doneFirstCommand = new DoneTaskCommand(INDEX_FIRST_PERSON);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
import seedu.address.commons.core.Messages;
import seedu.address.commons.core.index.Index;
import seedu.address.logic.commands.ClearCommand;
import seedu.address.logic.commands.UndoCommand;
import seedu.address.model.AddressBook;
import seedu.address.model.Model;
import seedu.address.model.ModelManager;
Expand Down Expand Up @@ -80,6 +81,29 @@ public void execute_invalidPersonIndexUnfilteredList_failure() {
assertCommandFailure(editTaskCommand, model, Messages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX);
}

@Test
void undo_unfilteredEditedAddressBook_success() {
Model originalModel = new ModelManager(
new AddressBook(model.getAddressBook()), new TaskList(model.getTaskList()), new UserPrefs());

Task editedTask = new TaskBuilder().build();
EditTaskCommand.EditTaskDescriptor descriptor = new EditTaskDescriptorBuilder(editedTask).build();
EditTaskCommand editTaskCommand = new EditTaskCommand(INDEX_FIRST_PERSON, descriptor);

String expectedMessage = String.format(EditTaskCommand.MESSAGE_EDIT_TASK_SUCCESS, editedTask);
Task task = model.getTaskList().getTasks().get(INDEX_FIRST_PERSON.getZeroBased());

Model expectedModel = new ModelManager(
new AddressBook(model.getAddressBook()), new TaskList(model.getTaskList()), new UserPrefs());
expectedModel.setTask(task, editedTask);

assertCommandSuccess(editTaskCommand, model, expectedMessage, expectedModel);
model.getCommandHistory().pushCommand(editTaskCommand);

String successMessage = UndoCommand.MESSAGE_UNDO_SUCCESS + expectedMessage;
assertCommandSuccess(new UndoCommand(), model, successMessage, originalModel);
}

@Test
public void equals() {
final EditTaskCommand standardCommand = new EditTaskCommand(INDEX_FIRST_PERSON, DESC_REPORT);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,22 @@ void execute_singleKeyword_singleTaskFound() {
assertCommandSuccess(testCommand, model, expectedMessage, expectedModel);
}

@Test
void execute_singleKeywordWithExistingFilter_filterReplaced() {
String expectedMessage = String.format(Messages.MESSAGE_TASKS_LISTED_OVERVIEW, 1);
TaskContainsKeywordsPredicate testPredicate = preparePredicate("homework");
FindTaskCommand testCommand = new FindTaskCommand(testPredicate);
expectedModel.updateFilteredTaskList(testPredicate);

assertCommandSuccess(testCommand, model, expectedMessage, expectedModel);

TaskContainsKeywordsPredicate nextTestPredicate = preparePredicate("room");
FindTaskCommand nextTestCommand = new FindTaskCommand(nextTestPredicate);
expectedModel.updateFilteredTaskList(testPredicate);

assertCommandSuccess(nextTestCommand, model, expectedMessage, expectedModel);
}

@Test
void execute_zeroKeywords_allTasksFound() {
String expectedMessage = String.format(Messages.MESSAGE_TASKS_LISTED_OVERVIEW, 4);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
package seedu.address.logic.commands.task;

import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;
import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;
import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;
import static seedu.address.testutil.TypicalTasks.getTypicalTaskList;

import org.junit.jupiter.api.Test;

import seedu.address.logic.commands.ClearCommand;
import seedu.address.logic.commands.UndoCommand;
import seedu.address.logic.commands.UndoableCommand;
import seedu.address.model.Model;
import seedu.address.model.ModelManager;
import seedu.address.model.TaskList;
import seedu.address.model.UserPrefs;

class PurgeTaskCommandTest {

@Test
void execute_emptyAddressBook_failure() {
Model model = new ModelManager();
Model expectedModel = new ModelManager();

assertCommandFailure(new PurgeTaskCommand(), model, PurgeTaskCommand.MESSAGE_NO_TASK_TO_PURGE);
}

@Test
void execute_unfilteredAddressBook_success() {
Model model = new ModelManager(getTypicalAddressBook(), getTypicalTaskList(), new UserPrefs());
Model expectedModel = new ModelManager(getTypicalAddressBook(), new TaskList(), new UserPrefs());

assertCommandSuccess(new PurgeTaskCommand(), model, PurgeTaskCommand.MESSAGE_SUCCESS, expectedModel);
}

@Test
void undo_unfilteredPurgedAddressBook_success() {
Model model = new ModelManager(getTypicalAddressBook(), getTypicalTaskList(), new UserPrefs());
Model expectedModel = new ModelManager(getTypicalAddressBook(), new TaskList(), new UserPrefs());

UndoableCommand purgeTask = new PurgeTaskCommand();
assertCommandSuccess(purgeTask, model, PurgeTaskCommand.MESSAGE_SUCCESS, expectedModel);
model.getCommandHistory().pushCommand(purgeTask);

Model originalModel = new ModelManager(getTypicalAddressBook(), getTypicalTaskList(), new UserPrefs());
String successMessage = UndoCommand.MESSAGE_UNDO_SUCCESS + PurgeTaskCommand.MESSAGE_SUCCESS;
assertCommandSuccess(new UndoCommand(), model, successMessage, originalModel);
}

@Test
public void equals() {
final PurgeTaskCommand standardCommand = new PurgeTaskCommand();

// same object -> returns true
assertTrue(standardCommand.equals(standardCommand));

// null -> returns false
assertFalse(standardCommand.equals(null));

// different types -> returns false
assertFalse(standardCommand.equals(new ClearCommand()));

// different object, same type -> returns true
assertTrue(standardCommand.equals(new PurgeTaskCommand()));
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
package seedu.address.logic.commands.task;

import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;
import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;
import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;
import static seedu.address.testutil.TypicalTasks.getTypicalTaskList;

import org.junit.jupiter.api.Test;

import seedu.address.logic.commands.UndoCommand;
import seedu.address.logic.commands.UndoableCommand;
import seedu.address.model.AddressBook;
import seedu.address.model.Model;
import seedu.address.model.ModelManager;
import seedu.address.model.TaskList;
import seedu.address.model.UserPrefs;
import seedu.address.model.task.Task;
import seedu.address.testutil.TaskBuilder;

class SetTaskCommandTest {
@Test
void execute_setTaskAsNewTask_success() {
Model model = new ModelManager(getTypicalAddressBook(), getTypicalTaskList(), new UserPrefs());
Task newTask = new TaskBuilder().build();

String expectedMessage = String.format(EditTaskCommand.MESSAGE_EDIT_TASK_SUCCESS, newTask);
Task task = model.getTaskList().getTasks().get(INDEX_FIRST_PERSON.getZeroBased());

Model expectedModel = new ModelManager(
new AddressBook(model.getAddressBook()), new TaskList(model.getTaskList()), new UserPrefs());
expectedModel.setTask(task, newTask);

assertCommandSuccess(new SetTaskCommand(task, newTask), model, expectedMessage, expectedModel);
}

@Test
void undo_unfilteredSetAddressBook_success() {
Model model = new ModelManager(getTypicalAddressBook(), getTypicalTaskList(), new UserPrefs());
Task newTask = new TaskBuilder().build();

String expectedMessage = String.format(EditTaskCommand.MESSAGE_EDIT_TASK_SUCCESS, newTask);
Task task = model.getTaskList().getTasks().get(INDEX_FIRST_PERSON.getZeroBased());

Model expectedModel = new ModelManager(
new AddressBook(model.getAddressBook()), new TaskList(model.getTaskList()), new UserPrefs());
expectedModel.setTask(task, newTask);
UndoableCommand setTaskCommand = new SetTaskCommand(task, newTask);

assertCommandSuccess(setTaskCommand, model, expectedMessage, expectedModel);
model.getCommandHistory().pushCommand(setTaskCommand);

Model originalModel = new ModelManager(getTypicalAddressBook(), getTypicalTaskList(), new UserPrefs());
String successMessage = UndoCommand.MESSAGE_UNDO_SUCCESS + expectedMessage;
assertCommandSuccess(new UndoCommand(), model, successMessage, originalModel);
}

}
Loading

0 comments on commit 362c5ef

Please sign in to comment.