phony 2.17.0 → 2.20.12
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.textile +34 -6
- data/lib/phony/config.rb +91 -0
- data/lib/phony/countries/argentina.rb +355 -0
- data/lib/phony/countries/austria.rb +4 -2
- data/lib/phony/countries/bangladesh.rb +2 -0
- data/lib/phony/countries/belarus.rb +2 -0
- data/lib/phony/countries/brazil.rb +4 -2
- data/lib/phony/countries/cambodia.rb +3 -5
- data/lib/phony/countries/china.rb +7 -2
- data/lib/phony/countries/croatia.rb +2 -0
- data/lib/phony/countries/georgia.rb +2 -0
- data/lib/phony/countries/germany.rb +5 -2
- data/lib/phony/countries/guinea.rb +8 -5
- data/lib/phony/countries/india.rb +2 -0
- data/lib/phony/countries/indonesia.rb +2 -0
- data/lib/phony/countries/ireland.rb +27 -23
- data/lib/phony/countries/italy.rb +41 -18
- data/lib/phony/countries/japan.rb +60 -8
- data/lib/phony/countries/kyrgyzstan.rb +2 -0
- data/lib/phony/countries/latvia.rb +2 -0
- data/lib/phony/countries/libya.rb +3 -1
- data/lib/phony/countries/malaysia.rb +2 -0
- data/lib/phony/countries/moldova.rb +2 -0
- data/lib/phony/countries/montenegro.rb +2 -0
- data/lib/phony/countries/myanmar.rb +2 -0
- data/lib/phony/countries/namibia.rb +2 -0
- data/lib/phony/countries/nepal.rb +2 -0
- data/lib/phony/countries/netherlands.rb +2 -0
- data/lib/phony/countries/pakistan.rb +2 -0
- data/lib/phony/countries/paraguay.rb +2 -0
- data/lib/phony/countries/russia_kazakhstan_abkhasia_south_ossetia.rb +2 -0
- data/lib/phony/countries/saudi_arabia.rb +2 -0
- data/lib/phony/countries/serbia.rb +7 -1
- data/lib/phony/countries/somalia.rb +2 -0
- data/lib/phony/countries/south_korea.rb +7 -2
- data/lib/phony/countries/sweden.rb +2 -0
- data/lib/phony/countries/taiwan.rb +3 -0
- data/lib/phony/countries/tajikistan.rb +2 -0
- data/lib/phony/countries/turkmenistan.rb +2 -0
- data/lib/phony/countries/ukraine.rb +2 -0
- data/lib/phony/countries/united_kingdom.rb +5 -2
- data/lib/phony/countries/uruguay.rb +2 -0
- data/lib/phony/countries/vietnam.rb +7 -1
- data/lib/phony/countries/zimbabwe.rb +2 -0
- data/lib/phony/countries.rb +108 -65
- data/lib/phony/country.rb +11 -3
- data/lib/phony/country_codes.rb +16 -3
- data/lib/phony/dsl.rb +5 -3
- data/lib/phony/local_splitters/fixed.rb +2 -0
- data/lib/phony/national_code.rb +1 -1
- data/lib/phony/national_splitters/none.rb +1 -3
- data/lib/phony/trunk_code.rb +5 -5
- data/lib/phony.rb +62 -57
- data/spec/functional/config_spec.rb +44 -0
- data/spec/functional/plausibility_spec.rb +104 -19
- data/spec/lib/phony/countries_spec.rb +107 -35
- data/spec/lib/phony/country_codes_spec.rb +82 -58
- data/spec/lib/phony/country_spec.rb +29 -9
- data/spec/lib/phony/dsl_spec.rb +7 -3
- data/spec/lib/phony/local_splitters/regex_spec.rb +19 -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/trunk_code_spec.rb +85 -0
- data/spec/lib/phony/vanity_spec.rb +4 -4
- metadata +23 -18
data/lib/phony.rb
CHANGED
@@ -1,70 +1,75 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# NOTE We use Kernel.load here, as it's possible to redefine Phony via Phony::Config.
|
4
|
+
|
1
5
|
# Framework.
|
2
6
|
#
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
7
|
+
load File.expand_path '../phony/config.rb', __FILE__
|
8
|
+
load File.expand_path '../phony/vanity.rb', __FILE__
|
9
|
+
load File.expand_path '../phony/local_splitters/fixed.rb', __FILE__
|
10
|
+
load File.expand_path '../phony/local_splitters/regex.rb', __FILE__
|
11
|
+
load File.expand_path '../phony/national_splitters/dsl.rb', __FILE__
|
12
|
+
load File.expand_path '../phony/national_splitters/fixed.rb', __FILE__
|
13
|
+
load File.expand_path '../phony/national_splitters/variable.rb', __FILE__
|
14
|
+
load File.expand_path '../phony/national_splitters/regex.rb', __FILE__
|
15
|
+
load File.expand_path '../phony/national_splitters/default.rb', __FILE__
|
16
|
+
load File.expand_path '../phony/national_splitters/none.rb', __FILE__
|
17
|
+
load File.expand_path '../phony/national_code.rb', __FILE__
|
18
|
+
load File.expand_path '../phony/country.rb', __FILE__
|
19
|
+
load File.expand_path '../phony/trunk_code.rb', __FILE__
|
20
|
+
load File.expand_path '../phony/country_codes.rb', __FILE__
|
21
|
+
load File.expand_path '../phony/dsl.rb', __FILE__
|
18
22
|
|
19
23
|
# Countries.
|
20
24
|
#
|
21
25
|
# The ones that need more space to define.
|
22
26
|
#
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
27
|
+
load File.expand_path '../phony/countries/argentina.rb', __FILE__
|
28
|
+
load File.expand_path '../phony/countries/austria.rb', __FILE__
|
29
|
+
load File.expand_path '../phony/countries/bangladesh.rb', __FILE__
|
30
|
+
load File.expand_path '../phony/countries/belarus.rb', __FILE__
|
31
|
+
load File.expand_path '../phony/countries/brazil.rb', __FILE__
|
32
|
+
load File.expand_path '../phony/countries/cambodia.rb', __FILE__
|
33
|
+
load File.expand_path '../phony/countries/croatia.rb', __FILE__
|
34
|
+
load File.expand_path '../phony/countries/china.rb', __FILE__
|
35
|
+
load File.expand_path '../phony/countries/georgia.rb', __FILE__
|
36
|
+
load File.expand_path '../phony/countries/germany.rb', __FILE__
|
37
|
+
load File.expand_path '../phony/countries/guinea.rb', __FILE__
|
38
|
+
load File.expand_path '../phony/countries/india.rb', __FILE__
|
39
|
+
load File.expand_path '../phony/countries/indonesia.rb', __FILE__
|
40
|
+
load File.expand_path '../phony/countries/ireland.rb', __FILE__
|
41
|
+
load File.expand_path '../phony/countries/italy.rb', __FILE__
|
42
|
+
load File.expand_path '../phony/countries/japan.rb', __FILE__
|
43
|
+
load File.expand_path '../phony/countries/kyrgyzstan.rb', __FILE__
|
44
|
+
load File.expand_path '../phony/countries/latvia.rb', __FILE__
|
45
|
+
load File.expand_path '../phony/countries/libya.rb', __FILE__
|
46
|
+
load File.expand_path '../phony/countries/malaysia.rb', __FILE__
|
47
|
+
load File.expand_path '../phony/countries/moldova.rb', __FILE__
|
48
|
+
load File.expand_path '../phony/countries/montenegro.rb', __FILE__
|
49
|
+
load File.expand_path '../phony/countries/myanmar.rb', __FILE__
|
50
|
+
load File.expand_path '../phony/countries/namibia.rb', __FILE__
|
51
|
+
load File.expand_path '../phony/countries/nepal.rb', __FILE__
|
52
|
+
load File.expand_path '../phony/countries/netherlands.rb', __FILE__
|
53
|
+
load File.expand_path '../phony/countries/pakistan.rb', __FILE__
|
54
|
+
load File.expand_path '../phony/countries/paraguay.rb', __FILE__
|
55
|
+
load File.expand_path '../phony/countries/russia_kazakhstan_abkhasia_south_ossetia.rb', __FILE__
|
56
|
+
load File.expand_path '../phony/countries/saudi_arabia.rb', __FILE__
|
57
|
+
load File.expand_path '../phony/countries/serbia.rb', __FILE__
|
58
|
+
load File.expand_path '../phony/countries/somalia.rb', __FILE__
|
59
|
+
load File.expand_path '../phony/countries/south_korea.rb', __FILE__
|
60
|
+
load File.expand_path '../phony/countries/sweden.rb', __FILE__
|
61
|
+
load File.expand_path '../phony/countries/taiwan.rb', __FILE__
|
62
|
+
load File.expand_path '../phony/countries/tajikistan.rb', __FILE__
|
63
|
+
load File.expand_path '../phony/countries/turkmenistan.rb', __FILE__
|
64
|
+
load File.expand_path '../phony/countries/vietnam.rb', __FILE__
|
65
|
+
load File.expand_path '../phony/countries/ukraine.rb', __FILE__
|
66
|
+
load File.expand_path '../phony/countries/united_kingdom.rb', __FILE__
|
67
|
+
load File.expand_path '../phony/countries/uruguay.rb', __FILE__
|
68
|
+
load File.expand_path '../phony/countries/zimbabwe.rb', __FILE__
|
64
69
|
|
65
70
|
# All other countries.
|
66
71
|
#
|
67
|
-
|
72
|
+
load File.expand_path '../phony/countries.rb', __FILE__
|
68
73
|
|
69
74
|
# Phony is the main module and is generally used to process
|
70
75
|
# E164 phone numbers directly.
|
@@ -0,0 +1,44 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
#
|
3
|
+
describe 'Phony::Config' do
|
4
|
+
describe 'load' do
|
5
|
+
before do
|
6
|
+
# NOTE We redefine Phony as if it was not loaded for this set of tests.
|
7
|
+
Object.__send__(:remove_const, :Phony) if Object.constants.include?(:Phony)
|
8
|
+
|
9
|
+
load 'phony/config.rb'
|
10
|
+
end
|
11
|
+
after(:all) do
|
12
|
+
# After running this suite, we load all of Phony for the following tests.
|
13
|
+
load 'phony/config.rb'
|
14
|
+
|
15
|
+
Phony::Config.load
|
16
|
+
end
|
17
|
+
|
18
|
+
it 'does not fail when loading all' do
|
19
|
+
Phony::Config.load
|
20
|
+
|
21
|
+
expect(Phony.split('15551115511')).to eq ['1', '555', '111', '5511']
|
22
|
+
end
|
23
|
+
it 'raises when a CC is used that has not been loaded.' do
|
24
|
+
Phony::Config.load('41')
|
25
|
+
|
26
|
+
expect { Phony.split('15551115511') }.to raise_error(Phony::SplittingError)
|
27
|
+
end
|
28
|
+
it 'raises when a CC is used that has not been loaded.' do
|
29
|
+
Phony::Config.load(only: ['41'])
|
30
|
+
|
31
|
+
expect { Phony.split('15551115511') }.to raise_error(Phony::SplittingError)
|
32
|
+
end
|
33
|
+
it 'raises when a CC is used that has not been loaded.' do
|
34
|
+
Phony::Config.load(except: ['1'])
|
35
|
+
|
36
|
+
expect { Phony.split('15551115511') }.to raise_error(Phony::SplittingError)
|
37
|
+
end
|
38
|
+
it 'does not raise when a CC is used that has been loaded.' do
|
39
|
+
Phony::Config.load(except: ['41'])
|
40
|
+
|
41
|
+
expect(Phony.split('15551115511')).to eq ['1', '555', '111', '5511']
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
@@ -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
|
@@ -46,10 +46,19 @@ describe 'plausibility' do
|
|
46
46
|
end
|
47
47
|
|
48
48
|
context 'specific countries' do
|
49
|
-
it_is_correct_for 'Austria', :samples => '+43 720 116987' # VoIP
|
49
|
+
it_is_correct_for 'Austria', :samples => ['+43 720 116987', # VoIP
|
50
|
+
'+43 463 12345'] # Klagenfurt
|
50
51
|
it_is_correct_for 'Bosnia and Herzegovina', :samples => ['+387 66 666 666',
|
51
52
|
'+387 37 123 456',
|
52
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
|
53
62
|
it 'is correct for Bulgaria' do
|
54
63
|
Phony.plausible?('+359 2 1234567').should be_truthy
|
55
64
|
Phony.plausible?('+359 30 12345').should be_truthy
|
@@ -178,6 +187,14 @@ describe 'plausibility' do
|
|
178
187
|
Phony.plausible?('+359 998 123456').should be_truthy
|
179
188
|
Phony.plausible?('+359 999 123456').should be_truthy
|
180
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']
|
181
198
|
it_is_correct_for 'Congo', :samples => '+242 1234 56789'
|
182
199
|
it_is_correct_for 'Cook Islands', :samples => '+682 71928'
|
183
200
|
it_is_correct_for 'Costa Rica', :samples => '+506 2 234 5678'
|
@@ -191,7 +208,7 @@ describe 'plausibility' do
|
|
191
208
|
Phony.plausible?('+385 60 12 345').should be_truthy # Premium rate
|
192
209
|
Phony.plausible?('+385 62 123 456').should be_truthy # Premium, personal and UAN
|
193
210
|
end
|
194
|
-
it_is_correct_for "Côte d'Ivoire", :samples => '+225
|
211
|
+
it_is_correct_for "Côte d'Ivoire", :samples => '+225 01 9358 8764'
|
195
212
|
it_is_correct_for 'Democratic Republic of Timor-Leste', :samples => ['+670 465 7886', '+670 7465 7886']
|
196
213
|
it_is_correct_for 'Democratic Republic of the Congo', :samples => '+243 80 864 9794'
|
197
214
|
it_is_correct_for 'Diego Garcia', :samples => '+246 123 7686'
|
@@ -248,10 +265,18 @@ describe 'plausibility' do
|
|
248
265
|
end
|
249
266
|
it_is_correct_for 'French Guiana (French Department of)', :samples => '+594 594 123 456'
|
250
267
|
it_is_correct_for "French Polynesia (Territoire français d'outre-mer)", :samples => '+689 87 27 84 00'
|
251
|
-
|
268
|
+
it 'is correct for Gabon' do
|
269
|
+
Phony.plausible?('+241 1 627 739').should be_truthy
|
270
|
+
Phony.plausible?('+241 12 34 56 78').should be_truthy
|
271
|
+
end
|
272
|
+
# it_is_correct_for 'Gabonese Republic', :samples => [
|
273
|
+
# '+241 1 627 739',
|
274
|
+
# '+241 12 34 56 78',
|
275
|
+
# ]
|
252
276
|
it_is_correct_for 'Gambia', :samples => '+220 989 5148'
|
253
277
|
it_is_correct_for 'Germany', :samples => [
|
254
|
-
'+49
|
278
|
+
'+49 69 155 1',
|
279
|
+
'+49 1577 536 8701'
|
255
280
|
]
|
256
281
|
it_is_correct_for 'Georgia', :samples => ['+995 220 123 45',
|
257
282
|
'+995 32 123 4567',
|
@@ -276,7 +301,7 @@ describe 'plausibility' do
|
|
276
301
|
'+964 71 1234 5678']
|
277
302
|
|
278
303
|
|
279
|
-
it_is_correct_for 'Kiribati (Republic of)', :samples => '+686
|
304
|
+
it_is_correct_for 'Kiribati (Republic of)', :samples => '+686 34814527'
|
280
305
|
it_is_correct_for "Democratic People's Republic of Korea", :samples => ['+850 2 123 45',
|
281
306
|
'+850 2 123 456 789',
|
282
307
|
'+850 2 381 2356',
|
@@ -315,10 +340,19 @@ describe 'plausibility' do
|
|
315
340
|
it_is_correct_for 'Macedonia', :samples => ['+389 2 123 4567',
|
316
341
|
'+389 7 124 3456',
|
317
342
|
'+389 7 234 5678']
|
318
|
-
it_is_correct_for 'Madagascar', :samples => ['+261 20
|
319
|
-
'+261
|
320
|
-
'+261
|
321
|
-
'+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
|
+
|
322
356
|
it_is_correct_for 'Malawi', :samples => ['+265 1725 123',
|
323
357
|
'+265 213 456 789',
|
324
358
|
'+265 9123 456',
|
@@ -329,7 +363,8 @@ describe 'plausibility' do
|
|
329
363
|
it_is_correct_for 'Marshall Islands (Republic of the)', :samples => '+692 372 7183'
|
330
364
|
it_is_correct_for 'Martinique (French Department of)', :samples => '+596 596 123 456'
|
331
365
|
it_is_correct_for 'Mauritania', :samples => '+222 1234 5678'
|
332
|
-
it_is_correct_for 'Mauritius', :samples => '+230
|
366
|
+
it_is_correct_for 'Mauritius', :samples => ['+230 5 695 2277',
|
367
|
+
'+230 260 0070']
|
333
368
|
it_is_correct_for 'Micronesia (Federated States of)', :samples => '+691 766 7914'
|
334
369
|
it_is_correct_for 'Moldova', :samples => ['+373 800 123 45',
|
335
370
|
'+373 22 123 345',
|
@@ -353,6 +388,11 @@ describe 'plausibility' do
|
|
353
388
|
end
|
354
389
|
it_is_correct_for 'Nicaragua', :samples => '+505 12 345 678'
|
355
390
|
it_is_correct_for 'Niger', :samples => '+227 1234 5678'
|
391
|
+
it_is_correct_for 'Nigeria', :samples => ['+234 807 059 1111',
|
392
|
+
'+234 811 234 5678',
|
393
|
+
'+234 64 830 00',
|
394
|
+
'+234 1 280 444',
|
395
|
+
'+234 85 123 456']
|
356
396
|
it_is_correct_for 'Niue', :samples => '+683 3791'
|
357
397
|
it_is_correct_for 'Oman', :samples => ['+968 24 423 123',
|
358
398
|
'+968 25 423 123']
|
@@ -385,6 +425,12 @@ describe 'plausibility' do
|
|
385
425
|
'+507 6 123 4567',
|
386
426
|
'+507 2 123 456']
|
387
427
|
it_is_correct_for 'Reunion / Mayotte (new)', :samples => '+262 295 276 964'
|
428
|
+
it_is_correct_for 'Rwanda', :samples => ['+250 72 1234567',
|
429
|
+
'+250 73 1234567',
|
430
|
+
'+250 78 1234567',
|
431
|
+
'+250 79 1234567',
|
432
|
+
'+250 25 1234567',
|
433
|
+
'+250 06 123456']
|
388
434
|
it_is_correct_for 'Saint Helena', :samples => '+290 5134'
|
389
435
|
it_is_correct_for 'Saint Pierre and Miquelon (Collectivité territoriale de la République française)', :samples => '+508 474 714'
|
390
436
|
it_is_correct_for 'Salvador (El)', :samples => [
|
@@ -413,8 +459,10 @@ describe 'plausibility' do
|
|
413
459
|
['+381 11 123 456', '+381 11 123 4567'],
|
414
460
|
'+381 72 123 456',
|
415
461
|
'+381 60 123',
|
416
|
-
'+381 60 123 4567',
|
462
|
+
['+381 60 123 4567', '+381 69 123 456'],
|
417
463
|
'+381 42 123 456',
|
464
|
+
'+381 677 123 456',
|
465
|
+
'+381 678 123 456',
|
418
466
|
'+381 9 123 4567',
|
419
467
|
'+381 60 123',
|
420
468
|
'+381 60 123 456 7890',
|
@@ -485,7 +533,10 @@ describe 'plausibility' do
|
|
485
533
|
it_is_correct_for 'Lybia', :samples => ['+218 205 123 45',
|
486
534
|
'+218 22 123 456',
|
487
535
|
'+218 21 1234 456',
|
488
|
-
'+218 91 1234 456'
|
536
|
+
'+218 91 1234 456',
|
537
|
+
'+218 92 1234 456',
|
538
|
+
'+218 94 1234 456',
|
539
|
+
'+218 95 1234 456']
|
489
540
|
it_is_correct_for 'Mongolia', :samples => ['+976 11 123 45',
|
490
541
|
['+976 121 12 34', '+976 121 12 345'],
|
491
542
|
'+976 70 123 456',
|
@@ -539,16 +590,21 @@ describe 'plausibility' do
|
|
539
590
|
'+598 805 123 45']
|
540
591
|
it_is_correct_for 'Vietnam', :samples => ['+84 24 41234567',
|
541
592
|
'+84 28 41234567',
|
542
|
-
'+84 23 61234567'
|
593
|
+
'+84 23 61234567',
|
594
|
+
'+84 1900 1212',
|
595
|
+
'+84 1900 541234']
|
543
596
|
it_is_correct_for 'Yemen', :samples => [['+967 1 234 567', '+967 1 234 5678'],
|
544
597
|
'+967 7 234 567',
|
545
598
|
'+967 77 123 4567',
|
546
599
|
'+967 58 1234']
|
547
600
|
it 'is correct for Zambia' do
|
548
601
|
Phony.plausible?('+260 211 123456').should be_truthy # Fixed
|
549
|
-
Phony.plausible?('+260
|
550
|
-
Phony.plausible?('+260
|
551
|
-
Phony.plausible?('+260
|
602
|
+
Phony.plausible?('+260 96 512 4567').should be_truthy # MTN Mobile
|
603
|
+
Phony.plausible?('+260 97 712 3456').should be_truthy # Airtel Mobile
|
604
|
+
Phony.plausible?('+260 95 512 4567').should be_truthy # Zamtel Mobile
|
605
|
+
Phony.plausible?('+260 96 512 456').should be_falsy # MTN Mobile (Too short)
|
606
|
+
Phony.plausible?('+260 97 812 345').should be_falsy # Airtel Mobile (Too short)
|
607
|
+
Phony.plausible?('+260 95 512 345').should be_falsy # Zamtel Mobile (Too short)
|
552
608
|
Phony.plausible?('+260 800 123 456').should be_truthy # Toll free
|
553
609
|
end
|
554
610
|
it_is_correct_for 'Zimbabwe', :samples => [['+263 2582 123 456', '+263 2582 123'],
|
@@ -564,6 +620,29 @@ describe 'plausibility' do
|
|
564
620
|
Phony.plausible?('+62 22 000 000 000').should be_truthy
|
565
621
|
end
|
566
622
|
|
623
|
+
it 'is correct for Italy' do
|
624
|
+
Phony.plausible?('+39 0574 123').should be_falsy
|
625
|
+
Phony.plausible?('+39 0574 1234').should be_truthy
|
626
|
+
Phony.plausible?('+39 0574 12345').should be_falsy
|
627
|
+
|
628
|
+
Phony.plausible?('+39 085 541').should be_falsy
|
629
|
+
Phony.plausible?('+39 085 5410').should be_truthy
|
630
|
+
Phony.plausible?('+39 085 54105').should be_truthy
|
631
|
+
|
632
|
+
Phony.plausible?('+39 06 4991').should be_falsy
|
633
|
+
Phony.plausible?('+39 06 49911').should be_truthy
|
634
|
+
Phony.plausible?('+39 06 499112').should be_truthy
|
635
|
+
|
636
|
+
Phony.plausible?('+39 800 081631').should be_truthy
|
637
|
+
Phony.plausible?('+39 800 0816311').should be_falsy
|
638
|
+
|
639
|
+
Phony.plausible?('+39 803 08163').should be_falsy
|
640
|
+
Phony.plausible?('+39 803 081').should be_truthy
|
641
|
+
|
642
|
+
Phony.plausible?('+39 06 8323074181').should be_falsy
|
643
|
+
Phony.plausible?('+39 06 832307418').should be_truthy
|
644
|
+
end
|
645
|
+
|
567
646
|
it 'is correct for Russia' do
|
568
647
|
Phony.plausible?('+7 3522 000 000').should be_truthy
|
569
648
|
end
|
@@ -598,6 +677,12 @@ describe 'plausibility' do
|
|
598
677
|
Phony.plausible?('+81 120 123 123').should be_truthy
|
599
678
|
Phony.plausible?('+81 800 123 1234').should be_truthy
|
600
679
|
end
|
680
|
+
|
681
|
+
it 'is correct for Philippine' do
|
682
|
+
Phony.plausible?('+63 2 89889999').should be_truthy
|
683
|
+
Phony.plausible?('+63 976 1234567').should be_truthy # mobile phone with area code 9
|
684
|
+
Phony.plausible?('+63 876 1234567').should be_truthy # mobile phone with area code 8
|
685
|
+
end
|
601
686
|
end
|
602
687
|
end
|
603
688
|
end
|