phony_rails 0.12.7 → 0.12.8
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/CHANGELOG.md +22 -0
- data/README.md +3 -1
- data/lib/phony_rails.rb +7 -2
- data/lib/phony_rails/version.rb +1 -1
- data/lib/validators/phony_validator.rb +1 -1
- data/spec/lib/phony_rails_spec.rb +50 -1
- data/spec/spec_helper.rb +7 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5f955ac8d52e7faa2965313a1d8643dce32d780d
|
4
|
+
data.tar.gz: 50cf60a64472724f47bfa733458a8182aaafe651
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ad42f17903eff99998805e0ae79609a7dd86e13fce1a27003448ac356fb65f01efdf8ad3449de11369c825bf9c25bdd7408c08c613074953663293642a9db756
|
7
|
+
data.tar.gz: 24e081e4b42f81dcd035c2b3afadb6c83e11c523bffe9e18fec3ea6a84f5dafc216d7904942d733816528b62476da00dcedec9d1b9e86f51bccc0de4e3e0acfc
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,27 @@
|
|
1
1
|
# Change Log
|
2
2
|
|
3
|
+
## [v0.12.8](https://github.com/joost/phony_rails/tree/v0.12.8) (2015-06-22)
|
4
|
+
|
5
|
+
[Full Changelog](https://github.com/joost/phony_rails/compare/v0.12.7...v0.12.8)
|
6
|
+
|
7
|
+
**Closed issues:**
|
8
|
+
|
9
|
+
- activerecord dependency [\#99](https://github.com/joost/phony_rails/issues/99)
|
10
|
+
|
11
|
+
- Using a number different from the country [\#97](https://github.com/joost/phony_rails/issues/97)
|
12
|
+
|
13
|
+
- UK 0203 numbers not handled correctly [\#95](https://github.com/joost/phony_rails/issues/95)
|
14
|
+
|
15
|
+
- Consider keeping a Changelog for changes in each version. [\#91](https://github.com/joost/phony_rails/issues/91)
|
16
|
+
|
17
|
+
- Phone numbers with extensions [\#78](https://github.com/joost/phony_rails/issues/78)
|
18
|
+
|
19
|
+
**Merged pull requests:**
|
20
|
+
|
21
|
+
- remove active\_record dependency [\#100](https://github.com/joost/phony_rails/pull/100) ([sbounmy](https://github.com/sbounmy))
|
22
|
+
|
23
|
+
- Add enforce\_record\_country option to phony\_normalize method [\#98](https://github.com/joost/phony_rails/pull/98) ([phillipp](https://github.com/phillipp))
|
24
|
+
|
3
25
|
## [v0.12.7](https://github.com/joost/phony_rails/tree/v0.12.7) (2015-06-18)
|
4
26
|
|
5
27
|
[Full Changelog](https://github.com/joost/phony_rails/compare/v0.12.6...v0.12.7)
|
data/README.md
CHANGED
@@ -106,7 +106,9 @@ You can validate against the normalized input as opposed to the raw input:
|
|
106
106
|
|
107
107
|
#### Allowing records country codes to not match phone number country codes
|
108
108
|
|
109
|
-
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.
|
109
|
+
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
|
+
|
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.
|
110
112
|
|
111
113
|
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:
|
112
114
|
|
data/lib/phony_rails.rb
CHANGED
@@ -76,7 +76,10 @@ module PhonyRails
|
|
76
76
|
# It also adds the country_code (number), eg. 31 for NL numbers.
|
77
77
|
def set_phony_normalized_numbers(attributes, options = {})
|
78
78
|
options = options.clone
|
79
|
-
|
79
|
+
if self.respond_to?(:country_code)
|
80
|
+
set_country_as = options[:enforce_record_country] ? :country_code : :default_country_code
|
81
|
+
options[set_country_as] ||= self.country_code
|
82
|
+
end
|
80
83
|
attributes.each do |attribute|
|
81
84
|
attribute_name = options[:as] || attribute
|
82
85
|
raise RuntimeError, "No attribute #{attribute_name} found on #{self.class.name} (PhonyRails)" if not self.class.attribute_method?(attribute_name)
|
@@ -94,11 +97,13 @@ module PhonyRails
|
|
94
97
|
# you've geocoded before calling this method!
|
95
98
|
def phony_normalize(*attributes)
|
96
99
|
options = attributes.last.is_a?(Hash) ? attributes.pop : {}
|
97
|
-
options.assert_valid_keys :country_number, :default_country_number, :country_code, :default_country_code, :add_plus, :as
|
100
|
+
options.assert_valid_keys :country_number, :default_country_number, :country_code, :default_country_code, :add_plus, :as, :enforce_record_country
|
98
101
|
if options[:as].present?
|
99
102
|
raise ArgumentError, ':as option can not be used on phony_normalize with multiple attribute names! (PhonyRails)' if attributes.size > 1
|
100
103
|
end
|
101
104
|
|
105
|
+
options[:enforce_record_country] = true if options[:enforce_record_country].nil?
|
106
|
+
|
102
107
|
# Add before validation that saves a normalized version of the phone number
|
103
108
|
self.before_validation do
|
104
109
|
set_phony_normalized_numbers(attributes, options)
|
data/lib/phony_rails/version.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# Uses the Phony.plausible method to validate an attribute.
|
2
2
|
# Usage:
|
3
3
|
# validate :phone_number, :phony_plausible => true
|
4
|
-
require '
|
4
|
+
require 'active_model'
|
5
5
|
class PhonyPlausibleValidator < ActiveModel::EachValidator
|
6
6
|
|
7
7
|
# Validates a String using Phony.plausible? method.
|
@@ -360,7 +360,7 @@ describe PhonyRails do
|
|
360
360
|
end
|
361
361
|
|
362
362
|
it "should accept supported options" do
|
363
|
-
options = [:country_number, :default_country_number, :country_code, :default_country_code, :add_plus, :as]
|
363
|
+
options = [:country_number, :default_country_number, :country_code, :default_country_code, :add_plus, :as, :enforce_record_country]
|
364
364
|
options.each do |option_sym|
|
365
365
|
expect(lambda {
|
366
366
|
dummy_klass.phony_normalize(:phone_number, option_sym => false)
|
@@ -493,6 +493,55 @@ describe PhonyRails do
|
|
493
493
|
model.reload
|
494
494
|
expect(model.fax_number).to eql('+61308612906')
|
495
495
|
end
|
496
|
+
|
497
|
+
context 'when enforce_record_country is turned off' do
|
498
|
+
let(:model_klass) { RelaxedActiveRecordModel }
|
499
|
+
let(:record) { model_klass.new }
|
500
|
+
|
501
|
+
before {
|
502
|
+
record.phone_number = phone_number
|
503
|
+
record.country_code = 'DE'
|
504
|
+
record.valid? # run the empty validation chain to execute the before hook (normalized the number)
|
505
|
+
}
|
506
|
+
|
507
|
+
context 'when the country_code attribute does not match the country number' do
|
508
|
+
context 'when the number is prefixed with a country number and a plus' do
|
509
|
+
let(:phone_number) { '+436601234567' }
|
510
|
+
|
511
|
+
it 'should not add the records country number' do
|
512
|
+
expect(record.phone_number).to eql('+436601234567')
|
513
|
+
end
|
514
|
+
end
|
515
|
+
|
516
|
+
# In this case it's not clear if there is a country number, so it should be added
|
517
|
+
context 'when the number is prefixed with a country number' do
|
518
|
+
let(:phone_number) { '436601234567' }
|
519
|
+
|
520
|
+
it 'should add the records country number' do
|
521
|
+
expect(record.phone_number).to eql('+49436601234567')
|
522
|
+
end
|
523
|
+
end
|
524
|
+
end
|
525
|
+
|
526
|
+
# This should be the case anyways
|
527
|
+
context 'when the country_code attribute matches the country number' do
|
528
|
+
context 'when the number includes a country number and a plus' do
|
529
|
+
let(:phone_number) { '+491721234567' }
|
530
|
+
|
531
|
+
it 'should not add the records country number' do
|
532
|
+
expect(record.phone_number).to eql('+491721234567')
|
533
|
+
end
|
534
|
+
end
|
535
|
+
|
536
|
+
context 'when the number has neither country number nor plus' do
|
537
|
+
let(:phone_number) { '01721234567' }
|
538
|
+
|
539
|
+
it 'should not add the records country number' do
|
540
|
+
expect(record.phone_number).to eql('+491721234567')
|
541
|
+
end
|
542
|
+
end
|
543
|
+
end
|
544
|
+
end
|
496
545
|
end
|
497
546
|
|
498
547
|
describe 'Mongoid' do
|
data/spec/spec_helper.rb
CHANGED
@@ -35,6 +35,13 @@ class ActiveRecordModel < ActiveRecord::Base
|
|
35
35
|
include SharedModelMethods
|
36
36
|
end
|
37
37
|
|
38
|
+
class RelaxedActiveRecordModel < ActiveRecord::Base
|
39
|
+
self.table_name = 'active_record_models'
|
40
|
+
attr_accessor :phone_number, :country_code
|
41
|
+
|
42
|
+
phony_normalize :phone_number, :enforce_record_country => false
|
43
|
+
end
|
44
|
+
|
38
45
|
class ActiveRecordDummy < ActiveRecordModel
|
39
46
|
end
|
40
47
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: phony_rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.12.
|
4
|
+
version: 0.12.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Joost Hietbrink
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-06-
|
11
|
+
date: 2015-06-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: phony
|