Skip to content

Commit ac37d6e

Browse files
authored
[#855] Refactor PersonBuilder constructor to use TypicalPersons as argument (#889)
When creating a Person for testing, some tests specify almost all of the fields of an existing TypicalPerson, with only a slight variation in one or two fields. For example, the code below builds on top of TypicalPerson#AMY with only changes to address and tags: toAdd = new PersonBuilder().withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY) .withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_BOB) .withTags(VALID_TAG_FRIEND).build(); This is long-winded and unnecessary, as PersonBuilder allows us to start from a ready-made Person, and modify as necessary. For example, the code above can be refactored to: toAdd = new PersonBuilder(AMY).withAddress(VALID_ADDRESS_BOB).build(); Let's refactor the calls to PersonBuilder to make them more concise.
2 parents c47a1e3 + 7376502 commit ac37d6e

File tree

3 files changed

+8
-22
lines changed

3 files changed

+8
-22
lines changed

src/test/java/seedu/address/logic/parser/AddCommandParserTest.java

+6-11
Original file line numberDiff line numberDiff line change
@@ -18,18 +18,16 @@
1818
import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;
1919
import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;
2020
import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;
21-
import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;
2221
import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;
23-
import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;
2422
import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;
25-
import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;
2623
import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;
27-
import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;
2824
import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;
2925
import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;
3026
import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;
3127
import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;
3228
import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;
29+
import static seedu.address.testutil.TypicalPersons.AMY;
30+
import static seedu.address.testutil.TypicalPersons.BOB;
3331

3432
import org.junit.Test;
3533

@@ -47,8 +45,7 @@ public class AddCommandParserTest {
4745

4846
@Test
4947
public void parse_allFieldsPresent_success() {
50-
Person expectedPerson = new PersonBuilder().withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)
51-
.withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_FRIEND).build();
48+
Person expectedPerson = new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND).build();
5249

5350
// whitespace only preamble
5451
assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB
@@ -71,18 +68,16 @@ public void parse_allFieldsPresent_success() {
7168
+ ADDRESS_DESC_BOB + TAG_DESC_FRIEND, new AddCommand(expectedPerson));
7269

7370
// multiple tags - all accepted
74-
Person expectedPersonMultipleTags = new PersonBuilder().withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)
75-
.withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)
76-
.withTags(VALID_TAG_FRIEND, VALID_TAG_HUSBAND).build();
71+
Person expectedPersonMultipleTags = new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND, VALID_TAG_HUSBAND)
72+
.build();
7773
assertParseSuccess(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB
7874
+ TAG_DESC_HUSBAND + TAG_DESC_FRIEND, new AddCommand(expectedPersonMultipleTags));
7975
}
8076

8177
@Test
8278
public void parse_optionalFieldsMissing_success() {
8379
// zero tags
84-
Person expectedPerson = new PersonBuilder().withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY)
85-
.withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY).withTags().build();
80+
Person expectedPerson = new PersonBuilder(AMY).withTags().build();
8681
assertParseSuccess(parser, NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY + ADDRESS_DESC_AMY,
8782
new AddCommand(expectedPerson));
8883
}

src/test/java/systemtests/AddCommandSystemTest.java

+1-6
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,10 @@
1616
import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;
1717
import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;
1818
import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;
19-
import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;
2019
import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;
21-
import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;
2220
import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;
2321
import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;
24-
import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;
2522
import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;
26-
import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;
2723
import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;
2824
import static seedu.address.testutil.TypicalPersons.ALICE;
2925
import static seedu.address.testutil.TypicalPersons.AMY;
@@ -79,8 +75,7 @@ public void add() throws Exception {
7975
assertCommandSuccess(command, model, expectedResultMessage);
8076

8177
/* Case: add a person with all fields same as another person in the address book except name -> added */
82-
toAdd = new PersonBuilder().withName(VALID_NAME_BOB).withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY)
83-
.withAddress(VALID_ADDRESS_AMY).withTags(VALID_TAG_FRIEND).build();
78+
toAdd = new PersonBuilder(AMY).withName(VALID_NAME_BOB).build();
8479
command = AddCommand.COMMAND_WORD + NAME_DESC_BOB + PHONE_DESC_AMY + EMAIL_DESC_AMY + ADDRESS_DESC_AMY
8580
+ TAG_DESC_FRIEND;
8681
assertCommandSuccess(command, toAdd);

src/test/java/systemtests/EditCommandSystemTest.java

+1-5
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,10 @@
1818
import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;
1919
import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;
2020
import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;
21-
import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;
2221
import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;
23-
import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;
2422
import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;
2523
import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;
2624
import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;
27-
import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;
2825
import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;
2926
import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;
3027
import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;
@@ -67,8 +64,7 @@ public void edit() throws Exception {
6764
Index index = INDEX_FIRST_PERSON;
6865
String command = " " + EditCommand.COMMAND_WORD + " " + index.getOneBased() + " " + NAME_DESC_BOB + " "
6966
+ PHONE_DESC_BOB + " " + EMAIL_DESC_BOB + " " + ADDRESS_DESC_BOB + " " + TAG_DESC_HUSBAND + " ";
70-
Person editedPerson = new PersonBuilder().withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)
71-
.withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND).build();
67+
Person editedPerson = new PersonBuilder(BOB).withTags(VALID_TAG_HUSBAND).build();
7268
assertCommandSuccess(command, index, editedPerson);
7369

7470
/* Case: undo editing the last person in the list -> last person restored */

0 commit comments

Comments
 (0)