validates_telephone 0.0.1 → 0.1.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.
- data/README.rdoc +9 -0
- data/lib/validates_telephone/remarkable/validate_as_telephone_matcher.rb +34 -0
- data/lib/validates_telephone/shoulda-matchers/validate_as_telephone_matcher.rb +45 -0
- data/lib/validates_telephone/version.rb +1 -1
- data/spec/remarkable/validate_as_telephone_matcher_spec.rb +26 -0
- data/spec/shoulda-matchers/validate_as_telephone_matcher_spec.rb +26 -0
- metadata +17 -13
data/README.rdoc
CHANGED
@@ -14,6 +14,15 @@ class User < ActiveRecord::Base
|
|
14
14
|
validates :telephone, :telephone => true
|
15
15
|
end
|
16
16
|
|
17
|
+
== Test
|
18
|
+
|
19
|
+
This gem has matchers for shoulda-matchers and remarkable.
|
20
|
+
|
21
|
+
If you are using shoulda-matchers, add this line to your spec_helper.rb :
|
22
|
+
require "validates_telephone/shoulda-matchers/validate_as_telephone_matcher"
|
23
|
+
If you are using remarkable, add this line to your spec_helper.rb :
|
24
|
+
require "validates_telephone/remarkable/validate_as_telephone_matcher"
|
25
|
+
|
17
26
|
== Future
|
18
27
|
|
19
28
|
Add Support for other countries. For now it only supports Brazil telephones.
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require 'remarkable/active_record'
|
2
|
+
|
3
|
+
module Remarkable
|
4
|
+
module ActiveRecord
|
5
|
+
module Matchers
|
6
|
+
class ValidateAsTelephoneMatcher < Remarkable::ActiveRecord::Base
|
7
|
+
arguments :telephone
|
8
|
+
|
9
|
+
collection_assertions :telephone_valid?, :allow_nil?, :formatted_number?
|
10
|
+
|
11
|
+
protected
|
12
|
+
|
13
|
+
def telephone_valid?
|
14
|
+
@subject.telephone = '123456'
|
15
|
+
@subject.valid?.errors[:telephone].should == ['is invalid']
|
16
|
+
end
|
17
|
+
|
18
|
+
def allow_nil?
|
19
|
+
@subject.telephone = nil
|
20
|
+
@subject.valid?.errors[:telephone].should == []
|
21
|
+
end
|
22
|
+
|
23
|
+
def formatted_number?
|
24
|
+
@subject.telephone = '1122223333'
|
25
|
+
@subject.valid?.telephone.should == '(11)2222-3333'
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
def validate_as_telephone(*args, &block)
|
30
|
+
ValidateAsTelephoneMatcher.new(*args, &block).spec(self)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
require "shoulda-matchers"
|
2
|
+
|
3
|
+
module Shoulda
|
4
|
+
module Matchers
|
5
|
+
module ActiveModel
|
6
|
+
def validate_as_telephone(attr)
|
7
|
+
ValidateAsTelephoneMatcher.new(attr)
|
8
|
+
end
|
9
|
+
|
10
|
+
class ValidateAsTelephoneMatcher < ValidationMatcher
|
11
|
+
def initialize(attribute)
|
12
|
+
@attribute = attribute
|
13
|
+
end
|
14
|
+
|
15
|
+
def description
|
16
|
+
"validate #{@attribute} as a valid Telephone number"
|
17
|
+
end
|
18
|
+
|
19
|
+
def failure_message
|
20
|
+
"expected #{@attribute} to be validated as a valid Telephone number"
|
21
|
+
end
|
22
|
+
|
23
|
+
def matches?(subject)
|
24
|
+
super(subject)
|
25
|
+
|
26
|
+
disallows_invalid_value and allows_valid_value and allows_nil_value
|
27
|
+
end
|
28
|
+
|
29
|
+
private
|
30
|
+
|
31
|
+
def disallows_invalid_value
|
32
|
+
disallows_value_of("123456")
|
33
|
+
end
|
34
|
+
|
35
|
+
def allows_valid_value
|
36
|
+
allows_value_of("(11)2222-3333")
|
37
|
+
end
|
38
|
+
|
39
|
+
def allows_nil_value
|
40
|
+
allows_value_of(nil)
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'remarkable/active_record'
|
3
|
+
|
4
|
+
describe Remarkable::ActiveRecord::Matchers::ValidateAsTelephoneMatcher do
|
5
|
+
context "on a attribute which validates telephone" do
|
6
|
+
it "should require a valid telephone" do
|
7
|
+
@user = User.new(:telephone => '123456')
|
8
|
+
@user.should validate_as_telephone(:telephone)
|
9
|
+
end
|
10
|
+
|
11
|
+
it "should allow a nil value" do
|
12
|
+
@user = User.new(:telephone => nil)
|
13
|
+
@user.should validate_as_telephone(:telephone)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
context "on a attribute which not validates telephone" do
|
18
|
+
before do
|
19
|
+
@user = Admin.new(:telephone => '123456')
|
20
|
+
end
|
21
|
+
|
22
|
+
it "should not require a valid telephone" do
|
23
|
+
@user.should_not validate_as_telephone(:telephone)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'shoulda-matchers'
|
3
|
+
|
4
|
+
describe Shoulda::Matchers::ActiveModel::ValidateAsTelephoneMatcher do
|
5
|
+
context "on a attribute which validates telephone" do
|
6
|
+
it "should require a valid telephone" do
|
7
|
+
@user = User.new(:telephone => '123456')
|
8
|
+
@user.should validate_as_telephone(:telephone)
|
9
|
+
end
|
10
|
+
|
11
|
+
it "should allow a nil value" do
|
12
|
+
@user = User.new(:telephone => nil)
|
13
|
+
@user.should validate_as_telephone(:telephone)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
context "on a attribute which not validates telephone" do
|
18
|
+
before do
|
19
|
+
@user = Admin.new(:telephone => '123456')
|
20
|
+
end
|
21
|
+
|
22
|
+
it "should not require a valid telephone" do
|
23
|
+
@user.should_not validate_as_telephone(:telephone)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: validates_telephone
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -13,7 +13,7 @@ date: 2012-02-21 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activerecord
|
16
|
-
requirement: &
|
16
|
+
requirement: &15519440 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 3.0.0
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *15519440
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: rake
|
27
|
-
requirement: &
|
27
|
+
requirement: &15517760 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *15517760
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: rspec
|
38
|
-
requirement: &
|
38
|
+
requirement: &15517220 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: 2.0.0
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *15517220
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: shoulda-matchers
|
49
|
-
requirement: &
|
49
|
+
requirement: &15516700 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: 1.0.0
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *15516700
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: remarkable_activerecord
|
60
|
-
requirement: &
|
60
|
+
requirement: &15516120 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - =
|
@@ -65,10 +65,10 @@ dependencies:
|
|
65
65
|
version: 4.0.0.alpha4
|
66
66
|
type: :development
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *15516120
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: sqlite3
|
71
|
-
requirement: &
|
71
|
+
requirement: &15515680 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ! '>='
|
@@ -76,7 +76,7 @@ dependencies:
|
|
76
76
|
version: '0'
|
77
77
|
type: :development
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *15515680
|
80
80
|
description: Validates Telephone and test it with macros in a simple way.
|
81
81
|
email: plribeiro3000@gmail.com
|
82
82
|
executables: []
|
@@ -90,12 +90,16 @@ files:
|
|
90
90
|
- README.rdoc
|
91
91
|
- Rakefile
|
92
92
|
- lib/validates_telephone.rb
|
93
|
+
- lib/validates_telephone/remarkable/validate_as_telephone_matcher.rb
|
94
|
+
- lib/validates_telephone/shoulda-matchers/validate_as_telephone_matcher.rb
|
93
95
|
- lib/validates_telephone/telephone.rb
|
94
96
|
- lib/validates_telephone/version.rb
|
95
97
|
- spec/fake_app/admin.rb
|
96
98
|
- spec/fake_app/db/create_admins.rb
|
97
99
|
- spec/fake_app/db/create_users.rb
|
98
100
|
- spec/fake_app/user.rb
|
101
|
+
- spec/remarkable/validate_as_telephone_matcher_spec.rb
|
102
|
+
- spec/shoulda-matchers/validate_as_telephone_matcher_spec.rb
|
99
103
|
- spec/spec_helper.rb
|
100
104
|
- spec/validates_telephone/telephone_spec.rb
|
101
105
|
- spec/validates_telephone_spec.rb
|