phony_rails 0.14.4 → 0.14.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- MzI5ZjE3YTU1MjhiZTRiY2RjZjhhZDg0YjA0MGViZDNkNjI5OWVhYg==
5
- data.tar.gz: !binary |-
6
- OTc5ZGJhMTAyM2ZhNmVmNWZhODJmN2JiZWVjYzViMzNmMWUyY2NmNQ==
2
+ SHA1:
3
+ metadata.gz: 6e5820adc5e9ecff0a12904b4b8622784bcc13bf
4
+ data.tar.gz: 276760afba65090f145ac77fdd6e8bf28a8abf20
7
5
  SHA512:
8
- metadata.gz: !binary |-
9
- ODRhZGZmZDVjNjkxMjJiZjc3NGE3ZjI1NWFhYTg3OWQzMTJlMDc1ZTk0YTJm
10
- Y2NjYzQ0MDczZWVjODM0ZDE4MzQ5YjRlNjA5NzIwOTczNWJiOWMxNmE0MTdj
11
- Yzg2NjJlMjU5YTJkNDYwMWFlOWFiMDIwMTA3MDFjNWU0Yjk2N2E=
12
- data.tar.gz: !binary |-
13
- ZmMxYmY5NTU0MDcxOWJkN2JiMjY1NWU3MDhiNDA0MmUxMmZmNDc3OGM0YTMy
14
- YmQ2M2M4NGRjNzQ1MzE2Yzg2ODk3ZDVlMGFmZjYyYzY5ZjUzNjA3ODIyM2Fm
15
- MjM3MDdjZTU1NTc0OTlhNWU4ZTY1ZWZiMGI4MDI1MDJiOGIyNGM=
6
+ metadata.gz: a80c625610f3956da0b2841d78f6c6faffe5b66f8b1e24e74024a3071a63f450d221b984bf2d5cd80d3d052b409b9cfe2187bb0cb3536d5d5bf2c080eb7dd133
7
+ data.tar.gz: 048f69f27476c6590f8ebbef288ce38937821a1b06ef7de7b496e372fa086eb81710f3d864ea662e7cde442693af6efa50f17b0edd85a7a06a1a7531aa4b7f1b
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- phony_rails (0.14.4)
4
+ phony_rails (0.14.5)
5
5
  activesupport (>= 3.0)
6
6
  phony (~> 2.15)
7
7
 
data/README.md CHANGED
@@ -151,6 +151,8 @@ phony_normalize :phone_number, as: :phone_number_normalized, default_country_cod
151
151
  validates_plausible_phone :phone_number, normalized_country_code: 'US'
152
152
  ```
153
153
 
154
+ Validation supports phone numbers with extension, such as `+18181231234 x1234` or `'+1 (818)151-5483 #4312'` out-of-the-box.
155
+
154
156
  #### Allowing records country codes to not match phone number country codes
155
157
 
156
158
  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.
data/lib/phony_rails.rb CHANGED
@@ -106,7 +106,7 @@ module PhonyRails
106
106
  false
107
107
  end
108
108
 
109
- COMMON_EXTENSIONS = /[ ]*(ext|ex|x|xt|#|:)+[^0-9]*\(*([-0-9]{1,})\)*#?$/i
109
+ COMMON_EXTENSIONS = /[ ]*(ext|ex|x|xt|#|:)+[^0-9]*\(?([-0-9]{1,})\)?#?$/i
110
110
 
111
111
  def self.extract_extension(number_and_ext)
112
112
  return [nil, nil] if number_and_ext.nil?
@@ -199,7 +199,7 @@ end
199
199
  # check whether it is ActiveRecord or Mongoid being used
200
200
  ActiveRecord::Base.send :include, PhonyRails::Extension if defined?(ActiveRecord)
201
201
 
202
- ActiveModel::Model.send :include, PhonyRails::Extension if defined?(ActiveModel)
202
+ ActiveModel::Model.send :include, PhonyRails::Extension if defined?(ActiveModel::Model)
203
203
 
204
204
  if defined?(Mongoid)
205
205
  module Mongoid::Phony
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  module PhonyRails
3
- VERSION = '0.14.4'.freeze
3
+ VERSION = '0.14.5'.freeze
4
4
  end
@@ -10,6 +10,7 @@ class PhonyPlausibleValidator < ActiveModel::EachValidator
10
10
 
11
11
  @record = record
12
12
  value = PhonyRails.normalize_number(value.dup, default_country_code: normalized_country_code) if normalized_country_code
13
+ value = PhonyRails.extract_extension(value).first
13
14
  @record.errors.add(attribute, error_message) unless Phony.plausible?(value, cc: country_number)
14
15
  end
15
16
 
@@ -172,6 +172,8 @@ end
172
172
 
173
173
  I18n.locale = :en
174
174
  VALID_NUMBER = '1 555 555 5555'.freeze
175
+ VALID_NUMBER_WITH_EXTENSION = '1 555 555 5555 x123'.freeze
176
+ VALID_NUMBER_WITH_INVALID_EXTENSION = '1 555 555 5555 x1a'.freeze
175
177
  NORMALIZABLE_NUMBER = '555 555 5555'.freeze
176
178
  AUSTRALIAN_NUMBER_WITH_COUNTRY_CODE = '61390133997'.freeze
177
179
  POLISH_NUMBER_WITH_COUNTRY_CODE = '48600600600'.freeze
@@ -199,12 +201,23 @@ describe PhonyPlausibleValidator do
199
201
  expect(@home).to be_valid
200
202
  end
201
203
 
204
+ it 'should validate a valid number with extension' do
205
+ @home.phone_number = VALID_NUMBER_WITH_EXTENSION
206
+ expect(@home).to be_valid
207
+ end
208
+
202
209
  it 'should invalidate an invalid number' do
203
210
  @home.phone_number = INVALID_NUMBER
204
211
  expect(@home).to_not be_valid
205
212
  expect(@home.errors.messages).to include(phone_number: ['is an invalid number'])
206
213
  end
207
214
 
215
+ it 'should invalidate an valid number with invalid extension' do
216
+ @home.phone_number = VALID_NUMBER_WITH_INVALID_EXTENSION
217
+ expect(@home).to_not be_valid
218
+ expect(@home.errors.messages).to include(phone_number: ['is an invalid number'])
219
+ end
220
+
208
221
  it 'should invalidate not a number' do
209
222
  @home.phone_number = NOT_A_NUMBER
210
223
  expect(@home).to_not be_valid
metadata CHANGED
@@ -1,69 +1,69 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: phony_rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.14.4
4
+ version: 0.14.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joost Hietbrink
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-10-10 00:00:00.000000000 Z
11
+ date: 2017-02-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: phony
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: '2.15'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '2.15'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: activesupport
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ! '>='
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: '3.0'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ! '>='
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '3.0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: activerecord
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ! '>='
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
47
  version: '3.0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ! '>='
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '3.0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: mongoid
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ! '>='
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
61
  version: '3.0'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - ! '>='
66
+ - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: '3.0'
69
69
  description: This Gem adds useful methods to your Rails app to validate, display and
@@ -74,11 +74,11 @@ executables: []
74
74
  extensions: []
75
75
  extra_rdoc_files: []
76
76
  files:
77
- - .gitignore
78
- - .rspec
79
- - .rubocop.yml
80
- - .rubocop_todo.yml
81
- - .travis.yml
77
+ - ".gitignore"
78
+ - ".rspec"
79
+ - ".rubocop.yml"
80
+ - ".rubocop_todo.yml"
81
+ - ".travis.yml"
82
82
  - CHANGELOG.md
83
83
  - Gemfile
84
84
  - Gemfile.lock
@@ -117,17 +117,17 @@ require_paths:
117
117
  - lib
118
118
  required_ruby_version: !ruby/object:Gem::Requirement
119
119
  requirements:
120
- - - ! '>='
120
+ - - ">="
121
121
  - !ruby/object:Gem::Version
122
122
  version: '0'
123
123
  required_rubygems_version: !ruby/object:Gem::Requirement
124
124
  requirements:
125
- - - ! '>='
125
+ - - ">="
126
126
  - !ruby/object:Gem::Version
127
127
  version: '0'
128
128
  requirements: []
129
129
  rubyforge_project:
130
- rubygems_version: 2.4.5
130
+ rubygems_version: 2.5.1
131
131
  signing_key:
132
132
  specification_version: 4
133
133
  summary: This Gem adds useful methods to your Rails app to validate, display and save