diff --git a/src/main/java/seedu/address/model/person/Phone.java b/src/main/java/seedu/address/model/person/Phone.java index d733f63d739..8b2158b224c 100644 --- a/src/main/java/seedu/address/model/person/Phone.java +++ b/src/main/java/seedu/address/model/person/Phone.java @@ -11,7 +11,7 @@ public class Phone { public static final String MESSAGE_CONSTRAINTS = - "Phone numbers should only contain numbers, and it should be at least 3 digits long"; + "Invalid phone number format. Enter a valid phone number that is more than 3 digits."; public static final String VALIDATION_REGEX = "\\d{3,}"; public final String value; @@ -21,9 +21,13 @@ public class Phone { * @param phone A valid phone number. */ public Phone(String phone) { + requireNonNull(phone); - checkArgument(isValidPhone(phone), MESSAGE_CONSTRAINTS); - value = phone; + String trimmedPhone = phone.replaceAll(" ", ""); + checkArgument(isValidPhone(trimmedPhone), MESSAGE_CONSTRAINTS); + value = trimmedPhone; + + } /** diff --git a/src/test/java/seedu/address/model/person/PhoneTest.java b/src/test/java/seedu/address/model/person/PhoneTest.java index deaaa5ba190..26c17123421 100644 --- a/src/test/java/seedu/address/model/person/PhoneTest.java +++ b/src/test/java/seedu/address/model/person/PhoneTest.java @@ -19,6 +19,22 @@ public void constructor_invalidPhone_throwsIllegalArgumentException() { assertThrows(IllegalArgumentException.class, () -> new Phone(invalidPhone)); } + + @Test + public void constructor_validPhone_withSpaces() { + Phone phoneWithSpaces = new Phone(" 911 "); + assertTrue(phoneWithSpaces.equals(new Phone("911"))); // Should equal the trimmed version + + Phone longPhoneWithSpaces = new Phone(" 93121534 "); + assertTrue(longPhoneWithSpaces.equals(new Phone("93121534"))); // Should equal the trimmed version + + Phone mixedSpaces1 = new Phone(" 1234 5678 "); + assertTrue(mixedSpaces1.equals(new Phone("12345678"))); + + Phone mixedSpaces2 = new Phone(" 98 76 54 32 "); + assertTrue(mixedSpaces2.equals(new Phone("98765432"))); + } + @Test public void isValidPhone() { // null phone number @@ -31,6 +47,7 @@ public void isValidPhone() { assertFalse(Phone.isValidPhone("phone")); // non-numeric assertFalse(Phone.isValidPhone("9011p041")); // alphabets within digits assertFalse(Phone.isValidPhone("9312 1534")); // spaces within digits + assertFalse(Phone.isValidPhone(" 9312 1534 ")); //spaces around digits // valid phone numbers assertTrue(Phone.isValidPhone("911")); // exactly 3 numbers