phony 2.14.0 → 2.14.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.textile +35 -160
- data/lib/phony/countries/japan.rb +7 -5
- data/lib/phony/country.rb +6 -6
- data/lib/phony/national_splitters/dsl.rb +6 -2
- data/spec/functional/plausibility_spec.rb +3 -665
- data/spec/lib/phony/countries_spec.rb +12 -6
- metadata +2 -12
- data/spec/functional/error_spec.rb +0 -22
- data/spec/functional/format_spec.rb +0 -154
- data/spec/functional/normalize_spec.rb +0 -121
- data/spec/lib/phony/vanity_spec.rb +0 -34
- data/spec/lib/phony_spec.rb +0 -122
@@ -373,12 +373,18 @@ describe 'country descriptions' do
|
|
373
373
|
it_splits '390471811353', ['39', '0471', '811', '353'] # Bolzano
|
374
374
|
end
|
375
375
|
describe 'Japan' do
|
376
|
-
it_splits '81312345678', %w(81 3 1234 5678)
|
377
|
-
it_splits '
|
378
|
-
it_splits '
|
379
|
-
it_splits '
|
380
|
-
it_splits '
|
381
|
-
it_splits '
|
376
|
+
it_splits '81312345678', %w(81 3 1234 5678) # Tokyo
|
377
|
+
it_splits '81612345678', %w(81 6 1234 5678) # Osaka
|
378
|
+
it_splits '81120123456', %w(81 120 123 456) # Freephone
|
379
|
+
it_splits '81111234567', %w(81 11 123 4567)
|
380
|
+
it_splits '81123123456', %w(81 123 12 3456)
|
381
|
+
it_splits '81126712345', %w(81 1267 1 2345)
|
382
|
+
it_splits '812012345678', %w(81 20 1234 5678) # Pager(Calling Party Pay)
|
383
|
+
it_splits '815012345678', %w(81 50 1234 5678) # IP Telephone
|
384
|
+
it_splits '816012345678', %w(81 60 1234 5678) # UPT
|
385
|
+
it_splits '817012345678', %w(81 70 1234 5678) # PHS
|
386
|
+
it_splits '818012345678', %w(81 80 1234 5678) # Cellular
|
387
|
+
it_splits '819012345678', %w(81 90 1234 5678) # Cellular
|
382
388
|
end
|
383
389
|
describe 'Kenya' do
|
384
390
|
it_splits '254201234567', ['254', '20', '1234567'] # Nairobi
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: phony
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.14.
|
4
|
+
version: 2.14.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Florian Hanke
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-05-
|
11
|
+
date: 2015-05-26 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: 'Fast international phone number (E164 standard) normalizing, splitting
|
14
14
|
and formatting. Lots of formatting options: International (+.., 00..), national
|
@@ -75,9 +75,6 @@ files:
|
|
75
75
|
- lib/phony/national_splitters/variable.rb
|
76
76
|
- lib/phony/trunk_code.rb
|
77
77
|
- lib/phony/vanity.rb
|
78
|
-
- spec/functional/error_spec.rb
|
79
|
-
- spec/functional/format_spec.rb
|
80
|
-
- spec/functional/normalize_spec.rb
|
81
78
|
- spec/functional/plausibility_spec.rb
|
82
79
|
- spec/lib/phony/countries_spec.rb
|
83
80
|
- spec/lib/phony/country_codes_spec.rb
|
@@ -91,8 +88,6 @@ files:
|
|
91
88
|
- spec/lib/phony/national_splitters/none_spec.rb
|
92
89
|
- spec/lib/phony/national_splitters/regex_spec.rb
|
93
90
|
- spec/lib/phony/national_splitters/variable_spec.rb
|
94
|
-
- spec/lib/phony/vanity_spec.rb
|
95
|
-
- spec/lib/phony_spec.rb
|
96
91
|
homepage: http://github.com/floere/phony
|
97
92
|
licenses:
|
98
93
|
- MIT
|
@@ -119,9 +114,6 @@ specification_version: 4
|
|
119
114
|
summary: Fast international phone number (E164 standard) normalizing, splitting and
|
120
115
|
formatting.
|
121
116
|
test_files:
|
122
|
-
- spec/functional/error_spec.rb
|
123
|
-
- spec/functional/format_spec.rb
|
124
|
-
- spec/functional/normalize_spec.rb
|
125
117
|
- spec/functional/plausibility_spec.rb
|
126
118
|
- spec/lib/phony/countries_spec.rb
|
127
119
|
- spec/lib/phony/country_codes_spec.rb
|
@@ -135,5 +127,3 @@ test_files:
|
|
135
127
|
- spec/lib/phony/national_splitters/none_spec.rb
|
136
128
|
- spec/lib/phony/national_splitters/regex_spec.rb
|
137
129
|
- spec/lib/phony/national_splitters/variable_spec.rb
|
138
|
-
- spec/lib/phony/vanity_spec.rb
|
139
|
-
- spec/lib/phony_spec.rb
|
@@ -1,22 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe 'Issues' do
|
4
|
-
|
5
|
-
describe '#136' do
|
6
|
-
|
7
|
-
it 'is correct for country 39' do
|
8
|
-
Phony.normalize('+39 393 0000000').should == '393930000000'
|
9
|
-
end
|
10
|
-
|
11
|
-
it 'fixes #136' do
|
12
|
-
italia = Phony['39']
|
13
|
-
italia.normalize('363 000000').should == '363000000'
|
14
|
-
end
|
15
|
-
|
16
|
-
it 'is correct for country 46' do
|
17
|
-
Phony.normalize('+46 (0)46 222 0000').should == '46462220000'
|
18
|
-
end
|
19
|
-
|
20
|
-
end
|
21
|
-
|
22
|
-
end
|
@@ -1,154 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
# This is a very helpful page for phone number formatting:
|
4
|
-
# http://en.wikipedia.org/wiki/National_conventions_for_writing_telephone_numbers
|
5
|
-
#
|
6
|
-
describe 'Phony#format' do
|
7
|
-
|
8
|
-
describe 'cases' do
|
9
|
-
describe 'Exceptions' do
|
10
|
-
it 'raises on nil' do
|
11
|
-
expect {
|
12
|
-
Phony.format nil
|
13
|
-
}.to raise_error(ArgumentError, 'Phone number cannot be nil. Use e.g. number && Phony.format(number).')
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
describe 'Templates' do
|
18
|
-
it 'handles a basic template correctly' do
|
19
|
-
Phony.format('41443643532', :format => 'A%{cc}B%{trunk}C%{ndc}D%{local}').should eql 'A41B0C44D364 35 32'
|
20
|
-
end
|
21
|
-
it 'handles a funky template correctly' do
|
22
|
-
Phony.format('41443643532', :format => '%{local} %{ndc} %{trunk} %{cc}', :local_spaces => '').should eql '3643532 44 0 41'
|
23
|
-
end
|
24
|
-
it 'handles local_spaces correctly' do
|
25
|
-
Phony.format('41443643532', :format => 'A%{cc}B%{ndc}C%{local}', :local_spaces => '/').should eql 'A41B44C364/35/32'
|
26
|
-
end
|
27
|
-
it 'handles a Russian example correctly' do
|
28
|
-
# https://github.com/floere/phony/issues/214
|
29
|
-
Phony.format('71234567890', :format => '+%{cc} (%{trunk}%{ndc}) %{local}', :local_spaces => '-').should eql '+7 (8123) 45-67890'
|
30
|
-
end
|
31
|
-
it 'handles an American example correctly' do
|
32
|
-
Phony.format('13015550100', :format => '+%{cc} %{trunk}%{ndc} %{local}', :local_spaces => '-').should eql '+1 301 555-0100'
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
def self.for_each_from tsv_file_name
|
37
|
-
require 'csv'
|
38
|
-
describe "from file #{tsv_file_name}" do
|
39
|
-
CSV.open(tsv_file_name, headers: true, col_sep: "\t").each.with_index do |row, index|
|
40
|
-
country, expected, original, format, spaces, local_spaces = *row.
|
41
|
-
values_at('Country', 'Expected', 'Original', 'Format', 'Spaces', 'Local Spaces')
|
42
|
-
options = {}
|
43
|
-
options[:format] = format.to_sym if format
|
44
|
-
options[:spaces] = spaces.to_sym if spaces
|
45
|
-
it "(row #{index + 2}) #{country}: #{expected} from #{original} with #{format}, #{spaces}, #{local_spaces}" do
|
46
|
-
Phony.format(original, options).should eql expected
|
47
|
-
end
|
48
|
-
end
|
49
|
-
end
|
50
|
-
end
|
51
|
-
|
52
|
-
# Countries.
|
53
|
-
#
|
54
|
-
for_each_from 'spec/functional/format.tab'
|
55
|
-
|
56
|
-
describe 'Austria' do
|
57
|
-
it { Phony.format('43198110').should eql '+43 1 98110' }
|
58
|
-
it { Phony.format('43198110', :format => :international).should eql '+43 1 98110' }
|
59
|
-
it { Phony.format('43198110', :format => :international_absolute).should eql '+43 1 98110' }
|
60
|
-
it { Phony.format('43198110', :format => :international_relative).should eql '0043 1 98110' }
|
61
|
-
it { Phony.format('43198110', :format => :international, :spaces => '').should eql '+43198110' }
|
62
|
-
it { Phony.format('43198110', :format => :international_absolute, :spaces => '').should eql '+43198110' }
|
63
|
-
it { Phony.format('43198110', :format => :international_relative, :spaces => '').should eql '0043198110' }
|
64
|
-
it { Phony.format('43198110', :format => :international, :spaces => :-).should eql '+43-1-98110' }
|
65
|
-
it { Phony.format('43198110', :format => :international_absolute, :spaces => :-).should eql '+43-1-98110' }
|
66
|
-
it { Phony.format('43198110', :format => :international_relative, :spaces => :-).should eql '0043-1-98110' }
|
67
|
-
it { Phony.format('43198110', :format => :national).should eql '01 98110' }
|
68
|
-
end
|
69
|
-
describe 'Denmark' do
|
70
|
-
it { Phony.format('4540506070', format: :national).should eql '40 50 60 70' }
|
71
|
-
end
|
72
|
-
describe 'France' do
|
73
|
-
it { Phony.format('33142278186', :format => :+).should eql '+33 1 42 27 81 86' }
|
74
|
-
it { Phony.format('33142278186', :format => :+, :spaces => '').should eql '+33142278186' }
|
75
|
-
it { Phony.format('33142278186', :format => :+, :spaces => :-).should eql '+33-1-42-27-81-86' }
|
76
|
-
end
|
77
|
-
describe 'India' do
|
78
|
-
it { Phony.format('914433993939').should eql '+91 44 339 93 939' }
|
79
|
-
end
|
80
|
-
describe 'Italy' do
|
81
|
-
it { Phony.format('393333337647', :format => :international).should eql '+39 333 333 7647' }
|
82
|
-
it { Phony.format('390108480161', :format => :international).should eql '+39 010 8480161' }
|
83
|
-
it { Phony.format('393333337647', :format => :national).should eql '333 333 7647' }
|
84
|
-
it { Phony.format('390108480161', :format => :national).should eql '010 8480161' }
|
85
|
-
end
|
86
|
-
describe 'Liechtenstein' do
|
87
|
-
it { Phony.format('4233841148', :format => :international_relative).should eql '00423 384 11 48' }
|
88
|
-
it { Phony.format('4233841148', :format => :international_relative, :spaces => '').should eql '004233841148' }
|
89
|
-
it { Phony.format('4233841148', :format => :international_relative, :spaces => :-).should eql '00423-384-11-48' }
|
90
|
-
end
|
91
|
-
describe 'NANP' do
|
92
|
-
it { Phony.format('18705551122').should eql '+1 (870) 555-1122' }
|
93
|
-
it { Phony.format('18091231234', :format => :international).should eql '+1 (809) 123-1234' }
|
94
|
-
it { Phony.format('18091231234', :format => :international, :spaces => '').should eql '+1(809)123-1234' }
|
95
|
-
# Gets a trunk code.
|
96
|
-
it { Phony.format('14152223333', :format => :national).should eql '(415) 222-3333' }
|
97
|
-
# Does not show a trunk code.
|
98
|
-
it { Phony.format('14152223333', :format => :national).should eql '(415) 222-3333' }
|
99
|
-
it { Phony.format('18091231234', :format => :international, :spaces => :-).should eql '+1-(809)-123-1234' }
|
100
|
-
it { Phony.format('14159224711', :format => :national).should eql '(415) 922-4711' }
|
101
|
-
# With forced trunk.
|
102
|
-
it { Phony.format('14159224711', :format => :national, :trunk => true).should eql '1 (415) 922-4711' }
|
103
|
-
it { Phony.format('14159224711', :format => :national, :trunk => false).should eql '(415) 922-4711' }
|
104
|
-
# With forced parentheses.
|
105
|
-
it { Phony.format('14159224711', :format => :national, :parentheses => true).should eql '(415) 922-4711' }
|
106
|
-
it { Phony.format('14159224711', :format => :national, :parentheses => false).should eql '415 922-4711' }
|
107
|
-
end
|
108
|
-
describe 'Netherlands' do
|
109
|
-
it { Phony.format('311012341234', :format => :national).should eql '010 123 41234' }
|
110
|
-
# With forced trunk.
|
111
|
-
it { Phony.format('311012341234', :format => :national, :trunk => true).should eql '010 123 41234' }
|
112
|
-
end
|
113
|
-
describe 'New Zealand' do
|
114
|
-
it { Phony.format('6421123456').should eql '+64 21 123 456' }
|
115
|
-
it { Phony.format('64211234567').should eql '+64 21 123 4567' }
|
116
|
-
it { Phony.format('642112345678').should eql '+64 21 12 345 678' }
|
117
|
-
it { Phony.format('6493791234').should eql '+64 9 379 1234' }
|
118
|
-
end
|
119
|
-
describe 'Russia' do
|
120
|
-
it { Phony.format(Phony.normalize('+370 800 12345'), :format => :international).should eql '+370 800 12 345' }
|
121
|
-
it { Phony.format(Phony.normalize('+7 812 123 4567'), :format => :international).should eql '+7 812 123-45-67' }
|
122
|
-
it { Phony.format(Phony.normalize('+370 800 12345'), :format => :national).should eql '8800 12 345' }
|
123
|
-
it { Phony.format(Phony.normalize('+7 812 123 4567'), :format => :national).should eql '8812 123-45-67' }
|
124
|
-
end
|
125
|
-
describe 'Switzerland' do
|
126
|
-
it { Phony.format('41443643532').should eql '+41 44 364 35 32' }
|
127
|
-
it { Phony.format('41443643532', :format => :national).should eql '044 364 35 32' }
|
128
|
-
it { Phony.format('41800112233').should eql '+41 800 112 233' }
|
129
|
-
it { Phony.format('41443643532', :format => :international).should eql '+41 44 364 35 32' }
|
130
|
-
it { Phony.format('41443643532', :format => :national).should eql '044 364 35 32' }
|
131
|
-
it { Phony.format('41800112233', :format => :national).should eql '0800 112 233' }
|
132
|
-
it { Phony.format('41443643532', :format => :local).should eql '364 35 32' }
|
133
|
-
it { Phony.format('493038625454', :format => :local).should eql '386 25454' }
|
134
|
-
end
|
135
|
-
describe 'yet unsupported' do
|
136
|
-
# formats as a single block
|
137
|
-
it { Phony.format('88132155605220').should eql '+881 32155605220' }
|
138
|
-
# formats as a single block, regardless of format
|
139
|
-
it { Phony.format('8811819372205', :format => :international).should eql '+881 1819372205' }
|
140
|
-
# formats as a single block, respecting custom spaces
|
141
|
-
it { Phony.format('8811819372205', :spaces => :-).should eql '+881-1819372205' }
|
142
|
-
# formats as a single block, even without spaces
|
143
|
-
it { Phony.format('8811819372205', :spaces => '').should eql '+8811819372205' }
|
144
|
-
end
|
145
|
-
|
146
|
-
end
|
147
|
-
|
148
|
-
describe 'formatted' do
|
149
|
-
it 'is an alias of format' do
|
150
|
-
Phony.formatted('41443643532').should eql '+41 44 364 35 32'
|
151
|
-
end
|
152
|
-
end
|
153
|
-
|
154
|
-
end
|
@@ -1,121 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe 'Phony#normalize' do
|
4
|
-
|
5
|
-
describe 'cases' do
|
6
|
-
|
7
|
-
describe 'regressions' do
|
8
|
-
it '#151' do
|
9
|
-
# Normalizes, but this is a non-real case.
|
10
|
-
#
|
11
|
-
Phony.normalize('1-111-111-1111').should eql '1111111111'
|
12
|
-
Phony.normalize('111-111-1111', cc: '1').should eql '1111111111'
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
it 'handles the US (with cc) correctly' do
|
17
|
-
Phony.normalize('+1 724 999 9999').should eql '17249999999'
|
18
|
-
end
|
19
|
-
it 'handles the Dutch number (without US cc) correctly' do
|
20
|
-
Phony.normalize('310 5552121').should eql '315552121'
|
21
|
-
end
|
22
|
-
it 'handles the US (with cc and cc option) correctly' do
|
23
|
-
Phony.normalize('+1 724 999 9999', cc: '1').should eql '17249999999'
|
24
|
-
end
|
25
|
-
it 'handles the US (without cc) correctly' do
|
26
|
-
Phony.normalize('(310) 555-2121', cc: '1').should eql '13105552121'
|
27
|
-
end
|
28
|
-
it 'handles a German number with extra (0)' do
|
29
|
-
Phony.normalize('+49 (0) 209 22 33 44 55').should eql '4920922334455'
|
30
|
-
end
|
31
|
-
it 'handles a German number with extra 0' do
|
32
|
-
Phony.normalize('+49 0 209 22 33 44 55').should eql '4920922334455'
|
33
|
-
end
|
34
|
-
it 'handles Cambodian numbers with an extra 0' do
|
35
|
-
Phony.normalize('+855012239134').should eql "85512239134"
|
36
|
-
end
|
37
|
-
it 'should normalize a too short number' do
|
38
|
-
Phony.normalize('+972').should eql '972'
|
39
|
-
end
|
40
|
-
it 'should normalize an already normalized number' do
|
41
|
-
Phony.normalize('41443643533').should eql '41443643533'
|
42
|
-
end
|
43
|
-
it 'should normalize a format number' do
|
44
|
-
Phony.normalize('+41 44 364 35 33').should eql '41443643533'
|
45
|
-
end
|
46
|
-
it 'should normalize a 00 number' do
|
47
|
-
Phony.normalize('0041 44 364 35 33').should eql '41443643533'
|
48
|
-
end
|
49
|
-
it 'should normalize a service number' do
|
50
|
-
Phony.normalize('+41 800 11 22 33').should eql '41800112233'
|
51
|
-
end
|
52
|
-
it 'should remove characters from the number' do
|
53
|
-
Phony.normalize('John: +41 44 364 35 33').should eql '41443643533'
|
54
|
-
end
|
55
|
-
it 'should normalize one of these crazy american numbers' do
|
56
|
-
Phony.normalize('1 (703) 451-5115').should eql '17034515115'
|
57
|
-
end
|
58
|
-
it 'should normalize another one of these crazy american numbers' do
|
59
|
-
Phony.normalize('1-888-407-4747').should eql '18884074747'
|
60
|
-
end
|
61
|
-
it 'should normalize a number with colons' do
|
62
|
-
Phony.normalize('1.906.387.1698').should eql '19063871698'
|
63
|
-
end
|
64
|
-
it 'should normalize a number with erroneous zero inside' do
|
65
|
-
Phony.normalize('+410443643533').should eql '41443643533'
|
66
|
-
end
|
67
|
-
it 'should not normalize a number with a correct zero inside' do
|
68
|
-
Phony.normalize('+390909709511').should eql '390909709511'
|
69
|
-
end
|
70
|
-
|
71
|
-
it "handles completely crazy 'numbers'" do
|
72
|
-
Phony.normalize('Hello, I am Cora, the 41th parrot, and 44 is my 364 times 35 funky number. 32.').should eql '41443643532'
|
73
|
-
end
|
74
|
-
|
75
|
-
context 'special trunk prefixes are not handled' do
|
76
|
-
it 'normalizes Hungary' do
|
77
|
-
Phony.normalize('36 0630245506').should eql '360630245506'
|
78
|
-
end
|
79
|
-
it 'normalizes Russia' do
|
80
|
-
Phony.normalize('7 8 342 1234567').should eql '783421234567'
|
81
|
-
end
|
82
|
-
it 'normalizes Lithuania' do
|
83
|
-
Phony.normalize('370 8 5 1234567').should eql '370851234567'
|
84
|
-
end
|
85
|
-
it 'normalizes Belarus' do
|
86
|
-
Phony.normalize('375 152450911').should eql '375152450911'
|
87
|
-
end
|
88
|
-
end
|
89
|
-
|
90
|
-
describe 'exceptions' do
|
91
|
-
it 'raises on nil' do
|
92
|
-
expect {
|
93
|
-
Phony.normalize nil
|
94
|
-
}.to raise_error(ArgumentError, 'Phone number cannot be nil. Use e.g. number && Phony.normalize(number).')
|
95
|
-
end
|
96
|
-
it 'raises if number starts with reserved zero code' do
|
97
|
-
expect do
|
98
|
-
Phony.normalize '+00 00 00 00 01'
|
99
|
-
end.to raise_error(Phony::NormalizationError, 'Phony could not normalize the given number. Is it a phone number?')
|
100
|
-
end
|
101
|
-
it 'raises a nice error message' do
|
102
|
-
expect do
|
103
|
-
Phony.normalize 'test'
|
104
|
-
end.to raise_error(Phony::NormalizationError, 'Phony could not normalize the given number. Is it a phone number?')
|
105
|
-
end
|
106
|
-
end
|
107
|
-
|
108
|
-
describe 'country-based' do
|
109
|
-
it 'normalizes the US correctly' do
|
110
|
-
Phony["1"].normalize("555 1234567890").should eql '5551234567890'
|
111
|
-
Phony["1"].normalize("+1 555 1234567890").should eql '5551234567890'
|
112
|
-
Phony["1"].normalize("+1 (0) 555 1234567890").should eql '5551234567890'
|
113
|
-
end
|
114
|
-
it 'normalizes Japan correctly' do
|
115
|
-
Phony["81"].normalize("80 1234 5634").should eql '8012345634'
|
116
|
-
Phony["81"].normalize("Hello 80 1234 5634").should eql '8012345634'
|
117
|
-
end
|
118
|
-
end
|
119
|
-
end
|
120
|
-
|
121
|
-
end
|
@@ -1,34 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
#
|
3
|
-
require 'spec_helper'
|
4
|
-
|
5
|
-
describe Phony::Vanity do
|
6
|
-
|
7
|
-
describe "vanity?" do
|
8
|
-
it 'recognizes a vanity number' do
|
9
|
-
Phony::Vanity.vanity?('800HELLOWORLD').should == true
|
10
|
-
end
|
11
|
-
it 'recognizes a non vanity number' do
|
12
|
-
Phony::Vanity.vanity?('444443322').should == false
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
describe "replace" do
|
17
|
-
it 'replaces all characters' do
|
18
|
-
Phony::Vanity.replace('0123456789abcdefghijklmnopqrstuvwxyz').should == '012345678922233344455566677778889999'
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
describe 'mapping' do
|
23
|
-
it 'caches' do
|
24
|
-
Phony::Vanity.mapping.should equal(Phony::Vanity.mapping)
|
25
|
-
end
|
26
|
-
it 'returns the right thing' do
|
27
|
-
Phony::Vanity.mapping.should == [
|
28
|
-
'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.freeze,
|
29
|
-
'2223334445556667777888999922233344455566677778889999'.freeze
|
30
|
-
]
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
end
|
data/spec/lib/phony_spec.rb
DELETED
@@ -1,122 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
#
|
3
|
-
require 'spec_helper'
|
4
|
-
|
5
|
-
describe Phony do
|
6
|
-
|
7
|
-
describe 'regression' do
|
8
|
-
it 'best effort #152' do
|
9
|
-
described_class.split('39694805123').should eql ['39', '694805123', []]
|
10
|
-
described_class.format('39694805123').should eql '+39 694805123 '
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
|
-
describe 'OO interface' do
|
15
|
-
describe '[]' do
|
16
|
-
it '' do
|
17
|
-
us = described_class['1']
|
18
|
-
us.plausible?('4159224711').should be_true
|
19
|
-
us.normalize('4159224711').should eql '4159224711'
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
context 'minimal cases' do
|
25
|
-
context 'splitting' do
|
26
|
-
describe 'exceptions' do
|
27
|
-
it 'should raise on split nil' do
|
28
|
-
expect {
|
29
|
-
Phony.split nil
|
30
|
-
}.to raise_error(ArgumentError, 'Phone number cannot be nil. Use e.g. number && Phony.split(number).')
|
31
|
-
end
|
32
|
-
end
|
33
|
-
it 'handles completely missing numbers well enough' do
|
34
|
-
Phony.split('4144').should eql ['41', '44', '']
|
35
|
-
end
|
36
|
-
it 'handles a missing number part' do
|
37
|
-
Phony.split('4144364').should eql ['41', '44', '364']
|
38
|
-
end
|
39
|
-
it 'handles a missing number part' do
|
40
|
-
Phony.split('414436435').should eql ['41', '44', '364', '35']
|
41
|
-
end
|
42
|
-
end
|
43
|
-
context 'formatting' do
|
44
|
-
it 'handles completely missing numbers well enough' do
|
45
|
-
Phony.format('4144').should eql '+41 44 '
|
46
|
-
end
|
47
|
-
it 'handles a missing number part' do
|
48
|
-
Phony.format('4144364').should eql '+41 44 364'
|
49
|
-
end
|
50
|
-
it 'handles a missing number part' do
|
51
|
-
Phony.format('414436435').should eql '+41 44 364 35'
|
52
|
-
end
|
53
|
-
end
|
54
|
-
context "'unsupported' countries" do
|
55
|
-
it 'handles formatting' do
|
56
|
-
Phony.format('88132155605220').should eql '+881 32155605220'
|
57
|
-
end
|
58
|
-
it 'handles normalizing' do
|
59
|
-
Phony.normalize('+881-321 5560 5220').should eql '88132155605220'
|
60
|
-
end
|
61
|
-
end
|
62
|
-
end
|
63
|
-
|
64
|
-
context 'speed' do
|
65
|
-
before(:each) do
|
66
|
-
@phone_numbers = [
|
67
|
-
'41443643532',
|
68
|
-
'18091231234',
|
69
|
-
'43198110',
|
70
|
-
'33142278186',
|
71
|
-
'4233841148'
|
72
|
-
]
|
73
|
-
end
|
74
|
-
describe 'split' do
|
75
|
-
it 'is fast' do
|
76
|
-
number = @phone_numbers.first
|
77
|
-
performance_of { Phony.split(number) }.should < 0.00005
|
78
|
-
end
|
79
|
-
it 'is fast' do
|
80
|
-
performance_of { @phone_numbers.each { |number| Phony.split(number) } }.should < 0.00015
|
81
|
-
end
|
82
|
-
end
|
83
|
-
describe 'normalize' do
|
84
|
-
it 'is fast' do
|
85
|
-
number = @phone_numbers.first
|
86
|
-
performance_of { Phony.normalize(number) }.should < 0.0001
|
87
|
-
end
|
88
|
-
it 'is fast' do
|
89
|
-
performance_of { @phone_numbers.each { |number| Phony.normalize(number) } }.should < 0.00016
|
90
|
-
end
|
91
|
-
end
|
92
|
-
describe 'format' do
|
93
|
-
it 'is fast' do
|
94
|
-
number = @phone_numbers.first
|
95
|
-
performance_of { Phony.format(number) }.should < 0.000075
|
96
|
-
end
|
97
|
-
it 'is fast' do
|
98
|
-
performance_of { @phone_numbers.each { |number| Phony.format(number) } }.should < 0.00016
|
99
|
-
end
|
100
|
-
end
|
101
|
-
end
|
102
|
-
|
103
|
-
describe 'vanity' do
|
104
|
-
describe 'vanity_number?' do
|
105
|
-
it {Phony.vanity?('41800 WEGGLI').should be_true}
|
106
|
-
it {Phony.vanity?('41800WEGGLI').should be_true}
|
107
|
-
it {Phony.vanity?('41848 SUCCESSMATCH').should be_true}
|
108
|
-
it {Phony.vanity?('4180 NO NO NO').should be_false}
|
109
|
-
it {Phony.vanity?('41900 KURZ').should be_false}
|
110
|
-
it {Phony.vanity?('41 44 364 35 32').should be_false}
|
111
|
-
end
|
112
|
-
|
113
|
-
describe 'vanity_to_number' do
|
114
|
-
it {Phony.vanity_to_number('41800WEGGLI').should eql '41800934454'}
|
115
|
-
it {Phony.vanity_to_number('41800weggli').should eql '41800934454'}
|
116
|
-
# it {Phony.vanity_to_number('41800SUCCESSMATCH').should eql '41800782237'} # Cut off according to the swiss norms.
|
117
|
-
it {Phony.vanity_to_number('41800SUCCESSMATCH').should eql '41800782237762824'} # Allow for call-through numbers (>= 1.6.0)
|
118
|
-
it {Phony.vanity_to_number('4180BLA').should eql '4180252'} # Does not check for validity of number.
|
119
|
-
end
|
120
|
-
end
|
121
|
-
|
122
|
-
end
|