phony_rails 0.12.10 → 0.12.11

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 894a8528687a58ddd856bcf0225701de847e88db
4
- data.tar.gz: c87a623b7bf8c990bfd6d1dd89d1e8a4df3349a5
3
+ metadata.gz: fcd21433ed37b73d7a13e4a968426fe495824be7
4
+ data.tar.gz: c6906d6e411bbae10ecdacbe4ba6f571f0a11dae
5
5
  SHA512:
6
- metadata.gz: 128e21023c5b47ccb822d8153f0b188b8196e0fb9ec6f3e989207e64be8f2ddcf43206f9c3347a8f6b307827fad4cfd15995f4ba4b89b08575e2eb29fe055297
7
- data.tar.gz: 44f28ddfb2efacae5d67e61f6a08bc9bd14a5d491b493472b801f4fdda875b887b19bb7e3f5bc9d7feb57d974fb197858e22fc0dba6339b04fa0cd14cde8d7b1
6
+ metadata.gz: 67e23bae153edccc3e21d6392a0d9d38394646ba3008701db2565d6c77842a0ad5156802a173b9d34eeb5a4408d5f7c220ff0c0ecb54f3516cf94f4b685ae2c9
7
+ data.tar.gz: bdb52a58cf910d0918f5b088178fea408fe8915affe747cbdc67e5fa3045082162c6e4df409f8b9d55fd5693b4061d166fcfb5ab375dc8ca44f9e022d45719f6
data/Gemfile.lock CHANGED
@@ -8,33 +8,33 @@ PATH
8
8
  GEM
9
9
  remote: https://rubygems.org/
10
10
  specs:
11
- activemodel (4.2.3)
12
- activesupport (= 4.2.3)
11
+ activemodel (4.2.5)
12
+ activesupport (= 4.2.5)
13
13
  builder (~> 3.1)
14
- activerecord (4.2.3)
15
- activemodel (= 4.2.3)
16
- activesupport (= 4.2.3)
14
+ activerecord (4.2.5)
15
+ activemodel (= 4.2.5)
16
+ activesupport (= 4.2.5)
17
17
  arel (~> 6.0)
18
- activesupport (4.2.3)
18
+ activesupport (4.2.5)
19
19
  i18n (~> 0.7)
20
20
  json (~> 1.7, >= 1.7.7)
21
21
  minitest (~> 5.1)
22
22
  thread_safe (~> 0.3, >= 0.3.4)
23
23
  tzinfo (~> 1.1)
24
24
  arel (6.0.3)
25
- bson (3.2.1)
25
+ bson (3.2.6)
26
26
  builder (3.2.2)
27
27
  coderay (1.1.0)
28
- connection_pool (2.2.0)
29
- coveralls (0.8.2)
28
+ coveralls (0.8.8)
30
29
  json (~> 1.8)
31
30
  rest-client (>= 1.6.8, < 2)
32
31
  simplecov (~> 0.10.0)
33
32
  term-ansicolor (~> 1.3)
34
33
  thor (~> 0.19.1)
34
+ tins (~> 1.6.0)
35
35
  diff-lcs (1.2.5)
36
36
  docile (1.1.5)
37
- domain_name (0.5.24)
37
+ domain_name (0.5.25)
38
38
  unf (>= 0.0.5, < 1.0.0)
39
39
  ffi (1.9.10)
40
40
  formatador (0.2.5)
@@ -60,55 +60,52 @@ GEM
60
60
  domain_name (~> 0.5)
61
61
  i18n (0.7.0)
62
62
  json (1.8.3)
63
- listen (3.0.3)
63
+ listen (3.0.4)
64
64
  rb-fsevent (>= 0.9.3)
65
65
  rb-inotify (>= 0.9)
66
66
  lumberjack (1.0.9)
67
67
  method_source (0.8.2)
68
- mime-types (2.6.1)
69
- minitest (5.8.0)
70
- mongoid (4.0.2)
68
+ mime-types (2.6.2)
69
+ minitest (5.8.2)
70
+ mongo (2.1.2)
71
+ bson (~> 3.0)
72
+ mongoid (5.0.1)
71
73
  activemodel (~> 4.0)
72
- moped (~> 2.0.0)
74
+ mongo (~> 2.1)
73
75
  origin (~> 2.1)
74
76
  tzinfo (>= 0.3.37)
75
- moped (2.0.7)
76
- bson (~> 3.0)
77
- connection_pool (~> 2.0)
78
- optionable (~> 0.2.0)
79
77
  nenv (0.2.0)
80
- netrc (0.10.3)
81
- notiffany (0.0.7)
78
+ netrc (0.11.0)
79
+ notiffany (0.0.8)
82
80
  nenv (~> 0.1)
83
81
  shellany (~> 0.0)
84
- optionable (0.2.0)
85
82
  origin (2.1.1)
86
- phony (2.14.14)
87
- pry (0.10.1)
83
+ phony (2.15.8)
84
+ pry (0.10.3)
88
85
  coderay (~> 1.1.0)
89
86
  method_source (~> 0.8.1)
90
87
  slop (~> 3.4)
91
88
  rake (10.4.2)
92
- rb-fsevent (0.9.5)
89
+ rb-fsevent (0.9.6)
93
90
  rb-inotify (0.9.5)
94
91
  ffi (>= 0.5.0)
95
92
  rest-client (1.8.0)
96
93
  http-cookie (>= 1.0.2, < 2.0)
97
94
  mime-types (>= 1.16, < 3.0)
98
95
  netrc (~> 0.7)
99
- rspec (3.3.0)
100
- rspec-core (~> 3.3.0)
101
- rspec-expectations (~> 3.3.0)
102
- rspec-mocks (~> 3.3.0)
103
- rspec-core (3.3.2)
104
- rspec-support (~> 3.3.0)
105
- rspec-expectations (3.3.1)
96
+ rspec (3.4.0)
97
+ rspec-core (~> 3.4.0)
98
+ rspec-expectations (~> 3.4.0)
99
+ rspec-mocks (~> 3.4.0)
100
+ rspec-core (3.4.0)
101
+ rspec-support (~> 3.4.0)
102
+ rspec-expectations (3.4.0)
106
103
  diff-lcs (>= 1.2.0, < 2.0)
107
- rspec-support (~> 3.3.0)
108
- rspec-mocks (3.3.2)
104
+ rspec-support (~> 3.4.0)
105
+ rspec-mocks (3.4.0)
109
106
  diff-lcs (>= 1.2.0, < 2.0)
110
- rspec-support (~> 3.3.0)
111
- rspec-support (3.3.0)
107
+ rspec-support (~> 3.4.0)
108
+ rspec-support (3.4.0)
112
109
  shellany (0.0.1)
113
110
  simplecov (0.10.0)
114
111
  docile (~> 1.1.0)
@@ -116,7 +113,7 @@ GEM
116
113
  simplecov-html (~> 0.10.0)
117
114
  simplecov-html (0.10.0)
118
115
  slop (3.6.0)
119
- sqlite3 (1.3.10)
116
+ sqlite3 (1.3.11)
120
117
  term-ansicolor (1.3.2)
121
118
  tins (~> 1.0)
122
119
  thor (0.19.1)
data/README.md CHANGED
@@ -9,15 +9,21 @@ Find version information in the [CHANGELOG](CHANGELOG.md).
9
9
 
10
10
  Add this line to your application's Gemfile:
11
11
 
12
- gem 'phony_rails' # Include phony_rails after mongoid (if you use mongoid, see issue #66 on github).
12
+ ```ruby
13
+ gem 'phony_rails' # Include phony_rails after mongoid (if you use mongoid, see issue #66 on github).
14
+ ```
13
15
 
14
16
  And then execute:
15
17
 
16
- $ bundle
18
+ ```
19
+ $ bundle
20
+ ```
17
21
 
18
22
  Or install it yourself as:
19
23
 
20
- $ gem install phony_rails
24
+ ```
25
+ $ gem install phony_rails
26
+ ```
21
27
 
22
28
  ## Usage
23
29
 
@@ -27,28 +33,31 @@ Or install it yourself as:
27
33
 
28
34
  For **ActiveRecord**, in your model add:
29
35
 
30
- class SomeModel < ActiveRecord::Base
31
- # Normalizes the attribute itself before validation
32
- phony_normalize :phone_number, :default_country_code => 'US'
36
+ ```ruby
37
+ class SomeModel < ActiveRecord::Base
38
+ # Normalizes the attribute itself before validation
39
+ phony_normalize :phone_number, default_country_code: 'US'
33
40
 
34
- # Normalizes attribute before validation and saves into other attribute
35
- phony_normalize :phone_number, :as => :phone_number_normalized_version, :default_country_code => 'US'
41
+ # Normalizes attribute before validation and saves into other attribute
42
+ phony_normalize :phone_number, as: :phone_number_normalized_version, default_country_code: 'US'
36
43
 
37
- # Creates method normalized_fax_number that returns the normalized version of fax_number
38
- phony_normalized_method :fax_number
39
- end
44
+ # Creates method normalized_fax_number that returns the normalized version of fax_number
45
+ phony_normalized_method :fax_number
46
+ end
47
+ ```
40
48
 
41
49
  #### Mongoid
42
50
 
43
51
  For **Mongoid**, in keeping with Mongoid plug-in conventions you must include the `Mongoid::Phony` module:
44
52
 
45
- class SomeModel
46
- include Mongoid::Document
47
- include Mongoid::Phony
48
-
49
- # methods are same as ActiveRecord usage
50
- end
53
+ ```ruby
54
+ class SomeModel
55
+ include Mongoid::Document
56
+ include Mongoid::Phony
51
57
 
58
+ # methods are same as ActiveRecord usage
59
+ end
60
+ ```
52
61
  #### General info
53
62
 
54
63
  The `:default_country_code` options is used to specify a country_code when normalizing.
@@ -57,14 +66,16 @@ PhonyRails will also check your model for a country_code method to use when norm
57
66
 
58
67
  You can also do-it-yourself and call:
59
68
 
60
- # Options:
61
- # :country_code => The country code we should use (forced).
62
- # :default_country_code => Some fallback code (eg. 'NL') that can be used as default (comes from phony_normalize_numbers method).
69
+ ```ruby
70
+ # Options:
71
+ # :country_code => The country code we should use (forced).
72
+ # :default_country_code => Some fallback code (eg. 'NL') that can be used as default (comes from phony_normalize_numbers method).
63
73
 
64
- PhonyRails.normalize_number('some number', :country_code => 'NL')
74
+ PhonyRails.normalize_number('some number', country_code: 'NL')
65
75
 
66
- PhonyRails.normalize_number('+4790909090', :country_code => 'SE') # => '+464790909090' (forced to +46)
67
- PhonyRails.normalize_number('+4790909090', :default_country_code => 'SE') # => '+4790909090' (still +47 so not changed)
76
+ PhonyRails.normalize_number('+4790909090', country_code: 'SE') # => '+464790909090' (forced to +46)
77
+ PhonyRails.normalize_number('+4790909090', default_country_code: 'SE') # => '+4790909090' (still +47 so not changed)
78
+ ```
68
79
 
69
80
  The country_code should always be a ISO 3166-1 alpha-2 (http://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).
70
81
 
@@ -72,11 +83,14 @@ The country_code should always be a ISO 3166-1 alpha-2 (http://en.wikipedia.org/
72
83
 
73
84
  In your model use the Phony.plausible method to validate an attribute:
74
85
 
75
- validates :phone_number, :phony_plausible => true
76
-
86
+ ```ruby
87
+ validates :phone_number, phony_plausible: true
88
+ ```
77
89
  or the helper method:
78
90
 
79
- validates_plausible_phone :phone_number
91
+ ```ruby
92
+ validates_plausible_phone :phone_number
93
+ ```
80
94
 
81
95
  this method use other validators under the hood to provide:
82
96
  * presence validation using `ActiveModel::Validations::PresenceValidator`
@@ -84,35 +98,45 @@ this method use other validators under the hood to provide:
84
98
 
85
99
  so we can use:
86
100
 
87
- validates_plausible_phone :phone_number, :presence => true
88
- validates_plausible_phone :phone_number, :with => /^\+\d+/
89
- validates_plausible_phone :phone_number, :without => /^\+\d+/
90
- validates_plausible_phone :phone_number, :presence => true, :with => /^\+\d+/
101
+ ```ruby
102
+ validates_plausible_phone :phone_number, presence: true
103
+ validates_plausible_phone :phone_number, with: /^\+\d+/
104
+ validates_plausible_phone :phone_number, without: /^\+\d+/
105
+ validates_plausible_phone :phone_number, presence: true, with: /^\+\d+/
106
+ ```
91
107
 
92
- the i18n key is `:improbable_phone`. Languages supported by default: de, en, fr, it, ja, kh and tr.
108
+ the i18n key is `:improbable_phone`. Languages supported by default: de, en, fr, it, ja, kh, tr, ua and ru.
93
109
 
94
110
  You can also validate if a number has the correct country number:
95
111
 
96
- validates_plausible_phone :phone_number, :country_number => '61'
112
+ ```ruby
113
+ validates_plausible_phone :phone_number, country_number: '61'
114
+ ```
97
115
 
98
116
  or correct country code:
99
117
 
100
- validates_plausible_phone :phone_number, :country_code => 'AU'
118
+ ```ruby
119
+ validates_plausible_phone :phone_number, country_code: 'AU'
120
+ ```
101
121
 
102
122
  You can validate against the normalized input as opposed to the raw input:
103
123
 
104
- phony_normalize :phone_number, as: :phone_number_normalized, :default_country_code => 'US'
105
- validates_plausible_phone :phone_number, :normalized_country_code => 'US'
124
+ ```ruby
125
+ phony_normalize :phone_number, as: :phone_number_normalized, default_country_code: 'US'
126
+ validates_plausible_phone :phone_number, normalized_country_code: 'US'
127
+ ```
106
128
 
107
129
  #### Allowing records country codes to not match phone number country codes
108
130
 
109
131
  You may have a record specifying one country (via a `country_code` attribute) but using a phone number from another country. For example, your record may be from Japan but have a phone number from the Philippines. By default, `phony_rails` will consider your record's `country_code` as part of the validation. If that country doesn't match the country code in the phone number, validation will fail.
110
132
 
111
- Additionally, `phony_normalize` will always add the records country code as the country number (eg. the user enters '+81xxx' for Japan and the records `country_code` is 'DE' then `phony_normalize` will change the number to '+4981'). You can turn this off by adding `:enforce_record_country => false` to the validation options. The country_code will then only be added if no country code is specified.
133
+ Additionally, `phony_normalize` will always add the records country code as the country number (eg. the user enters '+81xxx' for Japan and the records `country_code` is 'DE' then `phony_normalize` will change the number to '+4981'). You can turn this off by adding `enforce_record_country: false` to the validation options. The country_code will then only be added if no country code is specified.
112
134
 
113
135
  If you want to allow records from one country to have phone numbers from a different one, there are a couple of options you can use: `ignore_record_country_number` and `ignore_record_country_code`. Use them like so:
114
136
 
115
- validates :phone_number, :phony_plausible => { :ignore_record_country_code => true, :ignore_record_country_number => true }
137
+ ```ruby
138
+ validates :phone_number, phony_plausible: { ignore_record_country_code: true, ignore_record_country_number: true }
139
+ ```
116
140
 
117
141
  Obviously, you don't have to use both, and you may not need or want to set either.
118
142
 
@@ -120,35 +144,47 @@ Obviously, you don't have to use both, and you may not need or want to set eithe
120
144
 
121
145
  In your views use:
122
146
 
123
- <%= "311012341234".phony_formatted(:format => :international, :spaces => '-') %>
124
- <%= "+31-10-12341234".phony_formatted(:format => :international, :spaces => '-') %>
125
- <%= "+31(0)1012341234".phony_formatted(:format => :international, :spaces => '-') %>
147
+ ```erb
148
+ <%= "311012341234".phony_formatted(format: :international, spaces: '-') %>
149
+ <%= "+31-10-12341234".phony_formatted(format: :international, spaces: '-') %>
150
+ <%= "+31(0)1012341234".phony_formatted(format: :international, spaces: '-') %>
151
+ ```
126
152
 
127
153
  To first normalize the String to a certain country use:
128
154
 
129
- <%= "010-12341234".phony_formatted(:normalize => :NL, :format => :international, :spaces => '-') %>
155
+ ```erb
156
+ <%= "010-12341234".phony_formatted(normalize: :NL, format: :international, spaces: '-') %>
157
+ ```
130
158
 
131
159
  To return nil when a number is not valid:
132
160
 
133
- "123".phony_formatted(:strict => true) # => nil
161
+ ```ruby
162
+ "123".phony_formatted(strict: true) # => nil
163
+ ```
134
164
 
135
165
  You can also use the bang method (phony_formatted!):
136
166
 
137
- number = "010-12341234"
138
- number.phony_formatted!(:normalize => :NL, :format => :international)
139
- number # => "+31 10 123 41234"
167
+ ```ruby
168
+ number = "010-12341234"
169
+ number.phony_formatted!(normalize: :NL, format: :international)
170
+ number # => "+31 10 123 41234"
171
+ ```
140
172
 
141
173
  You can also easily normalize a phone number String:
142
174
 
143
- "+31 (0)30 1234 123".phony_normalized # => '31301234123'
144
- "(0)30 1234 123".phony_normalized # => '301234123'
145
- "(0)30 1234 123".phony_normalized(country_code: 'NL') # => '301234123'
175
+ ```ruby
176
+ "+31 (0)30 1234 123".phony_normalized # => '31301234123'
177
+ "(0)30 1234 123".phony_normalized # => '301234123'
178
+ "(0)30 1234 123".phony_normalized(country_code: 'NL') # => '301234123'
179
+ ```
146
180
 
147
181
  ### Find by normalized number
148
182
 
149
183
  Say you want to find a record by a phone number. Best is to normalize user input and compare to an attribute stored in the db.
150
184
 
151
- Home.find_by_normalized_phone_number(PhonyRails.normalize_number(params[:phone_number]))
185
+ ```ruby
186
+ Home.find_by_normalized_phone_number(PhonyRails.normalize_number(params[:phone_number]))
187
+ ```
152
188
 
153
189
  ## Contributing
154
190
 
data/lib/phony_rails.rb CHANGED
@@ -27,6 +27,7 @@ module PhonyRails
27
27
  # http://www.redguava.com.au/2011/06/rails-convert-phone-numbers-to-international-format-for-sms/
28
28
  def self.normalize_number(number, options = {})
29
29
  return if number.nil?
30
+ original_number = number
30
31
  number = number.clone # Just to be sure, we don't want to change the original.
31
32
  number.gsub!(/[^\(\)\d\+]/, '') # Strips weird stuff from the number
32
33
  return if number.blank?
@@ -44,6 +45,11 @@ module PhonyRails
44
45
  if not (number =~ /\A\+/) # if we don't have a +
45
46
  if Phony.plausible?("#{_default_country_number}#{number}") || !Phony.plausible?(number) || country_code_from_number(number).nil?
46
47
  number = "#{_default_country_number}#{number}"
48
+ elsif (number =~ /^0[^0]/) && Phony.plausible?("#{_default_country_number}#{number.gsub(/^0/, '')}")
49
+ # If the number starts with ONE zero (two might indicate a country code)
50
+ # and this is a plausible number for the default_country
51
+ # we prefer that one.
52
+ number = "#{_default_country_number}#{number.gsub(/^0/, '')}"
47
53
  end
48
54
  end
49
55
  # number = "#{_default_country_number}#{number}" unless Phony.plausible?(number)
@@ -52,7 +58,7 @@ module PhonyRails
52
58
  options[:add_plus] = true if options[:add_plus].nil? && Phony.plausible?(normalized_number)
53
59
  options[:add_plus] ? "+#{normalized_number}" : normalized_number
54
60
  rescue
55
- number # If all goes wrong .. we still return the original input.
61
+ original_number # If all goes wrong .. we still return the original input.
56
62
  end
57
63
 
58
64
  def self.country_code_from_number(number)
@@ -0,0 +1,4 @@
1
+ ru:
2
+ errors:
3
+ messages:
4
+ improbable_phone: "является недействительным номером"
@@ -0,0 +1,4 @@
1
+ uk:
2
+ errors:
3
+ messages:
4
+ improbable_phone: "є недійсним номером"
@@ -39,6 +39,7 @@
39
39
 
40
40
  # The bang method
41
41
  def phony_formatted!(options = {})
42
+ raise ArgumentError, "The :strict options is only supported in the phony_formatted (non bang) method." if options[:strict]
42
43
  replace(self.phony_formatted(options))
43
44
  end
44
45
 
@@ -1,3 +1,3 @@
1
1
  module PhonyRails
2
- VERSION = "0.12.10"
2
+ VERSION = "0.12.11"
3
3
  end
data/phony_rails.gemspec CHANGED
@@ -17,7 +17,7 @@ Gem::Specification.new do |gem|
17
17
  gem.version = PhonyRails::VERSION
18
18
 
19
19
  gem.post_install_message = "PhonyRails v0.10.0 changes the way numbers are stored!"
20
- gem.post_install_message = "It now ads a '+' to the normalized number when it starts with a country number!"
20
+ gem.post_install_message = "It now adds a '+' to the normalized number when it starts with a country number!"
21
21
 
22
22
  gem.add_dependency "phony", '~> 2.12'
23
23
  gem.add_dependency "activesupport", ">= 3.0"
@@ -1,6 +1,6 @@
1
1
  require 'spec_helper'
2
- describe PhonyRails do
3
2
 
3
+ describe PhonyRails do
4
4
  it "should not pollute the global namespace with a Country class" do
5
5
  should_not be_const_defined "Country"
6
6
  end
@@ -10,16 +10,16 @@ describe PhonyRails do
10
10
  describe 'the phony_formatted method' do
11
11
 
12
12
  it 'should not modify the original options Hash' do
13
- options = {:normalize => :NL, :format => :international}
13
+ options = {normalize: :NL, format: :international}
14
14
  "0101234123".phony_formatted(options)
15
- expect(options).to eql({:normalize => :NL, :format => :international})
15
+ expect(options).to eql({normalize: :NL, format: :international})
16
16
  end
17
17
 
18
18
  describe 'with the bang!' do
19
19
 
20
20
  it "should change the String using the bang method" do
21
21
  s = "0101234123"
22
- expect(s.phony_formatted!(:normalize => :NL, :format => :international)).to eql('+31 10 123 4123')
22
+ expect(s.phony_formatted!(normalize: :NL, format: :international)).to eql('+31 10 123 4123')
23
23
  expect(s).to eql("+31 10 123 4123")
24
24
  end
25
25
 
@@ -30,13 +30,13 @@ describe PhonyRails do
30
30
  it "should return nil with non plausible number" do
31
31
  number = '+319090' # not valid
32
32
  expect(Phony.plausible?(number)).to be false
33
- expect(number.phony_formatted(:strict => true)).to eql(nil)
33
+ expect(number.phony_formatted(strict: true)).to eql(nil)
34
34
  end
35
35
 
36
36
  it "should not return nil with plausible number" do
37
37
  number = '+31101234123' # valid
38
38
  expect(Phony.plausible?(number)).to be true
39
- expect(number.phony_formatted(:strict => true)).to_not eql(nil)
39
+ expect(number.phony_formatted(strict: true)).to_not eql(nil)
40
40
  end
41
41
 
42
42
  end
@@ -44,30 +44,30 @@ describe PhonyRails do
44
44
  describe 'with normalize option' do
45
45
 
46
46
  it "should phony_format" do
47
- expect("101234123".phony_formatted(:normalize => :NL)).to eql('010 123 4123')
48
- expect("101234123".phony_formatted(:normalize => :NL, :format => :international)).to eql('+31 10 123 4123')
47
+ expect("101234123".phony_formatted(normalize: :NL)).to eql('010 123 4123')
48
+ expect("101234123".phony_formatted(normalize: :NL, format: :international)).to eql('+31 10 123 4123')
49
49
  end
50
50
 
51
51
  it "should not change original String" do
52
52
  s = "0101234123"
53
- expect(s.phony_formatted(:normalize => :NL)).to eql('010 123 4123')
53
+ expect(s.phony_formatted(normalize: :NL)).to eql('010 123 4123')
54
54
  expect(s).to eql("0101234123")
55
55
  end
56
56
 
57
57
  it "should phony_format String with country code" do
58
- expect("31101234123".phony_formatted(:normalize => :NL)).to eql('010 123 4123')
58
+ expect("31101234123".phony_formatted(normalize: :NL)).to eql('010 123 4123')
59
59
  end
60
60
 
61
61
  it "should phony_format String with country code" do
62
- expect("31101234123".phony_formatted(:normalize => :NL)).to eql('010 123 4123')
62
+ expect("31101234123".phony_formatted(normalize: :NL)).to eql('010 123 4123')
63
63
  end
64
64
 
65
65
  it "should accept strings with non-digits in it" do
66
- expect("+31-10-1234123".phony_formatted(:normalize => :NL, :format => :international, :spaces => '-')).to eql('+31-10-123-4123')
66
+ expect("+31-10-1234123".phony_formatted(normalize: :NL, format: :international, spaces: '-')).to eql('+31-10-123-4123')
67
67
  end
68
68
 
69
69
  it "should phony_format String with country code different than normalized value" do
70
- expect("+4790909090".phony_formatted(:normalize => :SE, :format => :international)).to eql('+47 909 09 090')
70
+ expect("+4790909090".phony_formatted(normalize: :SE, format: :international)).to eql('+47 909 09 090')
71
71
  end
72
72
 
73
73
  end
@@ -105,14 +105,16 @@ describe PhonyRails do
105
105
  end
106
106
 
107
107
  it "should pass Github issue #85" do
108
- expect(PhonyRails.normalize_number("47386160", default_country_code: 'NO')).to eq('+4747386160')
109
- expect(PhonyRails.normalize_number("47386160", country_number: '47')).to eq('+4747386160')
108
+ expect(PhonyRails.normalize_number("47386160", default_country_code: 'NO')).to eq('+4747386160')
109
+ expect(PhonyRails.normalize_number("47386160", country_number: '47')).to eq('+4747386160')
110
110
  end
111
111
 
112
112
  it "should pass Github issue #87" do
113
113
  expect(PhonyRails.normalize_number('2318725305', country_code: 'US')).to eq('+12318725305')
114
114
  expect(PhonyRails.normalize_number('2318725305', default_country_code: 'US')).to eq('+12318725305')
115
115
  expect(PhonyRails.normalize_number('+2318725305', default_country_code: 'US')).to eq('+2318725305')
116
+ # expect(Phony.plausible?("#{PhonyRails.country_number_for('US')}02318725305")).to be_truthy
117
+ expect(PhonyRails.normalize_number('02318725305', default_country_code: 'US')).to eq('+12318725305')
116
118
  end
117
119
 
118
120
  it "should pass Github issue #89" do
@@ -126,20 +128,50 @@ describe PhonyRails do
126
128
  expect(number.phony_normalized(country_code: 'NL')).to eq('+31301234123')
127
129
  end
128
130
 
131
+ it "should pass Github issue #107" do
132
+ number = '04575700834'
133
+ expect(number.phony_normalized(country_code: 'FI')).to eq('+3584575700834')
134
+ # Seems this number can be interpreted as from multiple countries, following fails:
135
+ # expect(number.phony_normalized(default_country_code: 'FI')).to eq('+3584575700834')
136
+ # expect("04575700834".phony_formatted(normalize: 'FI', format: :international)).to eql('+358 45 757 00 834')
137
+ end
138
+
139
+ it "should pass Github issue #113" do
140
+ number = "(951) 703-593"
141
+ expect(lambda {
142
+ number.phony_formatted!(normalize: 'US', spaces: '-', strict: true)
143
+ }).to raise_error(ArgumentError)
144
+ end
145
+
146
+ it "should pass Github issue #95" do
147
+ number = '02031234567'
148
+ expect(number.phony_normalized(default_country_code: 'GB')).to eq('+442031234567')
149
+ end
150
+
151
+ it 'should pass Github issue #121' do
152
+ number = '06-87-73-83-58'
153
+ expect(number.phony_normalized(default_country_code: 'FR')).to eq('+33687738358')
154
+ end
155
+
156
+ it "returns the original input if all goes wrong" do
157
+ expect(Phony).to receive(:plausible?).and_raise("unexpected error")
158
+ number = '(0)30 1234 123'
159
+ expect(number.phony_normalized(country_code: 'NL')).to eq number
160
+ end
129
161
  end
130
162
 
131
163
  it "should not change original String" do
132
164
  s = '0101234123'
133
- expect(s.phony_formatted(:normalize => :NL)).to eql('010 123 4123')
165
+ expect(s.phony_formatted(normalize: :NL)).to eql('010 123 4123')
134
166
  expect(s).to eql('0101234123')
135
167
  end
136
168
 
137
169
  it "should phony_format a digits string with spaces String" do
138
- expect("31 10 1234123".phony_formatted(:format => :international, :spaces => '-')).to eql('+31-10-123-4123')
170
+ expect("31 10 1234123".phony_formatted(format: :international, spaces: '-')).to eql('+31-10-123-4123')
139
171
  end
140
172
 
141
173
  it "should phony_format a digits String" do
142
- expect("31101234123".phony_formatted(:format => :international, :spaces => '-')).to eql('+31-10-123-4123')
174
+ expect("31101234123".phony_formatted(format: :international, spaces: '-')).to eql('+31-10-123-4123')
143
175
  end
144
176
 
145
177
  it "returns nil if implausible phone" do
@@ -159,14 +191,14 @@ describe PhonyRails do
159
191
  end
160
192
 
161
193
  it 'should not modify the original options Hash' do
162
- options = {:normalize => :NL, :format => :international}
194
+ options = {normalize: :NL, format: :international}
163
195
  "0101234123".phony_normalized(options)
164
- expect(options).to eql({:normalize => :NL, :format => :international})
196
+ expect(options).to eql({normalize: :NL, format: :international})
165
197
  end
166
198
 
167
199
  context "when String misses a country_code" do
168
200
  it "should normalize with :country_code option" do
169
- expect("010 1231234".phony_normalized(:country_code => :NL)).to eql("+31101231234")
201
+ expect("010 1231234".phony_normalized(country_code: :NL)).to eql("+31101231234")
170
202
  end
171
203
 
172
204
  it "should normalize without :country_code option" do
@@ -174,13 +206,13 @@ describe PhonyRails do
174
206
  end
175
207
 
176
208
  it "should normalize with :add_plus option" do
177
- expect("010 1231234".phony_normalized(:country_code => :NL, :add_plus => false)).to eql("31101231234")
209
+ expect("010 1231234".phony_normalized(country_code: :NL, add_plus: false)).to eql("31101231234")
178
210
  end
179
211
 
180
212
  end
181
213
 
182
214
  it "should normalize with :add_plus option" do
183
- expect("+31 (0)10 1231234".phony_normalized(:add_plus => false)).to eql("31101231234")
215
+ expect("+31 (0)10 1231234".phony_normalized(add_plus: false)).to eql("31101231234")
184
216
  end
185
217
 
186
218
  it "should normalize a String" do
@@ -195,19 +227,19 @@ describe PhonyRails do
195
227
  context 'number with a country code' do
196
228
 
197
229
  it "should not add default_country_code" do
198
- expect(PhonyRails.normalize_number('+4790909090', :default_country_code => 'SE')).to eql('+4790909090') # SE = +46
199
- expect(PhonyRails.normalize_number('004790909090', :default_country_code => 'SE')).to eql('+4790909090')
200
- expect(PhonyRails.normalize_number('4790909090', :default_country_code => 'NO')).to eql('+4790909090') # NO = +47
230
+ expect(PhonyRails.normalize_number('+4790909090', default_country_code: 'SE')).to eql('+4790909090') # SE = +46
231
+ expect(PhonyRails.normalize_number('004790909090', default_country_code: 'SE')).to eql('+4790909090')
232
+ expect(PhonyRails.normalize_number('4790909090', default_country_code: 'NO')).to eql('+4790909090') # NO = +47
201
233
  end
202
234
 
203
235
  it "should force add country_code" do
204
- expect(PhonyRails.normalize_number('+4790909090', :country_code => 'SE')).to eql('+464790909090')
205
- expect(PhonyRails.normalize_number('004790909090', :country_code => 'SE')).to eql('+4604790909090') # FIXME: differs due to Phony.normalize in v2.7.1?!
206
- expect(PhonyRails.normalize_number('4790909090', :country_code => 'SE')).to eql('+464790909090')
236
+ expect(PhonyRails.normalize_number('+4790909090', country_code: 'SE')).to eql('+464790909090')
237
+ expect(PhonyRails.normalize_number('004790909090', country_code: 'SE')).to eql('+4604790909090') # FIXME: differs due to Phony.normalize in v2.7.1?!
238
+ expect(PhonyRails.normalize_number('4790909090', country_code: 'SE')).to eql('+464790909090')
207
239
  end
208
240
 
209
241
  it "should recognize lowercase country codes" do
210
- expect(PhonyRails.normalize_number('4790909090', :country_code => 'se')).to eql('+464790909090')
242
+ expect(PhonyRails.normalize_number('4790909090', country_code: 'se')).to eql('+464790909090')
211
243
  end
212
244
 
213
245
  end
@@ -215,47 +247,47 @@ describe PhonyRails do
215
247
  context 'number without a country code' do
216
248
 
217
249
  it "should normalize with a default_country_code" do
218
- expect(PhonyRails.normalize_number('010-1234123', :default_country_code => 'NL')).to eql('+31101234123')
250
+ expect(PhonyRails.normalize_number('010-1234123', default_country_code: 'NL')).to eql('+31101234123')
219
251
  end
220
252
 
221
253
  it "should normalize with a country_code" do
222
- expect(PhonyRails.normalize_number('010-1234123', :country_code => 'NL', :default_country_code => 'DE')).to eql('+31101234123')
223
- expect(PhonyRails.normalize_number('010-1234123', :country_code => 'NL')).to eql('+31101234123')
254
+ expect(PhonyRails.normalize_number('010-1234123', country_code: 'NL', default_country_code: 'DE')).to eql('+31101234123')
255
+ expect(PhonyRails.normalize_number('010-1234123', country_code: 'NL')).to eql('+31101234123')
224
256
  end
225
257
 
226
258
  it "should handle different countries" do
227
- expect(PhonyRails.normalize_number('(030) 8 61 29 06', :country_code => 'DE')).to eql('+49308612906')
228
- expect(PhonyRails.normalize_number('0203 330 8897', :country_code => 'GB')).to eql('+442033308897')
259
+ expect(PhonyRails.normalize_number('(030) 8 61 29 06', country_code: 'DE')).to eql('+49308612906')
260
+ expect(PhonyRails.normalize_number('0203 330 8897', country_code: 'GB')).to eql('+442033308897')
229
261
  end
230
262
 
231
263
  it "should prefer country_code over default_country_code" do
232
- expect(PhonyRails.normalize_number('(030) 8 61 29 06', :country_code => 'DE', :default_country_code => 'NL')).to eql('+49308612906')
264
+ expect(PhonyRails.normalize_number('(030) 8 61 29 06', country_code: 'DE', default_country_code: 'NL')).to eql('+49308612906')
233
265
  end
234
266
 
235
267
  it "should recognize lowercase country codes" do
236
- expect(PhonyRails.normalize_number('010-1234123', :country_code => 'nl')).to eql('+31101234123')
268
+ expect(PhonyRails.normalize_number('010-1234123', country_code: 'nl')).to eql('+31101234123')
237
269
  end
238
270
 
239
271
  end
240
272
 
241
273
  it "should handle some edge cases (with country_code)" do
242
- expect(PhonyRails.normalize_number('some nasty stuff in this +31 number 10-1234123 string', :country_code => 'NL')).to eql('+31101234123')
243
- expect(PhonyRails.normalize_number('070-4157134', :country_code => 'NL')).to eql('+31704157134')
244
- expect(PhonyRails.normalize_number('0031-70-4157134', :country_code => 'NL')).to eql('+31704157134')
245
- expect(PhonyRails.normalize_number('+31-70-4157134', :country_code => 'NL')).to eql('+31704157134')
246
- expect(PhonyRails.normalize_number('0322-69497', :country_code => 'BE')).to eql('+3232269497')
247
- expect(PhonyRails.normalize_number('+32 3 226 94 97', :country_code => 'BE')).to eql('+3232269497')
248
- expect(PhonyRails.normalize_number('0450 764 000', :country_code => 'AU')).to eql('+61450764000')
274
+ expect(PhonyRails.normalize_number('some nasty stuff in this +31 number 10-1234123 string', country_code: 'NL')).to eql('+31101234123')
275
+ expect(PhonyRails.normalize_number('070-4157134', country_code: 'NL')).to eql('+31704157134')
276
+ expect(PhonyRails.normalize_number('0031-70-4157134', country_code: 'NL')).to eql('+31704157134')
277
+ expect(PhonyRails.normalize_number('+31-70-4157134', country_code: 'NL')).to eql('+31704157134')
278
+ expect(PhonyRails.normalize_number('0322-69497', country_code: 'BE')).to eql('+3232269497')
279
+ expect(PhonyRails.normalize_number('+32 3 226 94 97', country_code: 'BE')).to eql('+3232269497')
280
+ expect(PhonyRails.normalize_number('0450 764 000', country_code: 'AU')).to eql('+61450764000')
249
281
  end
250
282
 
251
283
  it "should handle some edge cases (with default_country_code)" do
252
- expect(PhonyRails.normalize_number('some nasty stuff in this +31 number 10-1234123 string', :country_code => 'NL')).to eql('+31101234123')
253
- expect(PhonyRails.normalize_number('070-4157134', :default_country_code => 'NL')).to eql('+31704157134')
254
- expect(PhonyRails.normalize_number('0031-70-4157134', :default_country_code => 'NL')).to eql('+31704157134')
255
- expect(PhonyRails.normalize_number('+31-70-4157134', :default_country_code => 'NL')).to eql('+31704157134')
256
- expect(PhonyRails.normalize_number('0322-69497', :default_country_code => 'BE')).to eql('+3232269497')
257
- expect(PhonyRails.normalize_number('+32 3 226 94 97', :default_country_code => 'BE')).to eql('+3232269497')
258
- expect(PhonyRails.normalize_number('0450 764 000', :default_country_code => 'AU')).to eql('+61450764000')
284
+ expect(PhonyRails.normalize_number('some nasty stuff in this +31 number 10-1234123 string', country_code: 'NL')).to eql('+31101234123')
285
+ expect(PhonyRails.normalize_number('070-4157134', default_country_code: 'NL')).to eql('+31704157134')
286
+ expect(PhonyRails.normalize_number('0031-70-4157134', default_country_code: 'NL')).to eql('+31704157134')
287
+ expect(PhonyRails.normalize_number('+31-70-4157134', default_country_code: 'NL')).to eql('+31704157134')
288
+ expect(PhonyRails.normalize_number('0322-69497', default_country_code: 'BE')).to eql('+3232269497')
289
+ expect(PhonyRails.normalize_number('+32 3 226 94 97', default_country_code: 'BE')).to eql('+3232269497')
290
+ expect(PhonyRails.normalize_number('0450 764 000', default_country_code: 'AU')).to eql('+61450764000')
259
291
  end
260
292
 
261
293
  it "should normalize even an implausible number" do
@@ -263,7 +295,8 @@ describe PhonyRails do
263
295
  end
264
296
  end
265
297
 
266
- describe 'PhonyRails#plausible_number?' do
298
+ describe 'PhonyRails.plausible_number?' do
299
+ subject { described_class }
267
300
  let(:valid_number) { '1 555 555 5555' }
268
301
  let(:invalid_number) { '123456789 123456789 123456789 123456789' }
269
302
  let(:normalizable_number) { '555 555 5555' }
@@ -272,35 +305,40 @@ describe PhonyRails do
272
305
  let(:nil_number) { nil }
273
306
 
274
307
  it "should return true for a valid number" do
275
- expect(PhonyRails.plausible_number?(valid_number, country_code: 'US')).to be true
308
+ is_expected.to be_plausible_number valid_number, country_code: 'US'
276
309
  end
277
310
 
278
311
  it "should return false for an invalid number" do
279
- expect(PhonyRails.plausible_number?(invalid_number, country_code: 'US')).to be false
312
+ is_expected.not_to be_plausible_number invalid_number, country_code: 'US'
280
313
  end
281
314
 
282
315
  it "should return true for a normalizable number" do
283
- expect(PhonyRails.plausible_number?(normalizable_number, country_code: 'US')).to be true
316
+ is_expected.to be_plausible_number normalizable_number, country_code: 'US'
284
317
  end
285
318
 
286
319
  it "should return false for a valid number with the wrong country code" do
287
- expect(PhonyRails.plausible_number?(valid_number, country_code: 'FR')).to be false
320
+ is_expected.not_to be_plausible_number normalizable_number, country_code: 'FR'
288
321
  end
289
322
 
290
323
  it "should return true for a well formatted valid number" do
291
- expect(PhonyRails.plausible_number?(formatted_french_number_with_country_code, country_code: 'FR')).to be true
324
+ is_expected.to be_plausible_number formatted_french_number_with_country_code, country_code: 'FR'
292
325
  end
293
326
 
294
327
  it "should return false for an empty number" do
295
- expect(PhonyRails.plausible_number?(empty_number, country_code: 'US')).to be false
328
+ is_expected.not_to be_plausible_number empty_number, country_code: 'US'
296
329
  end
297
330
 
298
331
  it "should return false for a nil number" do
299
- expect(PhonyRails.plausible_number?(nil_number, country_code: 'US')).to be false
332
+ is_expected.not_to be_plausible_number nil_number, country_code: 'US'
300
333
  end
301
334
 
302
335
  it "should return false when no country code is supplied" do
303
- expect(PhonyRails.plausible_number?(normalizable_number)).to be false
336
+ is_expected.not_to be_plausible_number normalizable_number
337
+ end
338
+
339
+ it "returns false if something goes wrong" do
340
+ expect(Phony).to receive(:plausible?).twice.and_raise("unexpected error")
341
+ is_expected.not_to be_plausible_number normalizable_number, country_code: 'US'
304
342
  end
305
343
  end
306
344
 
@@ -331,25 +369,25 @@ describe PhonyRails do
331
369
  describe 'defining model#phony_normalize' do
332
370
  it "should not accept :as option with multiple attribute names" do
333
371
  expect(lambda {
334
- model_klass.phony_normalize(:phone_number, :phone1_method, :as => 'non_existing_attribute')
372
+ model_klass.phony_normalize(:phone_number, :phone1_method, as: 'non_existing_attribute')
335
373
  }).to raise_error(ArgumentError)
336
374
  end
337
375
 
338
376
  it "should accept :as option with non existing attribute name" do
339
377
  expect(lambda {
340
- dummy_klass.phony_normalize(:non_existing_attribute, :as => 'non_existing_attribute')
378
+ dummy_klass.phony_normalize(:non_existing_attribute, as: 'non_existing_attribute')
341
379
  }).to_not raise_error
342
380
  end
343
381
 
344
382
  it "should accept :as option with single non existing attribute name" do
345
383
  expect(lambda {
346
- dummy_klass.phony_normalize(:phone_number, :as => 'something_else')
384
+ dummy_klass.phony_normalize(:phone_number, as: 'something_else')
347
385
  }).to_not raise_error
348
386
  end
349
387
 
350
388
  it "should accept :as option with single existing attribute name" do
351
389
  expect(lambda {
352
- model_klass.phony_normalize(:phone_number, :as => 'phone_number_as_normalized')
390
+ model_klass.phony_normalize(:phone_number, as: 'phone_number_as_normalized')
353
391
  }).to_not raise_error
354
392
  end
355
393
 
@@ -378,82 +416,82 @@ describe PhonyRails do
378
416
  describe 'using model#phony_normalized_method' do
379
417
  # Following examples have complete number (with country code!)
380
418
  it "should return a normalized version of an attribute" do
381
- model = model_klass.new(:phone_attribute => "+31-(0)10-1234123")
419
+ model = model_klass.new(phone_attribute: "+31-(0)10-1234123")
382
420
  expect(model.normalized_phone_attribute).to eql('+31101234123')
383
421
  end
384
422
 
385
423
  it "should return a normalized version of a method" do
386
- model = model_klass.new(:phone_method => "+31-(0)10-1234123")
424
+ model = model_klass.new(phone_method: "+31-(0)10-1234123")
387
425
  expect(model.normalized_phone_method).to eql('+31101234123')
388
426
  end
389
427
 
390
428
  # Following examples have incomplete number
391
429
  it "should normalize even a unplausible number (no country code)" do
392
- model = model_klass.new(:phone_attribute => "(0)10-1234123")
430
+ model = model_klass.new(phone_attribute: "(0)10-1234123")
393
431
  expect(model.normalized_phone_attribute).to eql('101234123')
394
432
  end
395
433
 
396
434
  it "should use country_code option" do
397
- model = model_klass.new(:phone_attribute => "(0)10-1234123")
398
- expect(model.normalized_phone_attribute(:country_code => 'NL')).to eql('+31101234123')
435
+ model = model_klass.new(phone_attribute: "(0)10-1234123")
436
+ expect(model.normalized_phone_attribute(country_code: 'NL')).to eql('+31101234123')
399
437
  end
400
438
 
401
439
  it "should use country_code object method" do
402
- model = model_klass.new(:phone_attribute => "(0)10-1234123", :country_code => 'NL')
440
+ model = model_klass.new(phone_attribute: "(0)10-1234123", country_code: 'NL')
403
441
  expect(model.normalized_phone_attribute).to eql('+31101234123')
404
442
  end
405
443
 
406
444
  it "should fallback to default_country_code option" do
407
- model = model_klass.new(:phone1_method => "(030) 8 61 29 06")
445
+ model = model_klass.new(phone1_method: "(030) 8 61 29 06")
408
446
  expect(model.normalized_phone1_method).to eql('+49308612906')
409
447
  end
410
448
 
411
449
  it "should overwrite default_country_code option with object method" do
412
- model = model_klass.new(:phone1_method => "(030) 8 61 29 06", :country_code => 'NL')
450
+ model = model_klass.new(phone1_method: "(030) 8 61 29 06", country_code: 'NL')
413
451
  expect(model.normalized_phone1_method).to eql('+31308612906')
414
452
  end
415
453
 
416
454
  it "should overwrite default_country_code option with option" do
417
- model = model_klass.new(:phone1_method => "(030) 8 61 29 06")
418
- expect(model.normalized_phone1_method(:country_code => 'NL')).to eql('+31308612906')
455
+ model = model_klass.new(phone1_method: "(030) 8 61 29 06")
456
+ expect(model.normalized_phone1_method(country_code: 'NL')).to eql('+31308612906')
419
457
  end
420
458
 
421
459
  it "should use last passed options" do
422
- model = model_klass.new(:phone1_method => "(030) 8 61 29 06")
423
- expect(model.normalized_phone1_method(:country_code => 'NL')).to eql('+31308612906')
424
- expect(model.normalized_phone1_method(:country_code => 'DE')).to eql('+49308612906')
425
- expect(model.normalized_phone1_method(:country_code => nil)).to eql('+49308612906')
460
+ model = model_klass.new(phone1_method: "(030) 8 61 29 06")
461
+ expect(model.normalized_phone1_method(country_code: 'NL')).to eql('+31308612906')
462
+ expect(model.normalized_phone1_method(country_code: 'DE')).to eql('+49308612906')
463
+ expect(model.normalized_phone1_method(country_code: nil)).to eql('+49308612906')
426
464
  end
427
465
 
428
466
  it "should use last object method" do
429
- model = model_klass.new(:phone1_method => "(030) 8 61 29 06")
467
+ model = model_klass.new(phone1_method: "(030) 8 61 29 06")
430
468
  model.country_code = 'NL'
431
469
  expect(model.normalized_phone1_method).to eql('+31308612906')
432
470
  model.country_code = 'DE'
433
471
  expect(model.normalized_phone1_method).to eql('+49308612906')
434
472
  model.country_code = nil
435
- expect(model.normalized_phone1_method(:country_code => nil)).to eql('+49308612906')
473
+ expect(model.normalized_phone1_method(country_code: nil)).to eql('+49308612906')
436
474
  end
437
475
  end
438
476
 
439
477
  describe 'using model#phony_normalize' do
440
478
  it "should not change normalized numbers (see #76)" do
441
- model = model_klass.new(:phone_number => "+31-(0)10-1234123")
442
- expect(model.valid?).to be true
479
+ model = model_klass.new(phone_number: "+31-(0)10-1234123")
480
+ expect(model).to be_valid
443
481
  expect(model.phone_number).to eql('+31101234123')
444
482
  end
445
483
 
446
484
  it "should set a normalized version of an attribute using :as option" do
447
- model_klass.phony_normalize :phone_number, :as => :phone_number_as_normalized
448
- model = model_klass.new(:phone_number => "+31-(0)10-1234123")
449
- expect(model.valid?).to be true
485
+ model_klass.phony_normalize :phone_number, as: :phone_number_as_normalized
486
+ model = model_klass.new(phone_number: "+31-(0)10-1234123")
487
+ expect(model).to be_valid
450
488
  expect(model.phone_number_as_normalized).to eql('+31101234123')
451
489
  end
452
490
 
453
491
  it "should not add a + using :add_plus option" do
454
- model_klass.phony_normalize :phone_number, :add_plus => false
455
- model = model_klass.new(:phone_number => "+31-(0)10-1234123")
456
- expect(model.valid?).to be true
492
+ model_klass.phony_normalize :phone_number, add_plus: false
493
+ model = model_klass.new(phone_number: "+31-(0)10-1234123")
494
+ expect(model).to be_valid
457
495
  expect(model.phone_number).to eql('31101234123')
458
496
  end
459
497
 
@@ -466,7 +504,7 @@ describe PhonyRails do
466
504
  end
467
505
 
468
506
  it "should raise a RuntimeError at validation if the :as option attribute doesn't exist" do
469
- dummy_klass.phony_normalize :phone_number, :as => :non_existing_attribute
507
+ dummy_klass.phony_normalize :phone_number, as: :non_existing_attribute
470
508
  dummy = dummy_klass.new
471
509
  expect(lambda {
472
510
  dummy.valid?
@@ -476,12 +514,12 @@ describe PhonyRails do
476
514
  end
477
515
 
478
516
  describe 'ActiveRecord' do
479
- let(:model_klass){ ActiveRecordModel }
480
- let(:dummy_klass){ ActiveRecordDummy }
517
+ let(:model_klass) { ActiveRecordModel }
518
+ let(:dummy_klass) { ActiveRecordDummy }
481
519
  it_behaves_like 'model with PhonyRails'
482
520
 
483
521
  it "should correctly keep a hard set country_code" do
484
- model = model_klass.new(:fax_number => '+1 978 555 0000')
522
+ model = model_klass.new(fax_number: '+1 978 555 0000')
485
523
  expect(model.valid?).to be true
486
524
  expect(model.fax_number).to eql('+19785550000')
487
525
  expect(model.save).to be true
@@ -545,8 +583,8 @@ describe PhonyRails do
545
583
  end
546
584
 
547
585
  describe 'Mongoid' do
548
- let(:model_klass){ MongoidModel }
549
- let(:dummy_klass){ MongoidDummy }
586
+ let(:model_klass) { MongoidModel }
587
+ let(:dummy_klass) { MongoidDummy }
550
588
  it_behaves_like 'model with PhonyRails'
551
589
  end
552
590
  end