phony_rails 0.6.0 → 0.6.1

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- phony_rails (0.6.0)
4
+ phony_rails (0.6.1)
5
5
  activesupport (>= 3.0)
6
6
  countries (>= 0.8.2)
7
7
  phony (~> 2.1)
data/README.md CHANGED
@@ -83,9 +83,13 @@ so we can use:
83
83
 
84
84
  the i18n key is `:improbable_phone`
85
85
 
86
- You can also validate if a number has the correct country code:
86
+ You can also validate if a number has the correct country number:
87
87
 
88
- validates_plausible_phone :phone_number, :country_code => '61'
88
+ validates_plausible_phone :phone_number, :country_number => '61'
89
+
90
+ or correct country code:
91
+
92
+ validates_plausible_phone :phone_number, :country_code => 'AU'
89
93
 
90
94
  ### Display / Views
91
95
 
@@ -193,3 +197,5 @@ Say you want to find a record by a phone number. Best is to normalize user input
193
197
  5. Create new Pull Request
194
198
 
195
199
  Don't forget to add tests and run rspec before creating a pull request :)
200
+
201
+ See all contributors on https://github.com/joost/phony_rails/graphs/contributors.
@@ -1,3 +1,3 @@
1
1
  module PhonyRails
2
- VERSION = "0.6.0"
2
+ VERSION = "0.6.1"
3
3
  end
@@ -8,7 +8,7 @@ class PhonyPlausibleValidator < ActiveModel::EachValidator
8
8
  return if value.blank?
9
9
 
10
10
  @record = record
11
- @record.errors.add(attribute, error_message) if not Phony.plausible?(value, cc: country_code_or_country_number)
11
+ @record.errors.add(attribute, error_message) if not Phony.plausible?(value, cc: country_number)
12
12
  end
13
13
 
14
14
  private
@@ -17,14 +17,22 @@ class PhonyPlausibleValidator < ActiveModel::EachValidator
17
17
  options[:message] || :improbable_phone
18
18
  end
19
19
 
20
- def country_code_or_country_number
21
- options[:country_code] || record_country_number || record_country_code
20
+ def country_number
21
+ options[:country_number] || record_country_number || country_number_from_country_code
22
22
  end
23
23
 
24
24
  def record_country_number
25
25
  @record.country_number if @record.respond_to?(:country_number)
26
26
  end
27
27
 
28
+ def country_number_from_country_code
29
+ PhonyRails.country_number_for(country_code)
30
+ end
31
+
32
+ def country_code
33
+ options[:country_code] || record_country_code
34
+ end
35
+
28
36
  def record_country_code
29
37
  @record.country_code if @record.respond_to?(:country_code)
30
38
  end
@@ -38,6 +38,10 @@ ActiveRecord::Schema.define do
38
38
  create_table :australian_helpful_homes do |table|
39
39
  table.column :phone_number, :string
40
40
  end
41
+
42
+ create_table :polish_helpful_homes do |table|
43
+ table.column :phone_number, :string
44
+ end
41
45
  end
42
46
 
43
47
  #--------------------
@@ -79,13 +83,19 @@ end
79
83
  #--------------------
80
84
  class AustralianHelpfulHome < ActiveRecord::Base
81
85
  attr_accessor :phone_number
82
- validates_plausible_phone :phone_number, :country_code => "61"
86
+ validates_plausible_phone :phone_number, :country_number => "61"
87
+ end
88
+
89
+ #--------------------
90
+ class PolishHelpfulHome < ActiveRecord::Base
91
+ attr_accessor :phone_number
92
+ validates_plausible_phone :phone_number, :country_code => "PL"
83
93
  end
84
94
 
85
95
  #--------------------
86
96
  class BigHelpfulHome < ActiveRecord::Base
87
97
  attr_accessor :phone_number
88
- validates_plausible_phone :phone_number, :presence => true, :with => /^\+\d+/, :country_code => "33"
98
+ validates_plausible_phone :phone_number, :presence => true, :with => /^\+\d+/, :country_number => "33"
89
99
  end
90
100
 
91
101
  #-----------------------------------------------------------------------------------------------------------------------
@@ -95,6 +105,7 @@ end
95
105
  I18n.locale = :en
96
106
  VALID_NUMBER = '1 555 555 5555'
97
107
  AUSTRALIAN_NUMBER_WITH_COUNTRY_CODE = '61390133997'
108
+ POLISH_NUMBER_WITH_COUNTRY_CODE = '48600600600'
98
109
  FORMATTED_AUSTRALIAN_NUMBER_WITH_COUNTRY_CODE = '+61 390133997'
99
110
  FRENCH_NUMBER_WITH_COUNTRY_CODE = '33627899541'
100
111
  FORMATTED_FRENCH_NUMBER_WITH_COUNTRY_CODE = '+33 627899541'
@@ -280,7 +291,7 @@ describe ActiveModel::Validations::HelperMethods do
280
291
  end
281
292
 
282
293
  #--------------------
283
- context 'when a number must include a specific country code' do
294
+ context 'when a number must include a specific country number' do
284
295
 
285
296
  before(:each) do
286
297
  @home = AustralianHelpfulHome.new
@@ -309,6 +320,36 @@ describe ActiveModel::Validations::HelperMethods do
309
320
 
310
321
  end
311
322
 
323
+ #--------------------
324
+ context 'when a number must include a specific country code' do
325
+
326
+ before(:each) do
327
+ @home = PolishHelpfulHome.new
328
+ end
329
+
330
+ it "should validate an empty number" do
331
+ @home.should be_valid
332
+ end
333
+
334
+ it "should validate a valid number with the right country code" do
335
+ @home.phone_number = POLISH_NUMBER_WITH_COUNTRY_CODE
336
+ @home.should be_valid
337
+ end
338
+
339
+ it "should invalidate a valid number with the wrong country code" do
340
+ @home.phone_number = FRENCH_NUMBER_WITH_COUNTRY_CODE
341
+ @home.should_not be_valid
342
+ @home.errors.messages.should include(:phone_number => ["is an invalid number"])
343
+ end
344
+
345
+ it "should invalidate a valid number without a country code" do
346
+ @home.phone_number = VALID_NUMBER
347
+ @home.should_not be_valid
348
+ @home.errors.messages.should include(:phone_number => ["is an invalid number"])
349
+ end
350
+
351
+ end
352
+
312
353
  context 'when lots of things are being validated simultaneously' do
313
354
 
314
355
  before(:each) do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: phony_rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0
4
+ version: 0.6.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-01-28 00:00:00.000000000 Z
12
+ date: 2014-02-24 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: phony