From 5e1962076c31992eca71935238619a8388717486 Mon Sep 17 00:00:00 2001 From: m1oojv <97022614+m1oojv@users.noreply.github.com> Date: Tue, 24 Oct 2023 16:26:35 +0800 Subject: [PATCH 1/9] refactor: Update with static variables --- src/main/java/seedu/address/model/task/Task.java | 6 +++--- .../java/seedu/address/model/ModelManagerTest.java | 10 ++++------ src/test/java/seedu/address/testutil/TaskBuilder.java | 3 +-- 3 files changed, 8 insertions(+), 11 deletions(-) diff --git a/src/main/java/seedu/address/model/task/Task.java b/src/main/java/seedu/address/model/task/Task.java index 9805547187b..8b1b7f36ac0 100644 --- a/src/main/java/seedu/address/model/task/Task.java +++ b/src/main/java/seedu/address/model/task/Task.java @@ -26,7 +26,7 @@ public Task(Title title, Note note) { requireAllNonNull(title, note); this.title = title; this.note = note; - this.status = new Status(Status.TaskStatus.NOT_DONE); + this.status = Status.STATUS_NOT_DONE; } /** @@ -59,14 +59,14 @@ public Status getStatus() { * Updates the Status of the Task as Done. */ public Task markDone() { - return new Task(title, note, new Status(Status.TaskStatus.DONE)); + return new Task(title, note, Status.STATUS_DONE); } /** * Updates the Status of the Task as not Done. */ public Task unmarkDone() { - return new Task(title, note, new Status(Status.TaskStatus.NOT_DONE)); + return new Task(title, note, Status.STATUS_NOT_DONE); } /** diff --git a/src/test/java/seedu/address/model/ModelManagerTest.java b/src/test/java/seedu/address/model/ModelManagerTest.java index cb6e3e336a8..e65ddc1e410 100644 --- a/src/test/java/seedu/address/model/ModelManagerTest.java +++ b/src/test/java/seedu/address/model/ModelManagerTest.java @@ -18,7 +18,6 @@ import seedu.address.commons.core.GuiSettings; import seedu.address.model.person.NameContainsKeywordsPredicate; import seedu.address.model.task.Status; -import seedu.address.model.task.Status.TaskStatus; import seedu.address.model.task.Task; import seedu.address.testutil.AddressBookBuilder; @@ -118,9 +117,9 @@ public void markTask_validTask_success() { modelManager.addTask(AGENDA); Task markedTask = modelManager.markTask(AGENDA); - assertTrue(markedTask.getStatus().equals(new Status(TaskStatus.DONE))); + assertTrue(markedTask.getStatus().equals(Status.STATUS_DONE)); - assertTrue(modelManager.getFilteredTaskList().get(0).getStatus().equals(new Status(TaskStatus.DONE))); + assertTrue(modelManager.getFilteredTaskList().get(0).getStatus().equals(Status.STATUS_DONE)); } @Test @@ -129,10 +128,9 @@ public void unmarkTask_validTask_success() { Task markedTask = modelManager.markTask(AGENDA); Task unmarkedTask = modelManager.unmarkTask(markedTask); - assertTrue(unmarkedTask.getStatus().equals(new Status(TaskStatus.NOT_DONE))); + assertTrue(unmarkedTask.getStatus().equals(Status.STATUS_NOT_DONE)); - assertTrue(modelManager.getFilteredTaskList().get(0).getStatus().equals( - new Status(TaskStatus.NOT_DONE))); + assertTrue(modelManager.getFilteredTaskList().get(0).getStatus().equals(Status.STATUS_NOT_DONE)); } @Test diff --git a/src/test/java/seedu/address/testutil/TaskBuilder.java b/src/test/java/seedu/address/testutil/TaskBuilder.java index 5feead8331e..eb539b97488 100644 --- a/src/test/java/seedu/address/testutil/TaskBuilder.java +++ b/src/test/java/seedu/address/testutil/TaskBuilder.java @@ -2,7 +2,6 @@ import seedu.address.model.task.Note; import seedu.address.model.task.Status; -import seedu.address.model.task.Status.TaskStatus; import seedu.address.model.task.Task; import seedu.address.model.task.Title; @@ -24,7 +23,7 @@ public class TaskBuilder { public TaskBuilder() { title = new Title(DEFAULT_TITLE); note = new Note(DEFAULT_NOTE); - status = new Status(TaskStatus.NOT_DONE); + status = Status.STATUS_NOT_DONE; } /** From a9de4814a747009a40df9a8a74d4be2a4086cfff Mon Sep 17 00:00:00 2001 From: m1oojv <97022614+m1oojv@users.noreply.github.com> Date: Tue, 24 Oct 2023 16:30:16 +0800 Subject: [PATCH 2/9] feat: Add findDone --- .../logic/commands/FindDoneCommand.java | 57 +++++++++++++++++++ .../logic/parser/AddressBookParser.java | 4 ++ .../model/task/TaskStatusPredicate.java | 19 +++++++ 3 files changed, 80 insertions(+) create mode 100644 src/main/java/seedu/address/logic/commands/FindDoneCommand.java create mode 100644 src/main/java/seedu/address/model/task/TaskStatusPredicate.java diff --git a/src/main/java/seedu/address/logic/commands/FindDoneCommand.java b/src/main/java/seedu/address/logic/commands/FindDoneCommand.java new file mode 100644 index 00000000000..22358219936 --- /dev/null +++ b/src/main/java/seedu/address/logic/commands/FindDoneCommand.java @@ -0,0 +1,57 @@ +package seedu.address.logic.commands; + +import static java.util.Objects.requireNonNull; + +import seedu.address.commons.util.ToStringBuilder; +import seedu.address.logic.Messages; +import seedu.address.model.Model; +import seedu.address.model.task.Status; +import seedu.address.model.task.TaskStatusPredicate; + +/** + * Finds and lists all task in address book whose status is {@link Status#STATUS_DONE}. + */ +public class FindDoneCommand extends Command { + + public static final String COMMAND_WORD = "findDone"; + + public static final String MESSAGE_USAGE = COMMAND_WORD + ": Finds all tasks whose status is marked as " + + "done and displays them as a list with index numbers.\n" + + "Example: " + COMMAND_WORD; + + private final TaskStatusPredicate predicate; + + public FindDoneCommand() { + this.predicate = new TaskStatusPredicate(Status.STATUS_DONE); + } + + @Override + public CommandResult execute(Model model) { + requireNonNull(model); + model.updateFilteredTaskList(predicate); + return new CommandResult( + String.format(Messages.MESSAGE_TASKS_LISTED_OVERVIEW, model.getFilteredTaskList().size())); + } + + @Override + public boolean equals(Object other) { + if (other == this) { + return true; + } + + // instanceof handles nulls + if (!(other instanceof FindDoneCommand)) { + return false; + } + + FindDoneCommand otherFindDoneCommand = (FindDoneCommand) other; + return predicate.equals(otherFindDoneCommand.predicate); + } + + @Override + public String toString() { + return new ToStringBuilder(this) + .add("predicate", predicate) + .toString(); + } +} diff --git a/src/main/java/seedu/address/logic/parser/AddressBookParser.java b/src/main/java/seedu/address/logic/parser/AddressBookParser.java index bddab16a695..5989ce3008d 100644 --- a/src/main/java/seedu/address/logic/parser/AddressBookParser.java +++ b/src/main/java/seedu/address/logic/parser/AddressBookParser.java @@ -18,6 +18,7 @@ import seedu.address.logic.commands.EditPersonCommand; import seedu.address.logic.commands.EditTaskCommand; import seedu.address.logic.commands.ExitCommand; +import seedu.address.logic.commands.FindDoneCommand; import seedu.address.logic.commands.FindPersonCommand; import seedu.address.logic.commands.FindTaskCommand; import seedu.address.logic.commands.HelpCommand; @@ -100,6 +101,9 @@ public Command parseCommand(String userInput) throws ParseException { case FindTaskCommand.COMMAND_WORD: return new FindTaskCommandParser().parse(arguments); + case FindDoneCommand.COMMAND_WORD: + return new FindDoneCommand(); + case DeleteAllTaskCommand.COMMAND_WORD: return new DeleteAllTaskCommand(); diff --git a/src/main/java/seedu/address/model/task/TaskStatusPredicate.java b/src/main/java/seedu/address/model/task/TaskStatusPredicate.java new file mode 100644 index 00000000000..e8db104e54f --- /dev/null +++ b/src/main/java/seedu/address/model/task/TaskStatusPredicate.java @@ -0,0 +1,19 @@ +package seedu.address.model.task; + +import java.util.function.Predicate; + +/** + * Tests that a {@code Task}'s {@code status} matches the given status. + */ +public class TaskStatusPredicate implements Predicate { + private final Status status; + + public TaskStatusPredicate(Status status) { + this.status = status; + } + + @Override + public boolean test(Task task) { + return task.getStatus().equals(status); + } +} From 78c842ee2dfb3b05d28b3962cfa1136d7c9bc9bc Mon Sep 17 00:00:00 2001 From: m1oojv <97022614+m1oojv@users.noreply.github.com> Date: Tue, 24 Oct 2023 17:11:48 +0800 Subject: [PATCH 3/9] chore: Add test for findDone --- .../logic/commands/FindDoneCommand.java | 23 -------- .../logic/commands/FindDoneCommandTest.java | 56 +++++++++++++++++++ 2 files changed, 56 insertions(+), 23 deletions(-) create mode 100644 src/test/java/seedu/address/logic/commands/FindDoneCommandTest.java diff --git a/src/main/java/seedu/address/logic/commands/FindDoneCommand.java b/src/main/java/seedu/address/logic/commands/FindDoneCommand.java index 22358219936..11b5482d140 100644 --- a/src/main/java/seedu/address/logic/commands/FindDoneCommand.java +++ b/src/main/java/seedu/address/logic/commands/FindDoneCommand.java @@ -2,7 +2,6 @@ import static java.util.Objects.requireNonNull; -import seedu.address.commons.util.ToStringBuilder; import seedu.address.logic.Messages; import seedu.address.model.Model; import seedu.address.model.task.Status; @@ -32,26 +31,4 @@ public CommandResult execute(Model model) { return new CommandResult( String.format(Messages.MESSAGE_TASKS_LISTED_OVERVIEW, model.getFilteredTaskList().size())); } - - @Override - public boolean equals(Object other) { - if (other == this) { - return true; - } - - // instanceof handles nulls - if (!(other instanceof FindDoneCommand)) { - return false; - } - - FindDoneCommand otherFindDoneCommand = (FindDoneCommand) other; - return predicate.equals(otherFindDoneCommand.predicate); - } - - @Override - public String toString() { - return new ToStringBuilder(this) - .add("predicate", predicate) - .toString(); - } } diff --git a/src/test/java/seedu/address/logic/commands/FindDoneCommandTest.java b/src/test/java/seedu/address/logic/commands/FindDoneCommandTest.java new file mode 100644 index 00000000000..44f15a13c25 --- /dev/null +++ b/src/test/java/seedu/address/logic/commands/FindDoneCommandTest.java @@ -0,0 +1,56 @@ +package seedu.address.logic.commands; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static seedu.address.logic.Messages.MESSAGE_TASKS_LISTED_OVERVIEW; +import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess; +import static seedu.address.testutil.TypicalTasks.BUDGET; +import static seedu.address.testutil.TypicalTasks.ENTERTAINMENT; +import static seedu.address.testutil.TypicalTasks.FUNDING; +import static seedu.address.testutil.TypicalTasks.GUESTLIST; +import static seedu.address.testutil.TypicalTasks.HOSPITALITY; +import static seedu.address.testutil.TypicalTasks.getTypicalAddressBook; + +import java.util.Arrays; +import java.util.Collections; + +import org.junit.jupiter.api.Test; + +import seedu.address.model.Model; +import seedu.address.model.ModelManager; +import seedu.address.model.UserPrefs; +import seedu.address.model.task.Status; +import seedu.address.model.task.Task; +import seedu.address.model.task.TaskStatusPredicate; + +/** + * Contains integration tests (interaction with the Model) for {@code FindDoneCommand}. + */ +public class FindDoneCommandTest { + private final Model model = new ModelManager(getTypicalAddressBook(), new UserPrefs()); + private final Model expectedModel = new ModelManager(getTypicalAddressBook(), new UserPrefs()); + + @Test + public void execute_noTasksFound() { + String expectedMessage = String.format(MESSAGE_TASKS_LISTED_OVERVIEW, 0); + FindDoneCommand command = new FindDoneCommand(); + TaskStatusPredicate predicate = new TaskStatusPredicate(Status.STATUS_DONE); + for (Task task : expectedModel.getFilteredTaskList()) { + expectedModel.unmarkTask(task); + model.unmarkTask(task); + } + expectedModel.updateFilteredTaskList(predicate); + assertCommandSuccess(command, model, expectedMessage, expectedModel); + assertEquals(Collections.emptyList(), model.getFilteredTaskList()); + } + + @Test + public void execute_multipleTasksFound() { + String expectedMessage = String.format(MESSAGE_TASKS_LISTED_OVERVIEW, 5); + FindDoneCommand command = new FindDoneCommand(); + TaskStatusPredicate predicate = new TaskStatusPredicate(Status.STATUS_DONE); + expectedModel.updateFilteredTaskList(predicate); + assertCommandSuccess(command, model, expectedMessage, expectedModel); + assertEquals(Arrays.asList(BUDGET, ENTERTAINMENT, FUNDING, GUESTLIST, HOSPITALITY), + model.getFilteredTaskList()); + } +} From e2fbc99b0db7cafedaa3947ab2126542b714e56c Mon Sep 17 00:00:00 2001 From: m1oojv <97022614+m1oojv@users.noreply.github.com> Date: Tue, 24 Oct 2023 17:21:02 +0800 Subject: [PATCH 4/9] refactor: Update TaskStatusPredicate to lambda in Model --- .../logic/commands/FindDoneCommand.java | 10 +++------- src/main/java/seedu/address/model/Model.java | 2 ++ .../model/task/TaskStatusPredicate.java | 19 ------------------- .../logic/commands/FindDoneCommandTest.java | 9 +++------ 4 files changed, 8 insertions(+), 32 deletions(-) delete mode 100644 src/main/java/seedu/address/model/task/TaskStatusPredicate.java diff --git a/src/main/java/seedu/address/logic/commands/FindDoneCommand.java b/src/main/java/seedu/address/logic/commands/FindDoneCommand.java index 11b5482d140..1bf64dcc691 100644 --- a/src/main/java/seedu/address/logic/commands/FindDoneCommand.java +++ b/src/main/java/seedu/address/logic/commands/FindDoneCommand.java @@ -1,11 +1,11 @@ package seedu.address.logic.commands; import static java.util.Objects.requireNonNull; +import static seedu.address.model.Model.PREDICATE_SHOW_DONE_TASKS; import seedu.address.logic.Messages; import seedu.address.model.Model; import seedu.address.model.task.Status; -import seedu.address.model.task.TaskStatusPredicate; /** * Finds and lists all task in address book whose status is {@link Status#STATUS_DONE}. @@ -18,16 +18,12 @@ public class FindDoneCommand extends Command { + "done and displays them as a list with index numbers.\n" + "Example: " + COMMAND_WORD; - private final TaskStatusPredicate predicate; - - public FindDoneCommand() { - this.predicate = new TaskStatusPredicate(Status.STATUS_DONE); - } + public FindDoneCommand() {} @Override public CommandResult execute(Model model) { requireNonNull(model); - model.updateFilteredTaskList(predicate); + model.updateFilteredTaskList(PREDICATE_SHOW_DONE_TASKS); return new CommandResult( String.format(Messages.MESSAGE_TASKS_LISTED_OVERVIEW, model.getFilteredTaskList().size())); } diff --git a/src/main/java/seedu/address/model/Model.java b/src/main/java/seedu/address/model/Model.java index aa56aa5189d..029874df7ff 100644 --- a/src/main/java/seedu/address/model/Model.java +++ b/src/main/java/seedu/address/model/Model.java @@ -6,6 +6,7 @@ import javafx.collections.ObservableList; import seedu.address.commons.core.GuiSettings; import seedu.address.model.person.Person; +import seedu.address.model.task.Status; import seedu.address.model.task.Task; /** @@ -17,6 +18,7 @@ public interface Model { */ Predicate PREDICATE_SHOW_ALL_PERSONS = unused -> true; Predicate PREDICATE_SHOW_ALL_TASKS = unused -> true; + Predicate PREDICATE_SHOW_DONE_TASKS = task -> task.getStatus().equals(Status.STATUS_DONE); /** * Returns the user prefs. diff --git a/src/main/java/seedu/address/model/task/TaskStatusPredicate.java b/src/main/java/seedu/address/model/task/TaskStatusPredicate.java deleted file mode 100644 index e8db104e54f..00000000000 --- a/src/main/java/seedu/address/model/task/TaskStatusPredicate.java +++ /dev/null @@ -1,19 +0,0 @@ -package seedu.address.model.task; - -import java.util.function.Predicate; - -/** - * Tests that a {@code Task}'s {@code status} matches the given status. - */ -public class TaskStatusPredicate implements Predicate { - private final Status status; - - public TaskStatusPredicate(Status status) { - this.status = status; - } - - @Override - public boolean test(Task task) { - return task.getStatus().equals(status); - } -} diff --git a/src/test/java/seedu/address/logic/commands/FindDoneCommandTest.java b/src/test/java/seedu/address/logic/commands/FindDoneCommandTest.java index 44f15a13c25..7a00e28fbf0 100644 --- a/src/test/java/seedu/address/logic/commands/FindDoneCommandTest.java +++ b/src/test/java/seedu/address/logic/commands/FindDoneCommandTest.java @@ -3,6 +3,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import static seedu.address.logic.Messages.MESSAGE_TASKS_LISTED_OVERVIEW; import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess; +import static seedu.address.model.Model.PREDICATE_SHOW_DONE_TASKS; import static seedu.address.testutil.TypicalTasks.BUDGET; import static seedu.address.testutil.TypicalTasks.ENTERTAINMENT; import static seedu.address.testutil.TypicalTasks.FUNDING; @@ -18,9 +19,7 @@ import seedu.address.model.Model; import seedu.address.model.ModelManager; import seedu.address.model.UserPrefs; -import seedu.address.model.task.Status; import seedu.address.model.task.Task; -import seedu.address.model.task.TaskStatusPredicate; /** * Contains integration tests (interaction with the Model) for {@code FindDoneCommand}. @@ -33,12 +32,11 @@ public class FindDoneCommandTest { public void execute_noTasksFound() { String expectedMessage = String.format(MESSAGE_TASKS_LISTED_OVERVIEW, 0); FindDoneCommand command = new FindDoneCommand(); - TaskStatusPredicate predicate = new TaskStatusPredicate(Status.STATUS_DONE); for (Task task : expectedModel.getFilteredTaskList()) { expectedModel.unmarkTask(task); model.unmarkTask(task); } - expectedModel.updateFilteredTaskList(predicate); + expectedModel.updateFilteredTaskList(PREDICATE_SHOW_DONE_TASKS); assertCommandSuccess(command, model, expectedMessage, expectedModel); assertEquals(Collections.emptyList(), model.getFilteredTaskList()); } @@ -47,8 +45,7 @@ public void execute_noTasksFound() { public void execute_multipleTasksFound() { String expectedMessage = String.format(MESSAGE_TASKS_LISTED_OVERVIEW, 5); FindDoneCommand command = new FindDoneCommand(); - TaskStatusPredicate predicate = new TaskStatusPredicate(Status.STATUS_DONE); - expectedModel.updateFilteredTaskList(predicate); + expectedModel.updateFilteredTaskList(PREDICATE_SHOW_DONE_TASKS); assertCommandSuccess(command, model, expectedMessage, expectedModel); assertEquals(Arrays.asList(BUDGET, ENTERTAINMENT, FUNDING, GUESTLIST, HOSPITALITY), model.getFilteredTaskList()); From b7cf8077c09261665e59b48b609b8b648b591037 Mon Sep 17 00:00:00 2001 From: m1oojv <97022614+m1oojv@users.noreply.github.com> Date: Tue, 24 Oct 2023 21:31:26 +0800 Subject: [PATCH 5/9] refactor: Add tests for AddressBookParser --- .../seedu/address/logic/parser/AddressBookParserTest.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/test/java/seedu/address/logic/parser/AddressBookParserTest.java b/src/test/java/seedu/address/logic/parser/AddressBookParserTest.java index 04ccdebb848..6f7b4999629 100644 --- a/src/test/java/seedu/address/logic/parser/AddressBookParserTest.java +++ b/src/test/java/seedu/address/logic/parser/AddressBookParserTest.java @@ -23,6 +23,7 @@ import seedu.address.logic.commands.EditTaskCommand; import seedu.address.logic.commands.EditTaskCommand.EditTaskDescriptor; import seedu.address.logic.commands.ExitCommand; +import seedu.address.logic.commands.FindDoneCommand; import seedu.address.logic.commands.FindPersonCommand; import seedu.address.logic.commands.FindTaskCommand; import seedu.address.logic.commands.HelpCommand; @@ -122,6 +123,12 @@ public void parseCommand_findTask() throws Exception { assertEquals(new FindTaskCommand(new TaskContainsKeywordsPredicate(keywords)), command); } + @Test + public void parseCommand_findDone() throws Exception { + assertTrue(parser.parseCommand(FindDoneCommand.COMMAND_WORD) instanceof FindDoneCommand); + assertTrue(parser.parseCommand(FindDoneCommand.COMMAND_WORD + " 3") instanceof FindDoneCommand); + } + @Test public void parseCommand_markTask() throws Exception { MarkTaskCommand command = (MarkTaskCommand) parser.parseCommand( From e0a2359137317eee95e573c9aba5dc90244a679b Mon Sep 17 00:00:00 2001 From: m1oojv <97022614+m1oojv@users.noreply.github.com> Date: Tue, 24 Oct 2023 21:50:00 +0800 Subject: [PATCH 6/9] feat: Add findNotDone --- .../logic/commands/FindNotDoneCommand.java | 30 +++++++++++++++++++ .../logic/parser/AddressBookParser.java | 4 +++ src/main/java/seedu/address/model/Model.java | 1 + 3 files changed, 35 insertions(+) create mode 100644 src/main/java/seedu/address/logic/commands/FindNotDoneCommand.java diff --git a/src/main/java/seedu/address/logic/commands/FindNotDoneCommand.java b/src/main/java/seedu/address/logic/commands/FindNotDoneCommand.java new file mode 100644 index 00000000000..90b24da92f0 --- /dev/null +++ b/src/main/java/seedu/address/logic/commands/FindNotDoneCommand.java @@ -0,0 +1,30 @@ +package seedu.address.logic.commands; + +import static java.util.Objects.requireNonNull; +import static seedu.address.model.Model.PREDICATE_SHOW_NOT_DONE_TASKS; + +import seedu.address.logic.Messages; +import seedu.address.model.Model; +import seedu.address.model.task.Status; + +/** + * Finds and lists all task in address book whose status is {@link Status#STATUS_NOT_DONE}. + */ +public class FindNotDoneCommand extends Command { + + public static final String COMMAND_WORD = "findNotDone"; + + public static final String MESSAGE_USAGE = COMMAND_WORD + ": Finds all tasks whose status is marked as " + + "not done and displays them as a list with index numbers.\n" + + "Example: " + COMMAND_WORD; + + public FindNotDoneCommand() {} + + @Override + public CommandResult execute(Model model) { + requireNonNull(model); + model.updateFilteredTaskList(PREDICATE_SHOW_NOT_DONE_TASKS); + return new CommandResult( + String.format(Messages.MESSAGE_TASKS_LISTED_OVERVIEW, model.getFilteredTaskList().size())); + } +} diff --git a/src/main/java/seedu/address/logic/parser/AddressBookParser.java b/src/main/java/seedu/address/logic/parser/AddressBookParser.java index 5989ce3008d..3581515585e 100644 --- a/src/main/java/seedu/address/logic/parser/AddressBookParser.java +++ b/src/main/java/seedu/address/logic/parser/AddressBookParser.java @@ -19,6 +19,7 @@ import seedu.address.logic.commands.EditTaskCommand; import seedu.address.logic.commands.ExitCommand; import seedu.address.logic.commands.FindDoneCommand; +import seedu.address.logic.commands.FindNotDoneCommand; import seedu.address.logic.commands.FindPersonCommand; import seedu.address.logic.commands.FindTaskCommand; import seedu.address.logic.commands.HelpCommand; @@ -104,6 +105,9 @@ public Command parseCommand(String userInput) throws ParseException { case FindDoneCommand.COMMAND_WORD: return new FindDoneCommand(); + case FindNotDoneCommand.COMMAND_WORD: + return new FindNotDoneCommand(); + case DeleteAllTaskCommand.COMMAND_WORD: return new DeleteAllTaskCommand(); diff --git a/src/main/java/seedu/address/model/Model.java b/src/main/java/seedu/address/model/Model.java index 029874df7ff..2499812bdbf 100644 --- a/src/main/java/seedu/address/model/Model.java +++ b/src/main/java/seedu/address/model/Model.java @@ -19,6 +19,7 @@ public interface Model { Predicate PREDICATE_SHOW_ALL_PERSONS = unused -> true; Predicate PREDICATE_SHOW_ALL_TASKS = unused -> true; Predicate PREDICATE_SHOW_DONE_TASKS = task -> task.getStatus().equals(Status.STATUS_DONE); + Predicate PREDICATE_SHOW_NOT_DONE_TASKS = task -> task.getStatus().equals(Status.STATUS_NOT_DONE); /** * Returns the user prefs. From 694d8d76199cfed1f5ba4ccafc85c94993b4a09a Mon Sep 17 00:00:00 2001 From: m1oojv <97022614+m1oojv@users.noreply.github.com> Date: Tue, 24 Oct 2023 21:56:57 +0800 Subject: [PATCH 7/9] refactor: Add tests for findNotDone --- .../commands/FindNotDoneCommandTest.java | 52 +++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 src/test/java/seedu/address/logic/commands/FindNotDoneCommandTest.java diff --git a/src/test/java/seedu/address/logic/commands/FindNotDoneCommandTest.java b/src/test/java/seedu/address/logic/commands/FindNotDoneCommandTest.java new file mode 100644 index 00000000000..61020fa3815 --- /dev/null +++ b/src/test/java/seedu/address/logic/commands/FindNotDoneCommandTest.java @@ -0,0 +1,52 @@ +package seedu.address.logic.commands; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static seedu.address.logic.Messages.MESSAGE_TASKS_LISTED_OVERVIEW; +import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess; +import static seedu.address.model.Model.PREDICATE_SHOW_NOT_DONE_TASKS; +import static seedu.address.testutil.TypicalTasks.AGENDA; +import static seedu.address.testutil.TypicalTasks.CATERING; +import static seedu.address.testutil.TypicalTasks.DRAFT; +import static seedu.address.testutil.TypicalTasks.INVITATION; +import static seedu.address.testutil.TypicalTasks.getTypicalAddressBook; + +import java.util.Arrays; +import java.util.Collections; + +import org.junit.jupiter.api.Test; + +import seedu.address.model.Model; +import seedu.address.model.ModelManager; +import seedu.address.model.UserPrefs; +import seedu.address.model.task.Task; + +/** + * Contains integration tests (interaction with the Model) for {@code FindNotDoneCommand}. + */ +public class FindNotDoneCommandTest { + private final Model model = new ModelManager(getTypicalAddressBook(), new UserPrefs()); + private final Model expectedModel = new ModelManager(getTypicalAddressBook(), new UserPrefs()); + + @Test + public void execute_noTasksFound() { + String expectedMessage = String.format(MESSAGE_TASKS_LISTED_OVERVIEW, 0); + FindNotDoneCommand command = new FindNotDoneCommand(); + for (Task task : expectedModel.getFilteredTaskList()) { + expectedModel.markTask(task); + model.markTask(task); + } + expectedModel.updateFilteredTaskList(PREDICATE_SHOW_NOT_DONE_TASKS); + assertCommandSuccess(command, model, expectedMessage, expectedModel); + assertEquals(Collections.emptyList(), model.getFilteredTaskList()); + } + + @Test + public void execute_multipleTasksFound() { + String expectedMessage = String.format(MESSAGE_TASKS_LISTED_OVERVIEW, 4); + FindNotDoneCommand command = new FindNotDoneCommand(); + expectedModel.updateFilteredTaskList(PREDICATE_SHOW_NOT_DONE_TASKS); + assertCommandSuccess(command, model, expectedMessage, expectedModel); + assertEquals(Arrays.asList(AGENDA, CATERING, DRAFT, INVITATION), + model.getFilteredTaskList()); + } +} From 395655095facc82b582a0309c3cb8b7a1f6708d5 Mon Sep 17 00:00:00 2001 From: m1oojv <97022614+m1oojv@users.noreply.github.com> Date: Tue, 24 Oct 2023 21:59:57 +0800 Subject: [PATCH 8/9] refactor: Add tests for AddressBookParser --- .../seedu/address/logic/parser/AddressBookParserTest.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/test/java/seedu/address/logic/parser/AddressBookParserTest.java b/src/test/java/seedu/address/logic/parser/AddressBookParserTest.java index 6f7b4999629..8d273b2af13 100644 --- a/src/test/java/seedu/address/logic/parser/AddressBookParserTest.java +++ b/src/test/java/seedu/address/logic/parser/AddressBookParserTest.java @@ -24,6 +24,7 @@ import seedu.address.logic.commands.EditTaskCommand.EditTaskDescriptor; import seedu.address.logic.commands.ExitCommand; import seedu.address.logic.commands.FindDoneCommand; +import seedu.address.logic.commands.FindNotDoneCommand; import seedu.address.logic.commands.FindPersonCommand; import seedu.address.logic.commands.FindTaskCommand; import seedu.address.logic.commands.HelpCommand; @@ -129,6 +130,12 @@ public void parseCommand_findDone() throws Exception { assertTrue(parser.parseCommand(FindDoneCommand.COMMAND_WORD + " 3") instanceof FindDoneCommand); } + @Test + public void parseCommand_findNotDone() throws Exception { + assertTrue(parser.parseCommand(FindNotDoneCommand.COMMAND_WORD) instanceof FindNotDoneCommand); + assertTrue(parser.parseCommand(FindNotDoneCommand.COMMAND_WORD + " 3") instanceof FindNotDoneCommand); + } + @Test public void parseCommand_markTask() throws Exception { MarkTaskCommand command = (MarkTaskCommand) parser.parseCommand( From 785d3dc3dfa5da9e0a8ec6055a23024e7acc17a9 Mon Sep 17 00:00:00 2001 From: m1oojv <97022614+m1oojv@users.noreply.github.com> Date: Thu, 26 Oct 2023 12:21:52 +0800 Subject: [PATCH 9/9] refactor: Fix bug of task status --- .../java/seedu/address/logic/commands/EditTaskCommand.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/seedu/address/logic/commands/EditTaskCommand.java b/src/main/java/seedu/address/logic/commands/EditTaskCommand.java index a1821f9f7b2..ff277f94fbe 100644 --- a/src/main/java/seedu/address/logic/commands/EditTaskCommand.java +++ b/src/main/java/seedu/address/logic/commands/EditTaskCommand.java @@ -21,6 +21,7 @@ import seedu.address.model.Model; import seedu.address.model.tag.Tag; import seedu.address.model.task.Note; +import seedu.address.model.task.Status; import seedu.address.model.task.Task; import seedu.address.model.task.Title; @@ -91,9 +92,10 @@ private static Task createEditedTask(Task taskToEdit, EditTaskDescriptor editTas Title updatedTitle = editTaskDescriptor.getTitle().orElse(taskToEdit.getTitle()); Note updatedNote = editTaskDescriptor.getNote().orElse(taskToEdit.getNote()); + Status taskStatus = taskToEdit.getStatus(); Set updatedTags = editTaskDescriptor.getTags().orElse(taskToEdit.getTags()); - return new Task(updatedTitle, updatedNote, updatedTags); + return new Task(updatedTitle, updatedNote, taskStatus, updatedTags); } @Override