diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 811d200e0a1..946efb89d89 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -283,8 +283,11 @@ The sort mechanism is facilitated by JavaFX's `SortedList` within ModelManager, Given below is an example usage scenario and how the sort mechanism behaves at each step. 1. The user enters **“sort n/”** to sort the list by their name. + 2. The `LogicManager` takes this command text and calls `StaffBookParser.parseCommand("sort n/")` and identifies the sort command. It then creates a new instance of `SortCommandParser` to `parse(“n/”)` on the attribute. + 3. `SortCommandParser.parse(“n/”)` then constructs a SortCommand with the appropriate attribute comparator, `NameComparator`. + 4. The `SortCommand` is returned to Logic manager which calls on its `execute()` to return a `CommandResult()`. During its execution, `ModelManager.updateSortedPersonList(NameComparator)` is invoked which updates the model to show the list of persons being sorted by name. The sequence diagram for executing a **"sort n/"** is shown below: @@ -391,8 +394,8 @@ The below sequence diagram goes into more details on how the execution of the co ![Fav Ref Sequence Diagram](images/FavRefSequenceDiagram.png) -1. `FavCommand` calls the static `FavCommand#createFavPerson(personToFav)` function which calls for the static `PersonUtil#createPersonWithFavouriteStatus(Person selectedPerson, Favourite favourite)` using the `selectedPerson` and a new `Favourite` with the value `true`. -2. This static `PersonUtil#createPersonWithFavouriteStatus(Person selectedPerson, Favourite favourite)` function creates a new `Person` with the given `Favourite` and returns back to `FavCommand`. +7. `FavCommand` calls the static `FavCommand#createFavPerson(personToFav)` function which calls for the static `PersonUtil#createPersonWithFavouriteStatus(Person selectedPerson, Favourite favourite)` using the `selectedPerson` and a new `Favourite` with the value `true`. +8. This static `PersonUtil#createPersonWithFavouriteStatus(Person selectedPerson, Favourite favourite)` function creates a new `Person` with the given `Favourite` and returns back to `FavCommand`. The following activity diagram summarizes what happens when a user executes a new `fav` command: @@ -419,8 +422,8 @@ The below sequence diagram goes into more details on how the execution of the co ![Unfav Ref Sequence Diagram](images/UnfavRefSequenceDiagram.png) -1. `UnfavCommand` calls the static `UnfavCommand#createUnfavPerson(personToUnfav)` function which calls for the static `PersonUtil#createPersonWithFavouriteStatus(Person selectedPerson, Favourite favourite)` using the `selectedPerson` and a new `Favourite` with the value `false`. -2. This static `PersonUtil#createPersonWithFavouriteStatus(Person selectedPerson, Favourite favourite)` function creates a new `Person` with the given `Favourite` attribute and returns back to `UnfavCommand`. +7. `UnfavCommand` calls the static `UnfavCommand#createUnfavPerson(personToUnfav)` function which calls for the static `PersonUtil#createPersonWithFavouriteStatus(Person selectedPerson, Favourite favourite)` using the `selectedPerson` and a new `Favourite` with the value `false`. +8. This static `PersonUtil#createPersonWithFavouriteStatus(Person selectedPerson, Favourite favourite)` function creates a new `Person` with the given `Favourite` attribute and returns back to `UnfavCommand`. The following activity diagram summarizes what happens when a user executes a new `unfav` command: @@ -705,10 +708,13 @@ testers are expected to do more *exploratory* testing. 1. Initial launch 1. Download the jar file and copy into an empty folder + 2. Double-click the jar file Expected: Shows the GUI with a set of sample contacts. The window size may not be optimum. + 2. Saving window preferences 1. Resize the window to an optimum size. Move the window to a different location. Close the window. + 2. Re-launch the app by double-clicking the jar file.
Expected: The most recent window size and location is retained. @@ -717,10 +723,13 @@ testers are expected to do more *exploratory* testing. 1. Deleting a person while all persons are being shown 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list. + 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. + 3. Test case: `delete 0`
Expected: No person is deleted. Error details shown in the status message. Status bar remains the same. + 4. Other incorrect delete commands to try: `delete`, `delete x`, `...` (where x is larger than the list size)
Expected: Similar to previous. @@ -729,18 +738,21 @@ testers are expected to do more *exploratory* testing. 1. Dealing with missing/corrupted data files 1. Prerequisites: Ensure that the `[JAR file location]/data/staffconnect.json` file is generated by running the JAR file of the app at least once. + 2. Test case: No modifications to data file after it has been generated.
In the image below shows the contents of the untouched data file: ![Before Corrupt Data File](images/beforeCorruptDataFile.png) Expected: The app should show a list of 6 persons ![Before Corrupt Data File Result](images/beforeCorruptDataFileResult.png) + 3. Test case: Invalid modification to data file.
Modify the `Favourite` attribute value to `Not avourite` (an invalid value) in the data file: ![After Corrupt Data File](images/afterCorruptDataFile.png) Expected: The app should show an empty list (no persons) ![After Corrupt Data File Result](images/afterCorruptDataFileResult.png) + 4. Test case: Valid modification to data file.
Before, `Alex Yeoh` has the module `CS1101S` in the untouched data file as seen in `Test case: No modifications to data file after it has been generated`.