aboutsummaryrefslogtreecommitdiff
path: root/src/test/scala/xyz/driver/core/PhoneNumberTest.scala
diff options
context:
space:
mode:
authorSergey Nastich <nastich@users.noreply.github.com>2018-09-19 13:57:53 -0400
committerGitHub <noreply@github.com>2018-09-19 13:57:53 -0400
commit1b979318d85ea6035084253596cf076151cef309 (patch)
treed5f64a3893b2581807020a88c8c2b28f277fbd53 /src/test/scala/xyz/driver/core/PhoneNumberTest.scala
parent60ad2abd17a50c8bd73bfe75084984b4de27bd79 (diff)
downloaddriver-core-1b979318d85ea6035084253596cf076151cef309.tar.gz
driver-core-1b979318d85ea6035084253596cf076151cef309.tar.bz2
driver-core-1b979318d85ea6035084253596cf076151cef309.zip
Improve PhoneNumber (#222)
* Add support for extensions * Add PathMatcher and allow parsing JSON from string * Add a number of convenience methods which are to be used instead of `toString`
Diffstat (limited to 'src/test/scala/xyz/driver/core/PhoneNumberTest.scala')
-rw-r--r--src/test/scala/xyz/driver/core/PhoneNumberTest.scala38
1 files changed, 38 insertions, 0 deletions
diff --git a/src/test/scala/xyz/driver/core/PhoneNumberTest.scala b/src/test/scala/xyz/driver/core/PhoneNumberTest.scala
index 384c7be..729302b 100644
--- a/src/test/scala/xyz/driver/core/PhoneNumberTest.scala
+++ b/src/test/scala/xyz/driver/core/PhoneNumberTest.scala
@@ -44,6 +44,21 @@ class PhoneNumberTest extends FlatSpec with Matchers {
PhoneNumber.parse("+86 134 52 52 2256") shouldBe Some(PhoneNumber("86", "13452522256"))
}
+ it should "parse numbers with extensions in different formats" in {
+ // format: off
+ val numbers = List(
+ "+1 800 525 22 25 x23",
+ "+18005252225 ext. 23",
+ "+18005252225,23"
+ )
+ // format: on
+
+ val parsed = numbers.flatMap(PhoneNumber.parse)
+
+ parsed should have size numbers.size
+ parsed should contain only PhoneNumber("1", "8005252225", Some("23"))
+ }
+
it should "return None on numbers that are shorter than the minimum number of digits for the country (i.e. US - 10, AR - 11)" in {
withClue("US and CN numbers are 10 digits - 9 digit (and shorter) numbers should not fit") {
// format: off
@@ -76,4 +91,27 @@ class PhoneNumberTest extends FlatSpec with Matchers {
List(PhoneNumber("45", "27452522"), PhoneNumber("86", "13452522256"))
}
+ "PhoneNumber.toCompactString/toE164String" should "produce phone number in international format without whitespaces" in {
+ PhoneNumber.parse("+1 800 5252225").get.toCompactString shouldBe "+18005252225"
+ PhoneNumber.parse("+1 800 5252225").get.toE164String shouldBe "+18005252225"
+
+ PhoneNumber.parse("+1 800 5252225 x23").get.toCompactString shouldBe "+18005252225;ext=23"
+ PhoneNumber.parse("+1 800 5252225 x23").get.toE164String shouldBe "+18005252225;ext=23"
+ }
+
+ "PhoneNumber.toHumanReadableString" should "produce nice readable result for different countries" in {
+ PhoneNumber.parse("+14154234567").get.toHumanReadableString shouldBe "+1 415-423-4567"
+ PhoneNumber.parse("+14154234567,23").get.toHumanReadableString shouldBe "+1 415-423-4567 ext. 23"
+
+ PhoneNumber.parse("+78005252225").get.toHumanReadableString shouldBe "+7 800 525-22-25"
+
+ PhoneNumber.parse("+41219437898").get.toHumanReadableString shouldBe "+41 21 943 78 98"
+ }
+
+ it should "throw an IllegalArgumentException if the PhoneNumber object is not parsable/valid" in {
+ intercept[IllegalStateException] {
+ PhoneNumber("+123", "1238123120938120938").toHumanReadableString
+ }.getMessage should include("+123 1238123120938120938 is not a valid number")
+ }
+
}