phony 1.0.0
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.
- data/README.textile +111 -0
- data/lib/ndc/austria.rb +69 -0
- data/lib/ndc/fixed_size.rb +113 -0
- data/lib/ndc/germany.rb +157 -0
- data/lib/ndc/prefix.rb +67 -0
- data/lib/ndc/splitter.rb +81 -0
- data/lib/phony.rb +496 -0
- data/spec/lib/ndc/austria_spec.rb +40 -0
- data/spec/lib/ndc/fixed_size_spec.rb +65 -0
- data/spec/lib/ndc/germany_spec.rb +40 -0
- data/spec/lib/ndc/prefix_spec.rb +25 -0
- data/spec/lib/ndc/splitter_spec.rb +59 -0
- data/spec/lib/phony_spec.rb +380 -0
- metadata +82 -0
@@ -0,0 +1,40 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Phony::NDC::Austria do
|
4
|
+
|
5
|
+
attr_reader :splitter
|
6
|
+
before(:each) do
|
7
|
+
@splitter = Phony::NDC::Austria
|
8
|
+
end
|
9
|
+
|
10
|
+
describe "split" do
|
11
|
+
it "should handle Vienna" do
|
12
|
+
splitter.split('198110').should == ['1', '98110']
|
13
|
+
end
|
14
|
+
it "should handle some mobile services" do
|
15
|
+
splitter.split('66914093902').should == ['669', '14093902']
|
16
|
+
end
|
17
|
+
it "should handle Graz" do
|
18
|
+
splitter.split('3161234567891').should == ['316', '1234567891']
|
19
|
+
end
|
20
|
+
it "should handle Rohrau" do
|
21
|
+
splitter.split('2164123456789').should == ['2164', '123456789']
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
describe "formatted" do
|
26
|
+
it "should format Vienna" do
|
27
|
+
splitter.formatted('198110').should == '1 98110'
|
28
|
+
end
|
29
|
+
it "should format some mobile services" do
|
30
|
+
splitter.formatted('671234567891').should == '67 1234567891'
|
31
|
+
end
|
32
|
+
it "should format Graz" do
|
33
|
+
splitter.formatted('316123456789').should == '316 123456789'
|
34
|
+
end
|
35
|
+
it "should format Rohrau" do
|
36
|
+
splitter.formatted('216412345678').should == '2164 12345678'
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
@@ -0,0 +1,65 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Phony::NDC::FixedSize do
|
4
|
+
|
5
|
+
attr_reader :splitter
|
6
|
+
|
7
|
+
# describe 'size 0' do
|
8
|
+
# before(:each) do
|
9
|
+
# @splitter = Phony::NDC.fixed 0
|
10
|
+
# end
|
11
|
+
#
|
12
|
+
# describe "formatted" do
|
13
|
+
# it "should format correctly" do
|
14
|
+
# # TODO not perfect, but does this case make sense?
|
15
|
+
# splitter.formatted('1234567').should == '123 45 67 '
|
16
|
+
# end
|
17
|
+
# end
|
18
|
+
# end
|
19
|
+
|
20
|
+
describe "size 1" do
|
21
|
+
before(:each) do
|
22
|
+
@splitter = Phony::NDC.fixed 1
|
23
|
+
end
|
24
|
+
|
25
|
+
describe "formatted" do
|
26
|
+
it "should format correctly" do
|
27
|
+
splitter.formatted('12345678').should == '1 234 56 78'
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
describe "size 2" do
|
32
|
+
before(:each) do
|
33
|
+
@splitter = Phony::NDC.fixed 2
|
34
|
+
end
|
35
|
+
|
36
|
+
describe "formatted" do
|
37
|
+
it "should format correctly" do
|
38
|
+
splitter.formatted('123456789').should == '12 345 67 89'
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
describe "size 3" do
|
43
|
+
before(:each) do
|
44
|
+
@splitter = Phony::NDC.fixed 3
|
45
|
+
end
|
46
|
+
|
47
|
+
describe "formatted" do
|
48
|
+
it "should format correctly" do
|
49
|
+
splitter.formatted('1234567890').should == '123 456 78 90'
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
describe "size 4" do
|
54
|
+
before(:each) do
|
55
|
+
@splitter = Phony::NDC.fixed 4
|
56
|
+
end
|
57
|
+
|
58
|
+
describe "formatted" do
|
59
|
+
it "should format correctly" do
|
60
|
+
splitter.formatted('12345678901').should == '1234 567 89 01'
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Phony::NDC::Germany do
|
4
|
+
|
5
|
+
attr_reader :splitter
|
6
|
+
before(:each) do
|
7
|
+
@splitter = Phony::NDC::Germany
|
8
|
+
end
|
9
|
+
|
10
|
+
describe "split" do
|
11
|
+
it "should handle Berlin" do
|
12
|
+
splitter.split('3038625454').should == ['30', '386', '25454']
|
13
|
+
end
|
14
|
+
it "should handle Cologne" do
|
15
|
+
splitter.split('22137683323').should == ['221', '376', '83323']
|
16
|
+
end
|
17
|
+
it "should handle Freiburg im Breisgau" do
|
18
|
+
splitter.split('7614767676').should == ['761', '476', '7676']
|
19
|
+
end
|
20
|
+
it "should handle Nettetal-Lobberich" do
|
21
|
+
splitter.split('21535100').should == ['2153', '510', '0']
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
describe "formatted" do
|
26
|
+
it "should format Berlin" do
|
27
|
+
splitter.formatted('3038625454').should == '30 386 25454'
|
28
|
+
end
|
29
|
+
it "should format Cologne" do
|
30
|
+
splitter.formatted('22137683323').should == '221 376 83323'
|
31
|
+
end
|
32
|
+
it "should format Freiburg im Breisgau" do
|
33
|
+
splitter.formatted('7614767676').should == '761 476 7676'
|
34
|
+
end
|
35
|
+
it "should format Nettetal-Lobberich" do
|
36
|
+
splitter.formatted('21535100').should == '2153 510 0'
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Phony::NDC::Prefix do
|
4
|
+
|
5
|
+
attr_reader :prefix
|
6
|
+
before(:each) do
|
7
|
+
@prefix = Phony::NDC::Prefix
|
8
|
+
end
|
9
|
+
|
10
|
+
describe "optimize" do
|
11
|
+
it "should convert an array into a hash" do
|
12
|
+
prefix.optimize(Array.new).should be_kind_of(Hash)
|
13
|
+
end
|
14
|
+
it "should convert an empty array into an empty thing" do
|
15
|
+
prefix.optimize([]).should be_empty
|
16
|
+
end
|
17
|
+
it "should convert an empty array into an empty hash" do
|
18
|
+
prefix.optimize([]).should == {}
|
19
|
+
end
|
20
|
+
it "should convert a various string length array into a hash(size=>array(entries))" do
|
21
|
+
prefix.optimize(['1', '22', '333', '4444']).should == { 1 => ['1'], 2 => ['22'], 3 => ['333'], 4 => ['4444'] }
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
@@ -0,0 +1,59 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Phony::NDC::Splitter do
|
4
|
+
|
5
|
+
attr_reader :splitter
|
6
|
+
|
7
|
+
describe "DSL" do
|
8
|
+
before(:each) do
|
9
|
+
@splitter = Phony::NDC::Splitter
|
10
|
+
end
|
11
|
+
describe "local" do
|
12
|
+
it "should set @split_sizes" do
|
13
|
+
splitter.local 3,2,2
|
14
|
+
splitter.instance_variable_get(:@split_sizes).should == [3,2,2]
|
15
|
+
end
|
16
|
+
it "should call format" do
|
17
|
+
splitter.should_receive(:format).once.with('%s%s%s%s%s')
|
18
|
+
splitter.local 3,2,2
|
19
|
+
end
|
20
|
+
end
|
21
|
+
describe "format" do
|
22
|
+
it "should set @format" do
|
23
|
+
splitter.format 'any format'
|
24
|
+
splitter.instance_variable_get(:@format).should == 'any format'
|
25
|
+
end
|
26
|
+
it "should set @format_with_ndc" do
|
27
|
+
splitter.format 'any format'
|
28
|
+
splitter.instance_variable_get(:@format_with_ndc).should == '%s%sany format'
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
describe "split_local" do
|
34
|
+
describe "with local" do
|
35
|
+
before(:each) do
|
36
|
+
@splitter = Phony::NDC.fixed(2, :local => [3, 2, 2])
|
37
|
+
end
|
38
|
+
it "should split it according to the local format" do
|
39
|
+
splitter.split_local('3643533').should == ['364', '35', '33']
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
describe 'formatted_with_spaces' do
|
45
|
+
before(:each) do
|
46
|
+
@splitter = Phony::NDC.fixed(2, :local => [3, 2, 2])
|
47
|
+
end
|
48
|
+
it 'should format with spaces' do
|
49
|
+
splitter.formatted_with_spaces('%s%s%s%s%s', ['364', '35', '33'], ' ').should == '364 35 33'
|
50
|
+
end
|
51
|
+
it 'should format with spaces' do
|
52
|
+
splitter.formatted_with_spaces('%s%s%s%s%s', ['364', '35', '33'], '').should == '3643533'
|
53
|
+
end
|
54
|
+
it 'should format with dashes' do
|
55
|
+
splitter.formatted_with_spaces('%s%s%s%s%s', ['364', '35', '33'], :-).should == '364-35-33'
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
end
|
@@ -0,0 +1,380 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
#
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
describe Phony do
|
6
|
+
|
7
|
+
describe "normalize" do
|
8
|
+
describe "some examples" do
|
9
|
+
it "should normalize an already normalized number" do
|
10
|
+
Phony.normalize('41443643533').should == '41443643533'
|
11
|
+
end
|
12
|
+
it "should normalize a formatted number" do
|
13
|
+
Phony.normalize('+41 44 364 35 33').should == '41443643533'
|
14
|
+
end
|
15
|
+
it "should normalize a formatted number" do
|
16
|
+
Phony.normalize('+41 44 364 35 33').should == '41443643533'
|
17
|
+
end
|
18
|
+
it "should normalize a special service number" do
|
19
|
+
Phony.normalize('+41 800 11 22 33').should == '41800112233'
|
20
|
+
end
|
21
|
+
it "should remove characters from the number" do
|
22
|
+
Phony.normalize('John: +41 44 364 35 33').should == '41443643533'
|
23
|
+
end
|
24
|
+
it "should normalize one of these crazy american numbers" do
|
25
|
+
Phony.normalize('1 (703) 451-5115').should == '17034515115'
|
26
|
+
end
|
27
|
+
it "should normalize another one of these crazy american numbers" do
|
28
|
+
Phony.normalize('1-888-407-4747').should == '18884074747'
|
29
|
+
end
|
30
|
+
it "should normalize a number with colons" do
|
31
|
+
Phony.normalize('1.906.387.1698').should == '19063871698'
|
32
|
+
end
|
33
|
+
it "should normalize a number with optional ndc" do
|
34
|
+
Phony.normalize('+41 (044) 364 35 33').should == '41443643533'
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
describe "remove_relative_zeros" do
|
40
|
+
it "should remove an ndc zero from an almost normalized number and return it" do
|
41
|
+
in_the Phony do
|
42
|
+
remove_relative_zeros!('410443643533').should == '41443643533'
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
describe "formatted_cc_ndc" do
|
48
|
+
describe "international" do
|
49
|
+
it "should return an internationally formatted cc-ndc combo" do
|
50
|
+
in_the Phony do
|
51
|
+
formatted_cc_ndc('41', '44', nil).should == '+41 44 '
|
52
|
+
end
|
53
|
+
end
|
54
|
+
it "should return an internationally formatted cc-ndc combo" do
|
55
|
+
in_the Phony do
|
56
|
+
formatted_cc_ndc('41', '44', :international_absolute).should == '+41 44 '
|
57
|
+
end
|
58
|
+
end
|
59
|
+
it "should return an internationally formatted cc-ndc combo" do
|
60
|
+
in_the Phony do
|
61
|
+
formatted_cc_ndc('41', '44', :international).should == '+41 44 '
|
62
|
+
end
|
63
|
+
end
|
64
|
+
it "should return an internationally formatted cc-ndc combo" do
|
65
|
+
in_the Phony do
|
66
|
+
formatted_cc_ndc('41', '44', :+).should == '+41 44 '
|
67
|
+
end
|
68
|
+
end
|
69
|
+
it "should return an relative internationally formatted cc-ndc combo" do
|
70
|
+
in_the Phony do
|
71
|
+
formatted_cc_ndc('41', '44', :international_relative).should == '0041 44 '
|
72
|
+
end
|
73
|
+
end
|
74
|
+
it "should return an internationally formatted cc-ndc combo (for special service number)" do
|
75
|
+
in_the Phony do
|
76
|
+
formatted_cc_ndc('41', '800', :international_absolute).should == '+41 800 '
|
77
|
+
end
|
78
|
+
end
|
79
|
+
context 'with a different space character' do
|
80
|
+
it "should return an internationally formatted cc-ndc combo (for special service number), with special space" do
|
81
|
+
in_the Phony do
|
82
|
+
formatted_cc_ndc('41', '800', :international_absolute, :-).should == '+41-800-'
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
86
|
+
context 'if the ndc is blank' do
|
87
|
+
it "should have only one space at the end (not two) / international" do
|
88
|
+
in_the Phony do
|
89
|
+
formatted_cc_ndc('423', '', :international).should == '+423 '
|
90
|
+
end
|
91
|
+
end
|
92
|
+
it "should have only one space at the end (not two) / international relative" do
|
93
|
+
in_the Phony do
|
94
|
+
formatted_cc_ndc('423', '', :international_relative).should == '00423 '
|
95
|
+
end
|
96
|
+
end
|
97
|
+
it "should have only one space at the end (not two) / national" do
|
98
|
+
in_the Phony do
|
99
|
+
formatted_cc_ndc('423', '', :national).should == ''
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
end
|
104
|
+
end
|
105
|
+
describe "national" do
|
106
|
+
it "should return a nationally formatted cc-ndc combo" do
|
107
|
+
in_the Phony do
|
108
|
+
formatted_cc_ndc('41', '44', :national).should == '044 '
|
109
|
+
end
|
110
|
+
end
|
111
|
+
it "should return a nationally formatted cc-ndc combo (for special service number)" do
|
112
|
+
in_the Phony do
|
113
|
+
formatted_cc_ndc('41', '800', :national).should == '0800 '
|
114
|
+
end
|
115
|
+
end
|
116
|
+
end
|
117
|
+
describe "local" do
|
118
|
+
it "should return a locally formatted cc-ndc combo" do
|
119
|
+
in_the Phony do
|
120
|
+
formatted_cc_ndc('41', '44', :local).should == ''
|
121
|
+
end
|
122
|
+
end
|
123
|
+
end
|
124
|
+
end
|
125
|
+
|
126
|
+
describe "split" do
|
127
|
+
it "should handle austrian numbers" do
|
128
|
+
Phony.split('43198110').should == ['43', '1', '98110']
|
129
|
+
end
|
130
|
+
it "should handle french numbers" do
|
131
|
+
Phony.split('33112345678').should == ['33', '1', '12','34','56','78']
|
132
|
+
end
|
133
|
+
it "should handle german numbers" do
|
134
|
+
Phony.split('4976112345').should == ['49', '761', '123', '45']
|
135
|
+
end
|
136
|
+
it "should handle italian numbers opinionatedly" do
|
137
|
+
Phony.split('3928061371').should == ['39', '280', '613', '71']
|
138
|
+
end
|
139
|
+
it "should handle swiss numbers" do
|
140
|
+
Phony.split('41443643532').should == ['41', '44', '364', '35', '32']
|
141
|
+
end
|
142
|
+
it "should handle US numbers" do
|
143
|
+
Phony.split('15551115511').should == ['1', '555', '111', '5511']
|
144
|
+
end
|
145
|
+
it "should handle new zealand numbers" do
|
146
|
+
Phony.split('6491234567').should == ['64', '9', '123', '4567']
|
147
|
+
end
|
148
|
+
it "should handle swiss special services numbers" do
|
149
|
+
Phony.split('41800334455').should == ['41', '800', '33', '44', '55']
|
150
|
+
end
|
151
|
+
end
|
152
|
+
|
153
|
+
describe "split_cc" do
|
154
|
+
it "should handle partial numbers" do
|
155
|
+
Phony.split_cc('4').should == ['', '']
|
156
|
+
end
|
157
|
+
it "should handle partial numbers" do
|
158
|
+
Phony.split_cc('43').should == ['43', '']
|
159
|
+
end
|
160
|
+
it "should handle partial numbers" do
|
161
|
+
Phony.split_cc('431').should == ['43', '1']
|
162
|
+
end
|
163
|
+
it "should handle partial numbers" do
|
164
|
+
Phony.split_cc('4319').should == ['43', '19']
|
165
|
+
end
|
166
|
+
it "should handle partial numbers" do
|
167
|
+
Phony.split_cc('43198').should == ['43', '198']
|
168
|
+
end
|
169
|
+
it "should handle partial numbers" do
|
170
|
+
Phony.split_cc('431981').should == ['43', '1981']
|
171
|
+
end
|
172
|
+
it "should handle partial numbers" do
|
173
|
+
Phony.split_cc('4319811').should == ['43', '19811']
|
174
|
+
end
|
175
|
+
|
176
|
+
it "should handle austrian numbers" do
|
177
|
+
Phony.split_cc('43198110').should == ['43', '198110']
|
178
|
+
end
|
179
|
+
it "should handle french numbers" do
|
180
|
+
Phony.split_cc('33112345678').should == ['33', '112345678']
|
181
|
+
end
|
182
|
+
it "should handle german numbers" do
|
183
|
+
Phony.split_cc('4976112345').should == ['49', '76112345']
|
184
|
+
end
|
185
|
+
it "should handle italian numbers opinionatedly" do
|
186
|
+
Phony.split_cc('3928061371').should == ['39', '28061371']
|
187
|
+
end
|
188
|
+
it "should handle swiss numbers" do
|
189
|
+
Phony.split_cc('41443643532').should == ['41', '443643532']
|
190
|
+
end
|
191
|
+
it "should handle swiss special services numbers" do
|
192
|
+
Phony.split_cc('41800223344').should == ['41', '800223344']
|
193
|
+
end
|
194
|
+
it "should handle US numbers" do
|
195
|
+
Phony.split_cc('15551115511').should == ['1', '5551115511']
|
196
|
+
end
|
197
|
+
it "should handle new zealand numbers" do
|
198
|
+
Phony.split_cc('6491234567').should == ['64', '91234567']
|
199
|
+
end
|
200
|
+
it 'should handle Liechtenstein' do
|
201
|
+
Phony.split_cc('4233841148').should == ['423', '3841148']
|
202
|
+
end
|
203
|
+
end
|
204
|
+
|
205
|
+
describe "split_cc_ndc" do
|
206
|
+
it "should handle partial numbers" do
|
207
|
+
Phony.split_cc_ndc('4').should == ['', '', '']
|
208
|
+
end
|
209
|
+
it "should handle partial numbers" do
|
210
|
+
Phony.split_cc_ndc('43').should == ['43', '', '']
|
211
|
+
end
|
212
|
+
it "should handle partial numbers" do
|
213
|
+
Phony.split_cc_ndc('431').should == ['43', '1', '']
|
214
|
+
end
|
215
|
+
it "should handle partial numbers" do
|
216
|
+
Phony.split_cc_ndc('4319').should == ['43', '1', '9']
|
217
|
+
end
|
218
|
+
it "should handle partial numbers" do
|
219
|
+
Phony.split_cc_ndc('43198').should == ['43', '1', '98']
|
220
|
+
end
|
221
|
+
it "should handle partial numbers" do
|
222
|
+
Phony.split_cc_ndc('431981').should == ['43', '1', '981']
|
223
|
+
end
|
224
|
+
it "should handle partial numbers" do
|
225
|
+
Phony.split_cc_ndc('4319811').should == ['43', '1', '9811']
|
226
|
+
end
|
227
|
+
|
228
|
+
it "should handle austrian numbers" do
|
229
|
+
Phony.split_cc_ndc('43198110').should == ['43', '1', '98110']
|
230
|
+
end
|
231
|
+
it "should handle french numbers" do
|
232
|
+
Phony.split_cc_ndc('33112345678').should == ['33', '1', '12345678']
|
233
|
+
end
|
234
|
+
it "should handle german numbers" do
|
235
|
+
Phony.split_cc_ndc('4976112345').should == ['49', '761', '12345']
|
236
|
+
end
|
237
|
+
it "should handle italian numbers opinionatedly" do
|
238
|
+
Phony.split_cc_ndc('3928061371').should == ['39', '280', '61371']
|
239
|
+
end
|
240
|
+
it "should handle swiss numbers" do
|
241
|
+
Phony.split_cc_ndc('41443643532').should == ['41', '44', '3643532']
|
242
|
+
end
|
243
|
+
it "should handle swiss special services numbers" do
|
244
|
+
Phony.split_cc_ndc('41800112233').should == ['41', '800', '112233']
|
245
|
+
end
|
246
|
+
it "should handle US numbers" do
|
247
|
+
Phony.split_cc_ndc('15551115511').should == ['1', '555', '1115511']
|
248
|
+
end
|
249
|
+
it "should handle new zealand numbers" do
|
250
|
+
Phony.split_cc_ndc('6491234567').should == ['64', '9', '1234567']
|
251
|
+
end
|
252
|
+
end
|
253
|
+
|
254
|
+
describe "formatted" do
|
255
|
+
describe "default" do
|
256
|
+
it "should format swiss numbers" do
|
257
|
+
Phony.formatted('41443643532').should == '+41 44 364 35 32'
|
258
|
+
end
|
259
|
+
it "should format swiss special services numbers" do
|
260
|
+
Phony.formatted('41800112233').should == '+41 800 11 22 33'
|
261
|
+
end
|
262
|
+
it "should format austrian numbers" do
|
263
|
+
Phony.formatted('43198110').should == '+43 1 98110'
|
264
|
+
end
|
265
|
+
it "should format american numbers" do
|
266
|
+
Phony.formatted('18705551122').should == '+1 870 555 1122'
|
267
|
+
end
|
268
|
+
end
|
269
|
+
describe "international" do
|
270
|
+
it "should format north american numbers" do
|
271
|
+
Phony.formatted('18091231234', :format => :international).should == '+1 809 123 1234'
|
272
|
+
end
|
273
|
+
it "should format austrian numbers" do
|
274
|
+
Phony.formatted('43198110', :format => :international).should == '+43 1 98110'
|
275
|
+
end
|
276
|
+
it "should format austrian numbers" do
|
277
|
+
Phony.formatted('43198110', :format => :international_absolute).should == '+43 1 98110'
|
278
|
+
end
|
279
|
+
it "should format french numbers" do
|
280
|
+
Phony.formatted('33142278186', :format => :+).should == '+33 1 42 27 81 86'
|
281
|
+
end
|
282
|
+
it "should format austrian numbers" do
|
283
|
+
Phony.formatted('43198110', :format => :international_relative).should == '0043 1 98110'
|
284
|
+
end
|
285
|
+
it 'should format liechtensteiner numbers' do
|
286
|
+
Phony.formatted('4233841148', :format => :international_relative).should == '00423 384 11 48'
|
287
|
+
end
|
288
|
+
context 'with no spaces' do
|
289
|
+
it "should format north american numbers" do
|
290
|
+
Phony.formatted('18091231234', :format => :international, :spaces => '').should == '+18091231234'
|
291
|
+
end
|
292
|
+
it "should format austrian numbers" do
|
293
|
+
Phony.formatted('43198110', :format => :international, :spaces => '').should == '+43198110'
|
294
|
+
end
|
295
|
+
it "should format austrian numbers" do
|
296
|
+
Phony.formatted('43198110', :format => :international_absolute, :spaces => '').should == '+43198110'
|
297
|
+
end
|
298
|
+
it "should format french numbers" do
|
299
|
+
Phony.formatted('33142278186', :format => :+, :spaces => '').should == '+33142278186'
|
300
|
+
end
|
301
|
+
it "should format austrian numbers" do
|
302
|
+
Phony.formatted('43198110', :format => :international_relative, :spaces => '').should == '0043198110'
|
303
|
+
end
|
304
|
+
it 'should format liechtensteiner numbers' do
|
305
|
+
Phony.formatted('4233841148', :format => :international_relative, :spaces => '').should == '004233841148'
|
306
|
+
end
|
307
|
+
end
|
308
|
+
context 'with special spaces' do
|
309
|
+
it "should format swiss numbers" do
|
310
|
+
Phony.formatted('41443643532', :format => :international).should == '+41 44 364 35 32'
|
311
|
+
end
|
312
|
+
it "should format north american numbers" do
|
313
|
+
Phony.formatted('18091231234', :format => :international, :spaces => :-).should == '+1-809-123-1234'
|
314
|
+
end
|
315
|
+
it "should format austrian numbers" do
|
316
|
+
Phony.formatted('43198110', :format => :international, :spaces => :-).should == '+43-1-98110'
|
317
|
+
end
|
318
|
+
it "should format austrian numbers" do
|
319
|
+
Phony.formatted('43198110', :format => :international_absolute, :spaces => :-).should == '+43-1-98110'
|
320
|
+
end
|
321
|
+
it "should format french numbers" do
|
322
|
+
Phony.formatted('33142278186', :format => :+, :spaces => :-).should == '+33-1-42-27-81-86'
|
323
|
+
end
|
324
|
+
it "should format austrian numbers" do
|
325
|
+
Phony.formatted('43198110', :format => :international_relative, :spaces => :-).should == '0043-1-98110'
|
326
|
+
end
|
327
|
+
it 'should format liechtensteiner numbers' do
|
328
|
+
Phony.formatted('4233841148', :format => :international_relative, :spaces => :-).should == '00423-384-11-48'
|
329
|
+
end
|
330
|
+
end
|
331
|
+
end
|
332
|
+
describe "national" do
|
333
|
+
it "should format swiss numbers" do
|
334
|
+
Phony.formatted('41443643532', :format => :national).should == '044 364 35 32'
|
335
|
+
end
|
336
|
+
it "should format swiss special services numbers" do
|
337
|
+
Phony.formatted('41800112233', :format => :national).should == '0800 11 22 33'
|
338
|
+
end
|
339
|
+
it "should format austrian numbers" do
|
340
|
+
Phony.formatted('43198110', :format => :national).should == '01 98110'
|
341
|
+
end
|
342
|
+
end
|
343
|
+
describe "local" do
|
344
|
+
it "should format swiss numbers" do
|
345
|
+
Phony.formatted('41443643532', :format => :local).should == '364 35 32'
|
346
|
+
end
|
347
|
+
it "should format german numbers" do
|
348
|
+
Phony.formatted('493038625454', :format => :local).should == '386 25454'
|
349
|
+
end
|
350
|
+
end
|
351
|
+
end
|
352
|
+
|
353
|
+
describe 'regarding vanity' do
|
354
|
+
describe 'vanity_number?' do
|
355
|
+
it {Phony.vanity_number?('0800 WEGGLI').should be_true}
|
356
|
+
it {Phony.vanity_number?('0800WEGGLI').should be_true}
|
357
|
+
it {Phony.vanity_number?('0848 SUCCESSMATCH').should be_true}
|
358
|
+
it {Phony.vanity_number?('080 NO NO NO').should be_false}
|
359
|
+
it {Phony.vanity_number?('0900 KURZ').should be_false}
|
360
|
+
end
|
361
|
+
|
362
|
+
describe 'vanity_to_number' do
|
363
|
+
before(:each) do
|
364
|
+
@number = stub(:number)
|
365
|
+
end
|
366
|
+
it "should delegate to Phony::Vanity.replace" do
|
367
|
+
Phony::Vanity.should_receive(:replace).with(@number)
|
368
|
+
Phony.vanity_to_number @number
|
369
|
+
end
|
370
|
+
end
|
371
|
+
|
372
|
+
describe 'replace_vanity' do
|
373
|
+
it {Phony::Vanity.replace('0800 WEGGLI').should == '0800 934454'}
|
374
|
+
it {Phony::Vanity.replace('0800weggli').should == '0800934454'}
|
375
|
+
it {Phony::Vanity.replace('0800SUCCESSMATCH').should == '0800782237762824'}
|
376
|
+
it {Phony::Vanity.replace('080BLA').should == '080252'} #replace_vanity does not check for validity of number
|
377
|
+
end
|
378
|
+
end
|
379
|
+
|
380
|
+
end
|