validates_phone_number 0.9.3 → 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.
@@ -0,0 +1,7 @@
1
+ language: ruby
2
+ rvm:
3
+ - 1.8.7
4
+ - 1.9.2
5
+ - 1.9.3
6
+ - ree
7
+ - rbx
@@ -1,15 +1,47 @@
1
+ [![Build Status](https://secure.travis-ci.org/travisjeffery/validates_phone_number.png)](http://travis-ci.org/travisjeffery/validates_phone_number)
2
+
1
3
  # Validates Phone Number
2
4
 
3
- validates_phone_number adds validation methods to ActiveModel for validating
5
+ `validates_phone_number` adds validation methods to ActiveModel for validating
4
6
  phone numbers.
5
7
 
6
- For example, given a User model with a phone number attribute of `phone number`
8
+ ### Basic Usage
9
+
10
+ Given a User model with a phone number attribute of `phone number`
7
11
  that's a string, see if a given record has a valid phone number like so:
8
12
 
9
13
  ```
10
14
  class Person < ActiveRecord::Base
11
- validates :phone_number, :phone_number => true
15
+ validates :mobile, :phone_number => true
12
16
  end
13
17
  ```
14
18
 
15
- You can also specify the usual options like `allow_nil`, and `format`.
19
+ ### Message
20
+
21
+ Specify the message that's added to the errors collection by using the
22
+ `message` option:
23
+
24
+ ```
25
+ class Person < ActiveRecord::Base
26
+ validates :mobile, :phone_number => {:message => "invalid and can only be attributable to human error"}
27
+ end
28
+ ```
29
+
30
+ ### Format/Match by Regular Expression
31
+
32
+ You can specify that a number matches a regular expression by using the
33
+ `format` option:
34
+
35
+ ```
36
+ class Person < ActiveRecord::Base
37
+ validates :mobile, :phone_number => {:format => /\d{3}-\d{3}-\d{4}/}
38
+ end
39
+ ```
40
+
41
+ ### Allow Nil
42
+
43
+ ```
44
+ class Person < ActiveRecord::Base
45
+ validates :mobile, :phone_number => {:allow_nil => true}
46
+ end
47
+ ```
data/Rakefile CHANGED
@@ -1 +1,12 @@
1
1
  require "bundler/gem_tasks"
2
+ require 'rake/testtask'
3
+
4
+ desc 'Run tests'
5
+ Rake::TestTask.new(:test) do |t|
6
+ t.libs << 'lib'
7
+ t.libs << 'test'
8
+ t.pattern = 'test/**/*_test.rb'
9
+ t.verbose = true
10
+ end
11
+
12
+ task :default => :test
@@ -1,10 +1,5 @@
1
1
  require 'phone'
2
2
  Phoner::Phone.default_country_code = '1'
3
3
  require_relative "validates_phone_number/version"
4
+ require_relative "validates_phone_number/message"
4
5
  require_relative "validates_phone_number/validator"
5
- require 'phone'
6
-
7
-
8
- module ValidatesPhoneNumber
9
- # Your code goes here...
10
- end
@@ -0,0 +1,12 @@
1
+ module ValidatesPhoneNumber
2
+ module Message
3
+ DEFAULT_ERROR_MESSAGE = "%s is not a valid"
4
+
5
+ private
6
+
7
+ def error_message_for value
8
+ @message ||
9
+ DEFAULT_ERROR_MESSAGE % value
10
+ end
11
+ end
12
+ end
@@ -2,10 +2,13 @@ require 'active_model/validator'
2
2
 
3
3
  module ValidatesPhoneNumber
4
4
  class Validator < ActiveModel::EachValidator
5
+ include ValidatesPhoneNumber::Message
6
+
5
7
  def initialize options
6
8
  @type = options.delete(:type) || :string
7
9
  @allow_nil = options.delete(:allow_nil)
8
10
  @format = options.delete(:format)
11
+ @message = options.delete(:message)
9
12
  super
10
13
  end
11
14
 
@@ -13,7 +16,8 @@ module ValidatesPhoneNumber
13
16
  return if @allow_nil && value.nil?
14
17
  return if Phoner::Phone.valid? value
15
18
  return if value =~ @format
16
- record.errors.add attr_name, "'#{value}' is not a valid"
19
+ message = error_message_for value
20
+ record.errors.add attr_name, message
17
21
  end
18
22
  end
19
23
  end
@@ -1,3 +1,3 @@
1
1
  module ValidatesPhoneNumber
2
- VERSION = "0.9.3"
2
+ VERSION = "1.0.0"
3
3
  end
@@ -1,9 +1,25 @@
1
+ unless Kernel.respond_to?(:require_relative)
2
+ module Kernel
3
+ def require_relative(path)
4
+ require File.join(File.dirname(caller[0]), path.to_str)
5
+ end
6
+ end
7
+ end
8
+
1
9
  ENV['RAILS_ENV'] = 'minitest'
2
- require 'minitest/autorun'
10
+ begin
11
+ require 'minitest/autorun'
12
+ rescue LoadError
13
+ require 'rubygems'
14
+ require 'minitest/unit'
15
+ MiniTest::Unit.autorun
16
+ end
17
+
3
18
  require 'active_model'
4
19
  require 'active_model/validations'
5
20
  require 'active_record'
6
21
  require 'action_view'
22
+
7
23
  require_relative '../lib/validates_phone_number'
8
24
 
9
25
  ActiveRecord::Base.establish_connection({:adapter => 'sqlite3', :database => ':memory:'})
@@ -23,28 +23,36 @@ class TestValidator < MiniTest::Unit::TestCase
23
23
  assert @person.valid?
24
24
  end
25
25
 
26
- def test_allow_nil_option_off
26
+ def test_allow_nil_option_defaults_to_false
27
27
  Person.validates :phone_number, :phone_number => true
28
28
  @person.phone_number = nil
29
29
  assert !@person.valid?
30
30
  end
31
31
 
32
- def test_allow_nil_option_on
32
+ def test_nil_is_record_record_if_allow_nil
33
33
  Person.validates :phone_number, :phone_number => {:allow_nil => true}
34
34
  @person.phone_number = nil
35
35
  assert @person.valid?
36
36
  end
37
37
 
38
- def test_valid_record_by_format_option_off
38
+ def test_invalid_record_by_format_option
39
39
  Person.validates :phone_number, :phone_number => true
40
40
  @person.phone_number = "555^555^555^5555"
41
41
  assert !@person.valid?
42
42
  end
43
43
 
44
- def test_valid_record_by_format_option_on
44
+ def test_valid_record_by_format_option
45
45
  Person.validates :phone_number, :phone_number => {:format => /(\d+\^){3}\d+/}
46
46
  @person.phone_number = "555^555^555^5555"
47
47
  assert @person.valid?
48
48
  end
49
+
50
+ def test_specify_message
51
+ Person.validates :phone_number, :phone_number => {:message => "invalid and can only be attributable to human error"}
52
+ @person.phone_number = nil
53
+ @person.valid?
54
+ assert_equal 1, @person.errors.size
55
+ assert_match /invalid and can only be attributable to human error/, @person.errors.full_messages.first
56
+ end
49
57
  end
50
58
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: validates_phone_number
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.3
4
+ version: 1.0.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-01-02 00:00:00.000000000Z
12
+ date: 2012-01-03 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: minitest
16
- requirement: &70140013434860 !ruby/object:Gem::Requirement
16
+ requirement: &70335761603660 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - =
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 2.10.0
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *70140013434860
24
+ version_requirements: *70335761603660
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rails
27
- requirement: &70140013434140 !ruby/object:Gem::Requirement
27
+ requirement: &70335761603140 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - =
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: 3.1.0
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *70140013434140
35
+ version_requirements: *70335761603140
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: phone
38
- requirement: &70140013433460 !ruby/object:Gem::Requirement
38
+ requirement: &70335761602660 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - =
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '1.1'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *70140013433460
46
+ version_requirements: *70335761602660
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: phone
49
- requirement: &70140013433000 !ruby/object:Gem::Requirement
49
+ requirement: &70335761602200 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - =
@@ -54,7 +54,7 @@ dependencies:
54
54
  version: '1.1'
55
55
  type: :runtime
56
56
  prerelease: false
57
- version_requirements: *70140013433000
57
+ version_requirements: *70335761602200
58
58
  description: Adds validation methods to ActiveModel for validating phone numbers.
59
59
  email:
60
60
  - t@travisjeffery.com
@@ -63,10 +63,12 @@ extensions: []
63
63
  extra_rdoc_files: []
64
64
  files:
65
65
  - .gitignore
66
+ - .travis.yml
66
67
  - Gemfile
67
68
  - README.markdown
68
69
  - Rakefile
69
70
  - lib/validates_phone_number.rb
71
+ - lib/validates_phone_number/message.rb
70
72
  - lib/validates_phone_number/validator.rb
71
73
  - lib/validates_phone_number/version.rb
72
74
  - test/test_helper.rb