phony 2.19.1 → 2.20.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.textile +5 -1
- data/lib/phony/countries/brazil.rb +2 -2
- data/lib/phony/countries/italy.rb +33 -16
- data/lib/phony/countries/japan.rb +51 -2
- data/lib/phony/countries/libya.rb +1 -1
- data/lib/phony/countries/taiwan.rb +1 -0
- data/lib/phony/countries.rb +67 -31
- data/lib/phony/country.rb +4 -0
- data/lib/phony/country_codes.rb +14 -1
- data/lib/phony/local_splitters/fixed.rb +2 -0
- data/lib/phony/national_splitters/none.rb +1 -3
- data/spec/functional/config_spec.rb +5 -5
- data/spec/functional/plausibility_spec.rb +66 -14
- data/spec/lib/phony/countries_spec.rb +38 -15
- data/spec/lib/phony/country_codes_spec.rb +78 -55
- data/spec/lib/phony/country_spec.rb +13 -13
- data/spec/lib/phony/dsl_spec.rb +6 -2
- data/spec/lib/phony/local_splitters/regex_spec.rb +12 -15
- data/spec/lib/phony/national_code_spec.rb +15 -45
- data/spec/lib/phony/national_splitters/fixed_spec.rb +12 -16
- data/spec/lib/phony/national_splitters/none_spec.rb +3 -3
- data/spec/lib/phony/national_splitters/variable_spec.rb +9 -13
- data/spec/lib/phony/vanity_spec.rb +4 -4
- metadata +15 -15
@@ -25,11 +25,11 @@ describe 'plausibility' do
|
|
25
25
|
incorrect = [shortest.sub(/\d\s*\z/, '')] # , longest + '0']
|
26
26
|
|
27
27
|
correct.each do |value|
|
28
|
-
Phony.plausible?(value).
|
28
|
+
expect(Phony.plausible?(value)).to be_truthy,
|
29
29
|
"It should validate #{value}, but does not."
|
30
30
|
end
|
31
31
|
incorrect.each do |value|
|
32
|
-
Phony.plausible?(value).
|
32
|
+
expect(Phony.plausible?(value)).to be_falsey,
|
33
33
|
"It should not validate #{value}, but does."
|
34
34
|
end
|
35
35
|
end
|
@@ -38,7 +38,7 @@ describe 'plausibility' do
|
|
38
38
|
invalid = [*sample]
|
39
39
|
|
40
40
|
invalid.each do |value|
|
41
|
-
Phony.plausible?(value).
|
41
|
+
expect(Phony.plausible?(value)).to be_falsey,
|
42
42
|
"It should not validate #{value}, but does."
|
43
43
|
end
|
44
44
|
end
|
@@ -51,6 +51,14 @@ describe 'plausibility' do
|
|
51
51
|
it_is_correct_for 'Bosnia and Herzegovina', :samples => ['+387 66 666 666',
|
52
52
|
'+387 37 123 456',
|
53
53
|
'+387 33 222 111']
|
54
|
+
it 'is correct for Brasil' do
|
55
|
+
Phony.plausible?('+55 67 998280912').should be_truthy
|
56
|
+
Phony.plausible?('+55 67 98280912').should be_falsey
|
57
|
+
Phony.plausible?('+55 11 12345678').should be_falsey
|
58
|
+
Phony.plausible?('+55 11 123456789').should be_falsey
|
59
|
+
Phony.plausible?('+55 11 023456789').should be_falsey
|
60
|
+
Phony.plausible?('+55 11 22345678').should be_truthy
|
61
|
+
end
|
54
62
|
it 'is correct for Bulgaria' do
|
55
63
|
Phony.plausible?('+359 2 1234567').should be_truthy
|
56
64
|
Phony.plausible?('+359 30 12345').should be_truthy
|
@@ -179,6 +187,14 @@ describe 'plausibility' do
|
|
179
187
|
Phony.plausible?('+359 998 123456').should be_truthy
|
180
188
|
Phony.plausible?('+359 999 123456').should be_truthy
|
181
189
|
end
|
190
|
+
it_is_correct_for 'Colombia', :samples => ['+57 601 411 1899',
|
191
|
+
'+57 602 111 2222',
|
192
|
+
'+57 603 111 2222',
|
193
|
+
'+57 604 111 2222',
|
194
|
+
'+57 605 111 2222',
|
195
|
+
'+57 606 111 2222',
|
196
|
+
'+57 607 111 2222',
|
197
|
+
'+57 608 111 2222']
|
182
198
|
it_is_correct_for 'Congo', :samples => '+242 1234 56789'
|
183
199
|
it_is_correct_for 'Cook Islands', :samples => '+682 71928'
|
184
200
|
it_is_correct_for 'Costa Rica', :samples => '+506 2 234 5678'
|
@@ -255,7 +271,7 @@ describe 'plausibility' do
|
|
255
271
|
end
|
256
272
|
# it_is_correct_for 'Gabonese Republic', :samples => [
|
257
273
|
# '+241 1 627 739',
|
258
|
-
# '+241 12 34 56 78',
|
274
|
+
# '+241 12 34 56 78',
|
259
275
|
# ]
|
260
276
|
it_is_correct_for 'Gambia', :samples => '+220 989 5148'
|
261
277
|
it_is_correct_for 'Germany', :samples => [
|
@@ -285,7 +301,7 @@ describe 'plausibility' do
|
|
285
301
|
'+964 71 1234 5678']
|
286
302
|
|
287
303
|
|
288
|
-
it_is_correct_for 'Kiribati (Republic of)', :samples => '+686
|
304
|
+
it_is_correct_for 'Kiribati (Republic of)', :samples => '+686 34814527'
|
289
305
|
it_is_correct_for "Democratic People's Republic of Korea", :samples => ['+850 2 123 45',
|
290
306
|
'+850 2 123 456 789',
|
291
307
|
'+850 2 381 2356',
|
@@ -324,10 +340,19 @@ describe 'plausibility' do
|
|
324
340
|
it_is_correct_for 'Macedonia', :samples => ['+389 2 123 4567',
|
325
341
|
'+389 7 124 3456',
|
326
342
|
'+389 7 234 5678']
|
327
|
-
it_is_correct_for 'Madagascar', :samples => ['+261 20
|
328
|
-
'+261
|
329
|
-
'+261
|
330
|
-
'+261
|
343
|
+
it_is_correct_for 'Madagascar', :samples => ['+261 20 23 456 78',
|
344
|
+
'+261 32 34 546 78',
|
345
|
+
'+261 33 34 546 78',
|
346
|
+
'+261 34 34 546 78',
|
347
|
+
'+261 38 34 546 78']
|
348
|
+
it 'is incorrect for Madagascar' do
|
349
|
+
Phony.plausible?('+261 20 012 345 678').should be_falsey
|
350
|
+
Phony.plausible?('+261 20 12 434 569').should be_falsey
|
351
|
+
Phony.plausible?('+261 51 23 4567 8').should be_falsey
|
352
|
+
Phony.plausible?('+261 34 345 46789').should be_falsey
|
353
|
+
Phony.plausible?('+261 34 345 467').should be_falsey
|
354
|
+
end
|
355
|
+
|
331
356
|
it_is_correct_for 'Malawi', :samples => ['+265 1725 123',
|
332
357
|
'+265 213 456 789',
|
333
358
|
'+265 9123 456',
|
@@ -338,7 +363,8 @@ describe 'plausibility' do
|
|
338
363
|
it_is_correct_for 'Marshall Islands (Republic of the)', :samples => '+692 372 7183'
|
339
364
|
it_is_correct_for 'Martinique (French Department of)', :samples => '+596 596 123 456'
|
340
365
|
it_is_correct_for 'Mauritania', :samples => '+222 1234 5678'
|
341
|
-
it_is_correct_for 'Mauritius', :samples => '+230
|
366
|
+
it_is_correct_for 'Mauritius', :samples => ['+230 5 695 2277',
|
367
|
+
'+230 260 0070']
|
342
368
|
it_is_correct_for 'Micronesia (Federated States of)', :samples => '+691 766 7914'
|
343
369
|
it_is_correct_for 'Moldova', :samples => ['+373 800 123 45',
|
344
370
|
'+373 22 123 345',
|
@@ -507,7 +533,10 @@ describe 'plausibility' do
|
|
507
533
|
it_is_correct_for 'Lybia', :samples => ['+218 205 123 45',
|
508
534
|
'+218 22 123 456',
|
509
535
|
'+218 21 1234 456',
|
510
|
-
'+218 91 1234 456'
|
536
|
+
'+218 91 1234 456',
|
537
|
+
'+218 92 1234 456',
|
538
|
+
'+218 94 1234 456',
|
539
|
+
'+218 95 1234 456']
|
511
540
|
it_is_correct_for 'Mongolia', :samples => ['+976 11 123 45',
|
512
541
|
['+976 121 12 34', '+976 121 12 345'],
|
513
542
|
'+976 70 123 456',
|
@@ -568,9 +597,12 @@ describe 'plausibility' do
|
|
568
597
|
'+967 58 1234']
|
569
598
|
it 'is correct for Zambia' do
|
570
599
|
Phony.plausible?('+260 211 123456').should be_truthy # Fixed
|
571
|
-
Phony.plausible?('+260
|
572
|
-
Phony.plausible?('+260
|
573
|
-
Phony.plausible?('+260
|
600
|
+
Phony.plausible?('+260 96 512 4567').should be_truthy # MTN Mobile
|
601
|
+
Phony.plausible?('+260 97 712 3456').should be_truthy # Airtel Mobile
|
602
|
+
Phony.plausible?('+260 95 512 4567').should be_truthy # Zamtel Mobile
|
603
|
+
Phony.plausible?('+260 96 512 456').should be_falsy # MTN Mobile (Too short)
|
604
|
+
Phony.plausible?('+260 97 812 345').should be_falsy # Airtel Mobile (Too short)
|
605
|
+
Phony.plausible?('+260 95 512 345').should be_falsy # Zamtel Mobile (Too short)
|
574
606
|
Phony.plausible?('+260 800 123 456').should be_truthy # Toll free
|
575
607
|
end
|
576
608
|
it_is_correct_for 'Zimbabwe', :samples => [['+263 2582 123 456', '+263 2582 123'],
|
@@ -585,6 +617,26 @@ describe 'plausibility' do
|
|
585
617
|
Phony.plausible?('+62 22 0000 0000').should be_truthy
|
586
618
|
Phony.plausible?('+62 22 000 000 000').should be_truthy
|
587
619
|
end
|
620
|
+
|
621
|
+
it 'is correct for Italy' do
|
622
|
+
Phony.plausible?('+39 0574 123').should be_falsy
|
623
|
+
Phony.plausible?('+39 0574 1234').should be_truthy
|
624
|
+
Phony.plausible?('+39 0574 12345').should be_falsy
|
625
|
+
|
626
|
+
Phony.plausible?('+39 085 541').should be_falsy
|
627
|
+
Phony.plausible?('+39 085 5410').should be_truthy
|
628
|
+
Phony.plausible?('+39 085 54105').should be_truthy
|
629
|
+
|
630
|
+
Phony.plausible?('+39 06 4991').should be_falsy
|
631
|
+
Phony.plausible?('+39 06 49911').should be_truthy
|
632
|
+
Phony.plausible?('+39 06 499112').should be_truthy
|
633
|
+
|
634
|
+
Phony.plausible?('+39 800 081631').should be_truthy
|
635
|
+
Phony.plausible?('+39 800 0816311').should be_falsy
|
636
|
+
|
637
|
+
Phony.plausible?('+39 803 08163').should be_falsy
|
638
|
+
Phony.plausible?('+39 803 081').should be_truthy
|
639
|
+
end
|
588
640
|
|
589
641
|
it 'is correct for Russia' do
|
590
642
|
Phony.plausible?('+7 3522 000 000').should be_truthy
|
@@ -5,7 +5,7 @@ require 'spec_helper'
|
|
5
5
|
describe 'country descriptions' do
|
6
6
|
|
7
7
|
def self.it_splits number, expected
|
8
|
-
it { Phony.split(number).
|
8
|
+
it { expect(Phony.split(number)).to eq expected }
|
9
9
|
end
|
10
10
|
|
11
11
|
describe 'regression' do
|
@@ -110,6 +110,7 @@ describe 'country descriptions' do
|
|
110
110
|
it_splits '32466123456', ['32', '466', '12', '34', '56'] # mobile (Vectone)
|
111
111
|
it_splits '32467123456', ['32', '467', '12', '34', '56'] # mobile (Telenet)
|
112
112
|
it_splits '32468123456', ['32', '468', '12', '34', '56'] # mobile (Telenet)
|
113
|
+
it_splits '32469123456', ['32', '469', '12', '34', '56'] # mobile ()
|
113
114
|
it_splits '32475123456', ['32', '475', '12', '34', '56'] # mobile (Proximus)
|
114
115
|
it_splits '32485123456', ['32', '485', '12', '34', '56'] # mobile (Telenet)
|
115
116
|
it_splits '32495123456', ['32', '495', '12', '34', '56'] # mobile (Orange)
|
@@ -146,9 +147,8 @@ describe 'country descriptions' do
|
|
146
147
|
end
|
147
148
|
|
148
149
|
describe 'Brazil' do
|
149
|
-
it_splits '
|
150
|
+
it_splits '551122341234', ['55', '11', '2234', '1234']
|
150
151
|
it_splits '5511981231234', ['55', '11', '98123', '1234'] # São Paulo's 9 digits mobile
|
151
|
-
it_splits '552181231234', ['55', '21', '8123', '1234']
|
152
152
|
it_splits '5521981231234', ['55', '21', '98123', '1234'] # Rio de Janeiro's 9 digits mobile
|
153
153
|
it_splits '551931311234', ['55', '19', '3131', '1234']
|
154
154
|
it_splits '5531991311234', ['55', '31', '99131', '1234'] # Belo Horizonte's 9th digit
|
@@ -156,6 +156,7 @@ describe 'country descriptions' do
|
|
156
156
|
it_splits '5579991311234', ['55', '79', '99131', '1234'] # Sergipe's 9th digit
|
157
157
|
it_splits '5547991311234', ['55', '47', '99131', '1234'] # Santa Catarina's 9th digit
|
158
158
|
it_splits '5541991311234', ['55', '41', '99131', '1234'] # Parana's 9th digit
|
159
|
+
it_splits '556734212121', ['55', '67', '3421', '2121']
|
159
160
|
|
160
161
|
context 'mobile numbers' do
|
161
162
|
%w{
|
@@ -239,7 +240,7 @@ describe 'country descriptions' do
|
|
239
240
|
end
|
240
241
|
end
|
241
242
|
describe 'Colombia' do
|
242
|
-
it_splits '5711234567', ['57', '1', '123', '4567']
|
243
|
+
it_splits '5711234567', ['57', '1', '123', '4567'] # Outdated.
|
243
244
|
it_splits '573101234567', ['57', '310', '123', '4567'] # mobile
|
244
245
|
end
|
245
246
|
describe 'Croatia' do
|
@@ -459,8 +460,9 @@ describe 'country descriptions' do
|
|
459
460
|
it_splits '3934869528123',['39', '348', '695', '2812', '3'] # Mobile (8-digit subscriber no - new)
|
460
461
|
it_splits '393357210488', ['39', '335', '721', '0488'] # Mobile
|
461
462
|
it_splits '393248644272', ['39', '324', '864', '4272'] # Mobile
|
462
|
-
it_splits '
|
463
|
-
it_splits '
|
463
|
+
it_splits '390612341', ['39', '06', '12341'] # Roma 5 digit
|
464
|
+
it_splits '3906123412', ['39', '06', '1234', '12'] # Roma 6 digit
|
465
|
+
it_splits '39061234123', ['39', '06', '1234', '123'] # Roma 7 digit
|
464
466
|
it_splits '390612341234', ['39', '06', '1234', '1234'] # Roma 8 digit
|
465
467
|
it_splits '3902888388', ['39', '02', '8883', '88'] # Milano 6 digit
|
466
468
|
it_splits '39028883888', ['39', '02', '8883', '888'] # Milano 7 digit
|
@@ -469,6 +471,7 @@ describe 'country descriptions' do
|
|
469
471
|
it_splits '3903123391', ['39', '031', '23391'] # Como
|
470
472
|
it_splits '390909709511', ['39', '090', '9709511'] # Barcellona
|
471
473
|
it_splits '390471811353', ['39', '0471', '811', '353'] # Bolzano
|
474
|
+
it_splits '3905745730', ['39', '0574', '5730'] # Prato
|
472
475
|
end
|
473
476
|
describe 'Japan' do
|
474
477
|
it_splits '81312345678', %w(81 3 1234 5678) # Tokyo
|
@@ -590,6 +593,10 @@ describe 'country descriptions' do
|
|
590
593
|
it_splits '31222123456', ['31', '222', '123', '456']
|
591
594
|
it_splits '3197012345678', ['31', '970', '1234', '5678'] # machine-to-machine
|
592
595
|
end
|
596
|
+
describe 'Norfolk Island' do
|
597
|
+
it_splits '672321234', ['672', '3', '21', '234'] # fixed
|
598
|
+
it_splits '672351234', ['672', '3', '51', '234'] # mobile
|
599
|
+
end
|
593
600
|
describe 'Norway' do
|
594
601
|
it_splits '4721234567', ['47',false,'21','23','45','67']
|
595
602
|
it_splits '4731234567', ['47',false,'31','23','45','67']
|
@@ -762,6 +769,7 @@ describe 'country descriptions' do
|
|
762
769
|
describe 'Switzerland' do
|
763
770
|
it_splits '41443643532', ['41', '44', '364', '35', '32'] # Zurich (usually)
|
764
771
|
it_splits '41800334455', ['41', '800', '334', '455'] # Service number
|
772
|
+
it_splits '41860443643532', ['41', '860', '44', '364', '35', '32'] # Voicemail access
|
765
773
|
it_splits '41900123456', ['41', '900', '123', '456'] # Business Number
|
766
774
|
it_splits '41901123456', ['41', '901', '123', '456'] # Business Number Entertainment
|
767
775
|
it_splits '41906123456', ['41', '906', '123', '456'] # Business Number Adult Entertainment
|
@@ -850,9 +858,9 @@ describe 'country descriptions' do
|
|
850
858
|
end
|
851
859
|
describe 'Zambia' do
|
852
860
|
it_splits '260211123456', ['260', '211', '123456'] # Fixed
|
853
|
-
it_splits '260955123456', ['260', '
|
854
|
-
it_splits '260967123456', ['260', '
|
855
|
-
it_splits '260978123456', ['260', '
|
861
|
+
it_splits '260955123456', ['260', '95', '512', '3456'] # Mobile
|
862
|
+
it_splits '260967123456', ['260', '96', '712', '3456'] # Mobile
|
863
|
+
it_splits '260978123456', ['260', '97', '812', '3456'] # Mobile
|
856
864
|
it_splits '260800123456', ['260', '800', '123', '456'] # Toll free
|
857
865
|
end
|
858
866
|
describe 'New Zealand' do
|
@@ -867,7 +875,8 @@ describe 'country descriptions' do
|
|
867
875
|
it_splits '6737932744', %w(673 7 932 744)
|
868
876
|
end
|
869
877
|
describe 'Burkina Faso' do
|
870
|
-
it_splits '22667839323', ['226', false, '
|
878
|
+
it_splits '22667839323', ['226', false, '67', '83', '93', '23']
|
879
|
+
it_splits '22601234567', ['226', false, '01', '23', '45', '67'] # 0 not removed.
|
871
880
|
end
|
872
881
|
describe 'Burundi' do
|
873
882
|
it_splits '25712345678', ['257', false, '1234', '5678']
|
@@ -1008,7 +1017,7 @@ describe 'country descriptions' do
|
|
1008
1017
|
it_splits '96287901456', %w(962 8790 1456)
|
1009
1018
|
end
|
1010
1019
|
describe 'Kiribati (Republic of)' do
|
1011
|
-
it_splits '
|
1020
|
+
it_splits '68634814527', ['686', false, '34814527']
|
1012
1021
|
end
|
1013
1022
|
describe "Democratic People's Republic of Korea" do
|
1014
1023
|
it_splits '850212345', %w(850 2 123 45)
|
@@ -1050,11 +1059,14 @@ describe 'country descriptions' do
|
|
1050
1059
|
it_splits '21822123456', %w(218 22 123 456)
|
1051
1060
|
it_splits '218211234456', %w(218 21 1234 456)
|
1052
1061
|
it_splits '218911234456', %w(218 91 1234 456)
|
1062
|
+
it_splits '218941234456', %w(218 94 1234 456)
|
1063
|
+
it_splits '218951234456', %w(218 95 1234 456)
|
1053
1064
|
end
|
1054
1065
|
describe 'Madagascar' do
|
1055
|
-
it_splits '
|
1056
|
-
it_splits '
|
1057
|
-
it_splits '
|
1066
|
+
it_splits '261202254716', ['261', '20', *%w(22 547 16)]
|
1067
|
+
it_splits '261320254716', ['261', '32', *%w(02 547 16)]
|
1068
|
+
it_splits '261330254716', ['261', '33', *%w(02 547 16)]
|
1069
|
+
it_splits '261340254716', ['261', '34', *%w(02 547 16)]
|
1058
1070
|
end
|
1059
1071
|
describe 'Malawi' do
|
1060
1072
|
it_splits '2651725123', ['265', false, '1725', '123']
|
@@ -1078,7 +1090,8 @@ describe 'country descriptions' do
|
|
1078
1090
|
it_splits '22212345678', ['222', false, '1234', '5678']
|
1079
1091
|
end
|
1080
1092
|
describe 'Mauritius' do
|
1081
|
-
it_splits '23059518919', ['230', false, '
|
1093
|
+
it_splits '23059518919', ['230', false, '5', '951', '8919']
|
1094
|
+
it_splits '2302600070', ['230', false, '260', '0070']
|
1082
1095
|
end
|
1083
1096
|
describe 'Micronesia (Federated States of)' do
|
1084
1097
|
it_splits '6911991754', ['691', false, '199', '1754']
|
@@ -1229,6 +1242,7 @@ describe 'country descriptions' do
|
|
1229
1242
|
describe 'Samoa (Independent State of)' do
|
1230
1243
|
it_splits '685800123', ['685', false, '800', '123']
|
1231
1244
|
it_splits '68561123', ['685', false, '61', '123']
|
1245
|
+
it_splits '6857112345', ['685', false, '711', '2345']
|
1232
1246
|
it_splits '6857212345', ['685', false, '721', '2345']
|
1233
1247
|
it_splits '685830123', ['685', false, '830', '123']
|
1234
1248
|
it_splits '685601234', ['685', false, '601', '234']
|
@@ -1317,6 +1331,7 @@ describe 'country descriptions' do
|
|
1317
1331
|
it_splits '88633123456', %w(886 3 312 3456)
|
1318
1332
|
it_splits '88637123456', %w(886 37 12 3456)
|
1319
1333
|
it_splits '88682712345', %w(886 82 71 2345)
|
1334
|
+
it_splits '886801123123', %w(886 801 123 123)
|
1320
1335
|
it_splits '88689712345', %w(886 89 71 2345)
|
1321
1336
|
it_splits '88682672345', %w(886 826 7 2345)
|
1322
1337
|
it_splits '88683672345', %w(886 836 7 2345)
|
@@ -1427,6 +1442,14 @@ describe 'country descriptions' do
|
|
1427
1442
|
it_splits number, ['263', prefix, '234', '5678']
|
1428
1443
|
end
|
1429
1444
|
end
|
1445
|
+
|
1446
|
+
describe 'Universal International Freephone' do
|
1447
|
+
it_splits '80012345678', ['800', false, '12345678']
|
1448
|
+
end
|
1449
|
+
|
1450
|
+
describe 'Shared-Cost Service' do
|
1451
|
+
it_splits '80812345678', ['808', false, '12345678']
|
1452
|
+
end
|
1430
1453
|
end
|
1431
1454
|
|
1432
1455
|
end
|
@@ -4,197 +4,220 @@ describe Phony::CountryCodes do
|
|
4
4
|
|
5
5
|
let(:countries) { Phony::CountryCodes.instance }
|
6
6
|
|
7
|
+
describe '#plausible?' do
|
8
|
+
it 'raises an error on a too long ccc' do
|
9
|
+
expect do
|
10
|
+
countries.plausible?('+1 868 7620266', ccc: '1868123')
|
11
|
+
end.to raise_error(ArgumentError, %Q{The provided ccc option is too long and includes more than a cc ('1') and ndc ('868'). It also includes '123'.})
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
describe 'ccc handling' do
|
16
|
+
it 'splits a ccc correctly' do
|
17
|
+
cc, ndc, *local = countries.split('1868')
|
18
|
+
|
19
|
+
expect(cc).to eq '1'
|
20
|
+
expect(ndc).to eq '868'
|
21
|
+
end
|
22
|
+
it 'splits a ccc correctly' do
|
23
|
+
cc, ndc, *local = countries.split('1868')
|
24
|
+
|
25
|
+
expect(cc).to eq '1'
|
26
|
+
expect(ndc).to eq '868'
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
7
30
|
describe '#[]' do
|
8
31
|
it 'returns a country' do
|
9
|
-
countries['41'].class.
|
32
|
+
expect(countries['41'].class).to eq Phony::Country
|
10
33
|
end
|
11
34
|
end
|
12
35
|
|
13
36
|
describe '#country_for' do
|
14
37
|
it 'returns a country' do
|
15
|
-
countries.send(:country_for, '41').class.
|
38
|
+
expect(countries.send(:country_for, '41').class).to eq Phony::Country
|
16
39
|
end
|
17
40
|
end
|
18
41
|
|
19
42
|
describe '#countrify' do
|
20
43
|
it 'returns a country' do
|
21
|
-
countries.send(:countrify, '441231212', '41').
|
44
|
+
expect(countries.send(:countrify, '441231212', '41')).to eq '41441231212'
|
22
45
|
end
|
23
46
|
end
|
24
47
|
describe '#countrify!' do
|
25
48
|
it 'in-place replaces the number' do
|
26
49
|
number = '441231212'
|
27
|
-
countries.send(:countrify!, number, '41').
|
50
|
+
expect(countries.send(:countrify!, number, '41')).to eq number
|
28
51
|
|
29
|
-
number.
|
52
|
+
expect(number).to eq '41441231212'
|
30
53
|
end
|
31
54
|
end
|
32
55
|
|
33
56
|
describe '#vanity?' do
|
34
57
|
it 'returns true if so' do
|
35
|
-
countries.vanity?('1800HELLOES').
|
58
|
+
expect(countries.vanity?('1800HELLOES')).to eq true
|
36
59
|
end
|
37
60
|
it 'returns false if not' do
|
38
|
-
countries.vanity?('18001234567').
|
61
|
+
expect(countries.vanity?('18001234567')).to eq false
|
39
62
|
end
|
40
63
|
end
|
41
64
|
|
42
65
|
describe 'normalize' do
|
43
66
|
it 'normalizes correctly' do
|
44
|
-
countries.normalize('0041-44-364-35-32').
|
67
|
+
expect(countries.normalize('0041-44-364-35-32')).to eq '41443643532'
|
45
68
|
end
|
46
69
|
it 'normalizes correctly with CC option' do
|
47
|
-
countries.normalize('044-364-35-32', cc: '41').
|
70
|
+
expect(countries.normalize('044-364-35-32', cc: '41')).to eq '41443643532'
|
48
71
|
end
|
49
72
|
|
50
73
|
context 'specific countries' do
|
51
74
|
it 'handles Congo correctly' do
|
52
|
-
countries.normalize('+242 0571 73992').
|
53
|
-
countries.normalize('+242 2221 15932').
|
75
|
+
expect(countries.normalize('+242 0571 73992')).to eq '242057173992'
|
76
|
+
expect(countries.normalize('+242 2221 15932')).to eq '242222115932'
|
54
77
|
end
|
55
78
|
end
|
56
79
|
end
|
57
80
|
|
58
81
|
describe 'formatted' do
|
59
82
|
it 'formats correctly' do
|
60
|
-
countries.formatted('41443643532', :format => :international, :spaces => :-).
|
83
|
+
expect(countries.formatted('41443643532', :format => :international, :spaces => :-)).to eq '+41-44-364-35-32'
|
61
84
|
end
|
62
85
|
it 'formats correctly' do
|
63
|
-
countries.formatted('41443643532', :format => :international_relative, :spaces => :-).
|
86
|
+
expect(countries.formatted('41443643532', :format => :international_relative, :spaces => :-)).to eq '0041-44-364-35-32'
|
64
87
|
end
|
65
88
|
it 'formats correctly' do
|
66
|
-
countries.formatted('41443643532', :format => :national, :spaces => :-).
|
89
|
+
expect(countries.formatted('41443643532', :format => :national, :spaces => :-)).to eq '044-364-35-32'
|
67
90
|
end
|
68
91
|
context 'specific' do
|
69
92
|
it 'formats Ireland correctly' do
|
70
|
-
countries.formatted("3533451234", :format => :national).
|
93
|
+
expect(countries.formatted("3533451234", :format => :national)).to eq '0345 1234'
|
71
94
|
end
|
72
95
|
it 'formats Ireland correctly' do
|
73
|
-
countries.formatted("353411231234", :format => :national).
|
96
|
+
expect(countries.formatted("353411231234", :format => :national)).to eq '041 123 1234'
|
74
97
|
end
|
75
98
|
it 'formats Spain correctly' do
|
76
|
-
countries.formatted("34123456789", :format => :national).
|
99
|
+
expect(countries.formatted("34123456789", :format => :national)).to eq '123 456 789'
|
77
100
|
end
|
78
101
|
it 'formats Cambodia correctly' do
|
79
|
-
countries.formatted('85512239123', :format => :national).
|
102
|
+
expect(countries.formatted('85512239123', :format => :national)).to eq '012 239 123'
|
80
103
|
end
|
81
104
|
it 'formats the US correctly' do
|
82
|
-
countries.formatted('18005551212', :format => :national, :spaces => :-).
|
105
|
+
expect(countries.formatted('18005551212', :format => :national, :spaces => :-)).to eq '(800)-555-1212'
|
83
106
|
end
|
84
107
|
it 'formats the US correctly' do
|
85
|
-
countries.formatted('18005551212', :format => :national, :spaces => :-).
|
108
|
+
expect(countries.formatted('18005551212', :format => :national, :spaces => :-)).to eq '(800)-555-1212'
|
86
109
|
end
|
87
110
|
end
|
88
111
|
context 'default' do
|
89
112
|
it "should format swiss numbers" do
|
90
|
-
countries.formatted('41443643532').
|
113
|
+
expect(countries.formatted('41443643532')).to eq '+41 44 364 35 32'
|
91
114
|
end
|
92
115
|
it "should format swiss service numbers" do
|
93
|
-
countries.formatted('41800112233').
|
116
|
+
expect(countries.formatted('41800112233')).to eq '+41 800 112 233'
|
94
117
|
end
|
95
118
|
it "should format austrian numbers" do
|
96
|
-
countries.formatted('43198110').
|
119
|
+
expect(countries.formatted('43198110')).to eq '+43 1 98110'
|
97
120
|
end
|
98
121
|
it "should format american numbers" do
|
99
|
-
countries.formatted('18705551122').
|
122
|
+
expect(countries.formatted('18705551122')).to eq '+1 (870) 555-1122'
|
100
123
|
end
|
101
124
|
it "should format irish numbers" do
|
102
|
-
countries.formatted('35311234567').
|
125
|
+
expect(countries.formatted('35311234567')).to eq '+353 1 123 4567'
|
103
126
|
end
|
104
127
|
end
|
105
128
|
describe "international" do
|
106
129
|
it "should format north american numbers" do
|
107
|
-
countries.formatted('18091231234', :format => :international).
|
130
|
+
expect(countries.formatted('18091231234', :format => :international)).to eq '+1 (809) 123-1234'
|
108
131
|
end
|
109
132
|
it "should format austrian numbers" do
|
110
|
-
countries.formatted('43198110', :format => :international).
|
133
|
+
expect(countries.formatted('43198110', :format => :international)).to eq '+43 1 98110'
|
111
134
|
end
|
112
135
|
it "should format austrian numbers" do
|
113
|
-
countries.formatted('43198110', :format => :international_absolute).
|
136
|
+
expect(countries.formatted('43198110', :format => :international_absolute)).to eq '+43 1 98110'
|
114
137
|
end
|
115
138
|
it "should format french numbers" do
|
116
|
-
countries.formatted('33142278186', :format => :+).
|
139
|
+
expect(countries.formatted('33142278186', :format => :+)).to eq '+33 1 42 27 81 86'
|
117
140
|
end
|
118
141
|
it "should format austrian numbers" do
|
119
|
-
countries.formatted('43198110', :format => :international_relative).
|
142
|
+
expect(countries.formatted('43198110', :format => :international_relative)).to eq '0043 1 98110'
|
120
143
|
end
|
121
144
|
it 'should format liechtensteiner numbers' do
|
122
|
-
countries.formatted('4233841148', :format => :international_relative).
|
145
|
+
expect(countries.formatted('4233841148', :format => :international_relative)).to eq '00423 384 11 48'
|
123
146
|
end
|
124
147
|
it "should format irish numbers" do
|
125
|
-
countries.formatted('35311234567', :format => :international).
|
148
|
+
expect(countries.formatted('35311234567', :format => :international)).to eq '+353 1 123 4567'
|
126
149
|
end
|
127
150
|
it "should format luxembourgian numbers" do
|
128
|
-
countries.formatted('352222809', :format => :international).
|
151
|
+
expect(countries.formatted('352222809', :format => :international)).to eq '+352 22 28 09'
|
129
152
|
end
|
130
153
|
it "should format luxembourgian 4-digit ndc numbers" do
|
131
|
-
countries.formatted('35226222809', :format => :international).
|
154
|
+
expect(countries.formatted('35226222809', :format => :international)).to eq '+352 2622 28 09'
|
132
155
|
end
|
133
156
|
it "should format luxembourgian mobile numbers" do
|
134
|
-
countries.formatted('352621123456', :format => :international).
|
157
|
+
expect(countries.formatted('352621123456', :format => :international)).to eq '+352 621 123 456'
|
135
158
|
end
|
136
159
|
it "should format luxembourgian city numbers" do
|
137
|
-
countries.formatted('3524123456', :format => :international).
|
160
|
+
expect(countries.formatted('3524123456', :format => :international)).to eq '+352 41 23 45 6'
|
138
161
|
end
|
139
162
|
it "should format luxembourgian machine to machine numbers" do
|
140
|
-
countries.formatted('352602112345678', :format => :international).
|
163
|
+
expect(countries.formatted('352602112345678', :format => :international)).to eq '+352 6021 12 34 56 78'
|
141
164
|
end
|
142
165
|
it "should format luxembourgian numbers" do
|
143
|
-
countries.formatted('352370431', :format => :international).
|
166
|
+
expect(countries.formatted('352370431', :format => :international)).to eq '+352 37 04 31'
|
144
167
|
end
|
145
168
|
it "should format luxembourgian numbers" do
|
146
|
-
countries.formatted('35227855', :format => :international).
|
169
|
+
expect(countries.formatted('35227855', :format => :international)).to eq '+352 27 85 5'
|
147
170
|
end
|
148
171
|
it "should format nigerian lagosian numbers" do
|
149
|
-
countries.formatted('23414480000', :format => :international).
|
172
|
+
expect(countries.formatted('23414480000', :format => :international)).to eq '+234 1 448 0000'
|
150
173
|
end
|
151
174
|
it "should format nigerian beninese numbers" do
|
152
|
-
countries.formatted('23452123456', :format => :international).
|
175
|
+
expect(countries.formatted('23452123456', :format => :international)).to eq '+234 52 123 456'
|
153
176
|
end
|
154
177
|
it "should format nigerian mobile numbers" do
|
155
|
-
countries.formatted('2347061234567', :format => :international).
|
178
|
+
expect(countries.formatted('2347061234567', :format => :international)).to eq '+234 706 123 4567'
|
156
179
|
end
|
157
180
|
context 'with no spaces' do
|
158
181
|
it "should format north american numbers" do
|
159
|
-
Phony.formatted('18091231234', :format => :international, :spaces => '').
|
182
|
+
expect(Phony.formatted('18091231234', :format => :international, :spaces => '')).to eq '+1(809)123-1234'
|
160
183
|
end
|
161
184
|
it "should format austrian numbers" do
|
162
|
-
Phony.formatted('43198110', :format => :international, :spaces => '').
|
185
|
+
expect(Phony.formatted('43198110', :format => :international, :spaces => '')).to eq '+43198110'
|
163
186
|
end
|
164
187
|
it "should format austrian numbers" do
|
165
|
-
Phony.formatted('43198110', :format => :international_absolute, :spaces => '').
|
188
|
+
expect(Phony.formatted('43198110', :format => :international_absolute, :spaces => '')).to eq '+43198110'
|
166
189
|
end
|
167
190
|
it "should format french numbers" do
|
168
|
-
Phony.formatted('33142278186', :format => :+, :spaces => '').
|
191
|
+
expect(Phony.formatted('33142278186', :format => :+, :spaces => '')).to eq '+33142278186'
|
169
192
|
end
|
170
193
|
it "should format austrian numbers" do
|
171
|
-
Phony.formatted('43198110', :format => :international_relative, :spaces => '').
|
194
|
+
expect(Phony.formatted('43198110', :format => :international_relative, :spaces => '')).to eq '0043198110'
|
172
195
|
end
|
173
196
|
it 'should format liechtensteiner numbers' do
|
174
|
-
Phony.formatted('4233841148', :format => :international_relative, :spaces => '').
|
197
|
+
expect(Phony.formatted('4233841148', :format => :international_relative, :spaces => '')).to eq '004233841148'
|
175
198
|
end
|
176
199
|
end
|
177
200
|
context 'with special spaces' do
|
178
201
|
it "should format swiss numbers" do
|
179
|
-
Phony.formatted('41443643532', :format => :international).
|
202
|
+
expect(Phony.formatted('41443643532', :format => :international)).to eq '+41 44 364 35 32'
|
180
203
|
end
|
181
204
|
it "should format north american numbers" do
|
182
|
-
Phony.formatted('18091231234', :format => :international, :spaces => :-).
|
205
|
+
expect(Phony.formatted('18091231234', :format => :international, :spaces => :-)).to eq '+1-(809)-123-1234'
|
183
206
|
end
|
184
207
|
it "should format austrian numbers" do
|
185
|
-
Phony.formatted('43198110', :format => :international, :spaces => :-).
|
208
|
+
expect(Phony.formatted('43198110', :format => :international, :spaces => :-)).to eq '+43-1-98110'
|
186
209
|
end
|
187
210
|
it "should format austrian numbers" do
|
188
|
-
Phony.formatted('43198110', :format => :international_absolute, :spaces => :-).
|
211
|
+
expect(Phony.formatted('43198110', :format => :international_absolute, :spaces => :-)).to eq '+43-1-98110'
|
189
212
|
end
|
190
213
|
it "should format french numbers" do
|
191
|
-
Phony.formatted('33142278186', :format => :+, :spaces => :-).
|
214
|
+
expect(Phony.formatted('33142278186', :format => :+, :spaces => :-)).to eq '+33-1-42-27-81-86'
|
192
215
|
end
|
193
216
|
it "should format austrian numbers" do
|
194
|
-
Phony.formatted('43198110', :format => :international_relative, :spaces => :-).
|
217
|
+
expect(Phony.formatted('43198110', :format => :international_relative, :spaces => :-)).to eq '0043-1-98110'
|
195
218
|
end
|
196
219
|
it 'should format liechtensteiner numbers' do
|
197
|
-
Phony.formatted('4233841148', :format => :international_relative, :spaces => :-).
|
220
|
+
expect(Phony.formatted('4233841148', :format => :international_relative, :spaces => :-)).to eq '00423-384-11-48'
|
198
221
|
end
|
199
222
|
|
200
223
|
end
|