Skip to content

Commit ac925ed

Browse files
committed
Add Integration / Unit tests for Delete Meeting
Delete Meeting Command is lacking unit tests. Let's- Add unit integration tests for command.
1 parent 4c51945 commit ac925ed

1 file changed

Lines changed: 93 additions & 0 deletions

File tree

Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
package seedu.address.logic.commands.meetings;
2+
3+
import static org.junit.jupiter.api.Assertions.assertFalse;
4+
import static org.junit.jupiter.api.Assertions.assertTrue;
5+
import static seedu.address.logic.commands.meetings.MeetingCommandTestUtil.showMeetingAtIndex;
6+
import static seedu.address.logic.commands.persons.PersonCommandTestUtil.assertCommandFailure;
7+
import static seedu.address.logic.commands.persons.PersonCommandTestUtil.assertCommandSuccess;
8+
import static seedu.address.logic.commands.persons.PersonCommandTestUtil.showPersonAtIndex;
9+
import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST;
10+
import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND;
11+
import static seedu.address.testutil.TypicalMeetings.getTypicalMeetingBook;
12+
import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;
13+
14+
15+
import org.junit.jupiter.api.Test;
16+
17+
import seedu.address.commons.core.Messages;
18+
import seedu.address.commons.core.index.Index;
19+
import seedu.address.logic.commands.persons.DeletePersonCommand;
20+
import seedu.address.model.Model;
21+
import seedu.address.model.ModelManager;
22+
import seedu.address.model.UserPrefs;
23+
import seedu.address.model.meeting.Meeting;
24+
import seedu.address.model.person.AddressBook;
25+
import seedu.address.model.person.Person;
26+
27+
/**
28+
* Contains integration tests (interaction with the Model) and unit tests for
29+
* {@code DeleteMeetingCommand}.
30+
*/
31+
32+
public class DeleteMeetingCommandTest {
33+
private Model model = new ModelManager(new AddressBook(), getTypicalMeetingBook(), new UserPrefs());
34+
35+
@Test
36+
public void execute_validIndexUnfilteredList_success() {
37+
Meeting meetingToDelete = model.getFilteredMeetingList().get(INDEX_FIRST.getZeroBased());
38+
DeleteMeetingCommand deleteMeetingCommand = new DeleteMeetingCommand(INDEX_FIRST);
39+
40+
String expectedMessage = String.format(DeleteMeetingCommand.MESSAGE_DELETE_MEETING_SUCCESS, meetingToDelete);
41+
42+
ModelManager expectedModel = new ModelManager(model.getAddressBook(), model.getMeetingBook(), new UserPrefs());
43+
expectedModel.deleteMeeting(meetingToDelete);
44+
45+
assertCommandSuccess(deleteMeetingCommand, model, expectedMessage, expectedModel);
46+
}
47+
48+
@Test
49+
public void execute_invalidIndexUnfilteredList_throwsCommandException() {
50+
Index outOfBoundIndex = Index.fromOneBased(model.getFilteredMeetingList().size() + 1);
51+
DeleteMeetingCommand deleteMeetingCommand = new DeleteMeetingCommand(outOfBoundIndex);
52+
53+
assertCommandFailure(deleteMeetingCommand, model, Messages.MESSAGE_INVALID_MEETING_DISPLAYED_INDEX);
54+
}
55+
56+
@Test
57+
public void execute_validIndexFilteredList_success() {
58+
showMeetingAtIndex(model, INDEX_FIRST);
59+
60+
Meeting meetingToDelete = model.getFilteredMeetingList().get(INDEX_FIRST.getZeroBased());
61+
DeleteMeetingCommand deleteMeetingCommand = new DeleteMeetingCommand(INDEX_FIRST);
62+
63+
String expectedMessage = String.format(DeleteMeetingCommand.MESSAGE_DELETE_MEETING_SUCCESS, meetingToDelete);
64+
65+
Model expectedModel = new ModelManager(model.getAddressBook(), model.getMeetingBook(), new UserPrefs());
66+
expectedModel.deleteMeeting(meetingToDelete);
67+
showNoMeeting(expectedModel);
68+
69+
assertCommandSuccess(deleteMeetingCommand, model, expectedMessage, expectedModel);
70+
}
71+
72+
/**
73+
* Updates {@code model}'s filtered list to show no one.
74+
*/
75+
private void showNoMeeting(Model model) {
76+
model.updateFilteredMeetingList(p -> false);
77+
assertTrue(model.getFilteredPersonList().isEmpty());
78+
}
79+
80+
@Test
81+
public void execute_invalidIndexFilteredList_throwsCommandException() {
82+
showMeetingAtIndex(model, INDEX_FIRST);
83+
84+
Index outOfBoundIndex = INDEX_SECOND;
85+
// ensures that outOfBoundIndex is still in bounds of meeting book list
86+
assertTrue(outOfBoundIndex.getZeroBased() < model.getMeetingBook().getMeetingList().size());
87+
88+
DeleteMeetingCommand deleteMeetingCommand = new DeleteMeetingCommand(outOfBoundIndex);
89+
90+
assertCommandFailure(deleteMeetingCommand, model, Messages.MESSAGE_INVALID_MEETING_DISPLAYED_INDEX);
91+
}
92+
93+
}

0 commit comments

Comments
 (0)