validates_phone_number 0.9.3 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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