1+ <?php
2+
3+ namespace Astrotomic \PhpunitAssertions \Tests ;
4+
5+ use Astrotomic \PhpunitAssertions \PhoneNumberAssertions ;
6+
7+ final class PhoneNumberAssertionsTest extends TestCase
8+ {
9+ /**
10+ * @test
11+ * @dataProvider thousandTimes
12+ */
13+ public static function it_can_validate_e164 (): void
14+ {
15+ PhoneNumberAssertions::assertE164 (preg_replace ('/([^\d+])/ ' , '' , self ::randomPhoneNumber ()['number ' ]));
16+ }
17+
18+ /**
19+ * @test
20+ * @dataProvider thousandTimes
21+ */
22+ public static function it_can_validate_phone_number (): void
23+ {
24+ PhoneNumberAssertions::assertValid (self ::randomPhoneNumber ()['number ' ]);
25+ }
26+
27+ /**
28+ * @test
29+ * @dataProvider thousandTimes
30+ */
31+ public static function it_can_validate_phone_number_for_region (): void
32+ {
33+ $ number = self ::randomPhoneNumber ();
34+ PhoneNumberAssertions::assertValidForRegion ($ number ['code ' ], $ number ['number ' ]);
35+ }
36+
37+ protected static function randomPhoneNumber (): array
38+ {
39+ return self ::randomElement ([
40+ // https://shaun.net/resources/test-phone-numbers/
41+ ['number ' => '+61 2 9192 0995 ' , 'code ' => 'AU ' ],
42+ ['number ' => '+64 9 887 6986 ' , 'code ' => 'NZ ' ],
43+ ['number ' => '+61 1800 801 920 ' , 'code ' => 'AU ' ],
44+ ['number ' => '+44 20 8759 9036 ' , 'code ' => 'GB ' ],
45+ ['number ' => '+1 800 444 4444 ' , 'code ' => 'US ' ],
46+ ['number ' => '+1 213 621 0002 ' , 'code ' => 'US ' ],
47+ ['number ' => '+1 914 232 9901 ' , 'code ' => 'US ' ],
48+ // https://howtophoneto.com/test/
49+ ['number ' => '+61 2 91011948 ' , 'code ' => 'AU ' ],
50+ ['number ' => '+61 02 8335 4600 ' , 'code ' => 'AU ' ],
51+ ['number ' => '+61 2 8229 4333 ' , 'code ' => 'AU ' ],
52+ ['number ' => '+61 3 8641 9083 ' , 'code ' => 'AU ' ],
53+ ['number ' => '+61 3 9683 9999 ' , 'code ' => 'AU ' ],
54+ ['number ' => '+61 (02) 9293 9262 ' , 'code ' => 'AU ' ],
55+ ['number ' => '(+61 2) 9293 9270 ' , 'code ' => 'AU ' ],
56+ ['number ' => '+61 1300 368999 ' , 'code ' => 'AU ' ],
57+ ['number ' => '+61 03 9640 0999 ' , 'code ' => 'AU ' ],
58+ ['number ' => '+64 (9) 379-0861 ' , 'code ' => 'NZ ' ],
59+ ['number ' => '+64-9-977-2232 ' , 'code ' => 'NZ ' ],
60+ ['number ' => '+64 9 977 2237 ' , 'code ' => 'NZ ' ],
61+ ['number ' => '+64 4 924 2424 ' , 'code ' => 'NZ ' ],
62+ ['number ' => '+64 4 470 3142 ' , 'code ' => 'NZ ' ],
63+ ['number ' => '+64 4 473 11 33 ' , 'code ' => 'NZ ' ],
64+ ['number ' => '+64 4 915 6666 ' , 'code ' => 'NZ ' ],
65+ ['number ' => '+64 0508 500 499 ' , 'code ' => 'NZ ' ],
66+ ['number ' => '+672 3 22147 ' , 'code ' => 'NF ' ],
67+ ['number ' => '+675 327 3396 ' , 'code ' => 'PG ' ],
68+ ['number ' => '(+675) 320 1212 ' , 'code ' => 'PG ' ],
69+ ['number ' => '(+675) 322 0888 ' , 'code ' => 'PG ' ],
70+ // https://www.zamic.com/page/5d916f06cb9ed42094
71+ ['number ' => '+1 628 246 2222 ' , 'code ' => 'US ' ],
72+ ['number ' => '+1 202 762 1401 ' , 'code ' => 'US ' ],
73+ // https://www.placetel.de/ratgeber/testrufnummer
74+ ['number ' => '+49 89 721010 99701 ' , 'code ' => 'DE ' ],
75+ ['number ' => '+49 89 721010 99702 ' , 'code ' => 'DE ' ],
76+ ['number ' => '+49 89 721010 99703 ' , 'code ' => 'DE ' ],
77+ // https://www.smartphonevergleich.de/telefonpaul/
78+ ['number ' => '+49 30-58583772 ' , 'code ' => 'DE ' ],
79+ ['number ' => '+49 176-34636276 ' , 'code ' => 'DE ' ],
80+ // https://servicenummern.telekom.de/weitere-informationen/zeitansage/
81+ ['number ' => '+49 180 4 100 100 ' , 'code ' => 'DE ' ],
82+ ['number ' => '+49 800 330 0800 ' , 'code ' => 'DE ' ],
83+ ]);
84+ }
85+ }
0 commit comments