diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 81789dbc10e..823a1e5c967 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -603,22 +603,181 @@ testers are expected to do more *exploratory* testing. 2. Re-launch the app by double-clicking the jar file.
Expected: The most recent window size and location is retained. -### 7.2 Deleting a student +### 6.2 Student Features +#### 6.2.1 Add Student +Adds a student with their relevant details. + +Format: `add n/STUDENT_NAME c/CONTACT_NUMBER a/HOME_ADDRESS [r/RISK_LEVEL]` + +1. Use the find feature (9.2.#) to ensure student with that name does not exist. +2. Test Case 1: `add n/Ethan Tan c/98765432 a/252 ANG MO KIO AVENUE 4 01-225` + 1. Expectation: Confirmation message that includes student information. +3. Test Case 2: `add n/Rachel Teo c/87654321 a/Block 30 Kallang Place #01-23/24 r/HIGH` + 1. Expectation: Same as above +4. Test Case 3: `add n/Ethan Tan c/98765432 a/252 ANG MO KIO AVENUE 4 01-225` again + 1. Expectation: Warning `This student already exists in the address book` +5. False commands: + 1. Try missing fields: Get a message stating the format of the input + 2. Incorrect Phone Number: Get a message stating that phone numbers must be 8 digits long + +#### 6.2.2 Delete Student +Deletes a student and all related data + +Format: `delete STUDENT_INDEX` + +1. List all students using the view command. +2. Test Case 1: `delete 1` + 1. Expectation: Confirmation message is shown, Appointments and Notes are deleted as well +3. Test Case 2: `delete 0` + 1. Expectation: Invalid command format message (Index must be positive) +4. Try other invalid commands like `delete a` or using an index greater than the number of students that exists. Displays Error message + +#### 6.2.3 Adding/Deleting notes for a Student +This command either adds a note to an existing student (overwriting any existing note) or deletes a note +depending on the command format given, as further shown in examples below + +Format: `note STUDENT_INDEX note/NOTE` + +1. Test Case 1: `note 1 note/Exam stress in building` + 1. Expectation: Confirmation message is shown. Message shown when double-clicking the student +2. Test Case 2: `note 1 note/` or `note 1` + 1. Expectation: All notes get deleted +3. Other invalid tests would include invalid student index, handled similar to the case in `delete` + +Double-clicking on the Student card displays the Student notes under the Notes section! +The “Notes” column will inform you if there are no student notes for a particular Student. + +#### 6.2.4 Finding Students by Name +Find students and their related appointments based on their name. Can choose to find student based on their first name, last name or full name. + +Format: `find STUDENT_NAME` + +1. Student name must match exactly to the first name, last name or full name +2. Use existing student information or add students before conducting the following tests. +3. Test Case 1: `find David` + 1. Expectation: All students with the name David is shown +4. Test Case 2: `find Li` + 1. Expectation: All students with 'Li' as first name or last name is shown +5. Test Case 3: `find David Li` + 1. Expectation: The student 'David Li' is shown +6. Test Case 4: `find Abigail` + 1. Expectation: Message stating `No student found` +7. Other invalid commands should show respective error messages. + +#### 6.2.5 Assigning risk level to Student +This command either adds a tag to an existing student (overwriting any existing tag), or deletes a tag +depending on the command format given, as further shown in examples below + +Format: `tag STUDENT_INDEX r/RISK_LEVEL` + +1. Student must be found in the list +2. Risk level can only be `low`/`medium`/`high` +3. Test Case 1: `tag 2 r/HIGH` + 1. Expectation: Show student information with stated risk level +4. Test Case 2: `tag 2 r/moderate` + 1. Expectation: Message stating `Risk level should be one of the following three: high/medium/low` +5. Other invalid test cases would include invalid student index (Handled similar to above cases) and invalid tags (like Test Case 2) -1. Deleting a student while all students are being shown +#### 6.2.6 Editing Student details +Edit a student's contact number or address. - 1. Prerequisites: List all students using the `list` command. Multiple students in the list. +Format `edit STUDENT_INDEX [c/CONTACT_NUMBER] [a/HOME_ADDRESS]` - 2. Test case: `delete 1`
- Expected: First contact is deleted from the list. Details of the deleted contact shown in the status message. Timestamp in the status bar is updated. +1. This feature cannot be used to edit student risk level. Use `tag` instead +2. At least 1 feature should be included +3. Test Case 1: `edit 3 c/97865423` + 1. Expectation: Confirmation message shown with the updated contact +4. Test Case 2: `edit 3 a/10 Tampines Central 1 #11-14 Tampines 1` + 1. Expectation: Same as above, with updated address +5. Test Case 3: `edit 3 c/98762345 a/3791 Jalan Bukit Merah 09-27 E-Centre Redhill` + 1. Expectation: Same as above, both fields updated +6. Test Case 4: `edit 3` + 1. Expectation: Error Message `At least one field to edit must be provided.` shown - 3. Test case: `delete 0`
- Expected: No student is deleted. Error details shown in the status message. Status bar remains the same. +### 6.3 Appointment Commands - 4. Other incorrect delete commands to try: `delete`, `delete x`, `...` (where x is larger than the list size)
- Expected: Similar to previous. +#### 6.3.1 Scheduling an Appointment +Schedules a new appointment for a student. - { more test cases …​ }_ +Format: `schedule n/STUDENT_NAME date/DATE from/START_TIME to/END_TIME d/DESCRIPTION` + +1. Student must exist before an appointment is scheduled +2. Student name must be in full and match exactly +3. Must have a valid date and time +4. Test Case 1: `schedule n/Ethan Tan date/2023-12-30 from/16:30 to/17:30 d/monthly check-up` + 1. Expectation: Confirmation message for appointment is shown, appointment added to the column according to date and time. +5. Test Case 2: `schedule n/Ethan date/2023-12-28 from/16:30 to/17:30 d/monthly check-up` + 1. Expectation: `No such student exists for this appointment` Message +6. Test Case 3: `schedule n/Ethan Tan date/2023-12-30 from/16:30 to/17:30 d/monthly check-up` again + 1. Expectation: `This appointment already exists` Message +7. Test Case 4: `schedule n/David Li date/2023-12-30 from/16:30 to/17:30 d/monthly check-up` + 1. Expectation: `This appointment overlaps with an existing appointment` Message +8. Test Case 5: `schedule n/David Li date/2025-12-30 from/16:30 to/17:30 d/monthly check-up` + 1. Expectation: `Appointment can only be scheduled within a year` Message +9. Other invalid test cases includes other forms of invalid date, students that do not exist or clashes. All should show respective error messages. + +#### 6.3.2 Cancelling an Appointment +Cancels an existing appointment. + +Format: `cancel APPOINTMENT_INDEX` + +1. Appointment must exist +2. Test Case 1: `cancel 1` + 1. Expectation: Confirmation message is shown +3. Test Case 2: `cancel 0` + 1. Expectation: Invalid command format message (Index must be positive) +4. Try other invalid commands like `cancel a` or using an index greater than the number of appointments that exists. Displays Error message accordingly. + +#### 6.3.3 Filtering Appointments by Date: `filter` + +Filters appointments based on given date. + +Format: `filter DATE` + +1. Date must be in the yyyy-MM-dd format +2. Test Case 1: `filter 2023-12-14` + 1. Expectation: Shows appointments on that day +3. Test Case 2: `filter 2023-11-24` + 1. Expectation: `0 appointments listed` +4. All invalid date format: Message shows required date format + +### 6.4 Others + +#### 6.4.1 Viewing all Students and/or Appointments + +Shows a list of all available Students and/or Appointments, depending on specified input. + +Format: `view g/CATEGORY` + +1. Category must be `students`, `appointments` or `all` +2. Test Case 1: `view g/all` + 1. Expectation: Shows all students and appointments +3. Test Case 2: `view g/appointments` + 1. Expectation: Shows all appointments in the list +4. Test Case 3: `view g/students` + 1. Expectation: Shows all students in the list +5. Any other command is considered invalid + 1. Expectation: Error message to direct user to one of the above + +#### 6.4.2 Exiting the program: `exit` + +Exits the program. + +Format: `exit` + +#### 6.4.3 Clearing storage: `clear` + +Resets the storage, deleting **all** Appointments and Students. + +Format: `clear` + +### 7. Saving data + +1. Dealing with missing/corrupted data files + + 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_ + +2. _{ more test cases …​ }_ ## 8. Appendix: Effort @@ -658,3 +817,4 @@ and also whether the `Student` provided in the `Appointment` exists in the given tedious and proved to be a challenge. Removing redundant fields like `Email` and `Tags` and adding fields like `RiskLevel` and `Note` meant that a large portion of the AB3 had to be refactored, since the majority of the code in AB3 involved the `Person` entity, including tests, sample data and UI. +