validates_cpf 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 +8 -0
- data/lib/shoulda-matchers/validate_as_cpf_matcher.rb +48 -0
- data/lib/validates_cpf/cpf.rb +2 -0
- data/lib/validates_cpf/version.rb +1 -1
- data/spec/fake_app/admin.rb +2 -0
- data/spec/fake_app/db/create_admins.rb +11 -0
- data/spec/shoulda-matchers/validate_as_cpf_matcher_spec.rb +25 -0
- data/spec/spec_helper.rb +5 -3
- data/spec/validates_cpf/cpf_spec.rb +0 -2
- data/spec/validates_cpf_spec.rb +0 -1
- data/validates_cpf.gemspec +1 -0
- metadata +22 -7
data/README.rdoc
CHANGED
@@ -14,6 +14,14 @@ class User < ActiveRecord::Base
|
|
14
14
|
validates :cpf, :cpf => true
|
15
15
|
end
|
16
16
|
|
17
|
+
== Test
|
18
|
+
|
19
|
+
Only Rspec supported at the moment and has shoulda-matchers as dependecy.
|
20
|
+
|
21
|
+
=== How?
|
22
|
+
|
23
|
+
You should use validates_as_cpf(:attribute) just like any other shoulda matcher.
|
24
|
+
|
17
25
|
== Special Thanks
|
18
26
|
|
19
27
|
This project is based on brcpfcnpj gem and his intention it to mantain a cleaner code to validate CPF and macros for test it.
|
@@ -0,0 +1,48 @@
|
|
1
|
+
module Shoulda
|
2
|
+
module Matchers
|
3
|
+
module ActiveModel
|
4
|
+
def validate_as_cpf(attr)
|
5
|
+
ValidateAsCpfMatcher.new(attr)
|
6
|
+
end
|
7
|
+
|
8
|
+
class ValidateAsCpfMatcher < ValidationMatcher
|
9
|
+
include Helpers
|
10
|
+
|
11
|
+
def initialize(attribute)
|
12
|
+
@attribute = attribute
|
13
|
+
end
|
14
|
+
|
15
|
+
def with_message(message)
|
16
|
+
@message = message if message
|
17
|
+
self
|
18
|
+
end
|
19
|
+
|
20
|
+
def description
|
21
|
+
"validate #{@attribute} as a valid CPF number"
|
22
|
+
end
|
23
|
+
|
24
|
+
def matches?(subject)
|
25
|
+
super(subject)
|
26
|
+
|
27
|
+
disallows_invalid_value &&
|
28
|
+
allows_valid_value &&
|
29
|
+
allows_nil_value
|
30
|
+
end
|
31
|
+
|
32
|
+
private
|
33
|
+
|
34
|
+
def disallows_invalid_value
|
35
|
+
disallows_value_of("123456", @message)
|
36
|
+
end
|
37
|
+
|
38
|
+
def allows_valid_value
|
39
|
+
allows_value_of("897.546.112-20", @message)
|
40
|
+
end
|
41
|
+
|
42
|
+
def allows_nil_value
|
43
|
+
allows_value_of(nil, @message)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
data/lib/validates_cpf/cpf.rb
CHANGED
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Shoulda::Matchers::ActiveModel::ValidateAsCpfMatcher do
|
4
|
+
context "on a attribute which validates cpf" do
|
5
|
+
it "should require a valid CPF" do
|
6
|
+
@user = User.new(:cpf => '123456')
|
7
|
+
@user.should validate_as_cpf(:cpf)
|
8
|
+
end
|
9
|
+
|
10
|
+
it "should accept a nil CPF" do
|
11
|
+
@user = User.new(:cpf => nil)
|
12
|
+
@user.should validate_as_cpf(:cpf)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
context "on a attribute which not validates cpf" do
|
17
|
+
before do
|
18
|
+
@user = Admin.new(:cpf => '123456')
|
19
|
+
end
|
20
|
+
|
21
|
+
it "should not require a valid CPF" do
|
22
|
+
@user.should_not validate_as_cpf(:cpf)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,10 +1,12 @@
|
|
1
1
|
require "rubygems"
|
2
2
|
require "rspec"
|
3
3
|
require "active_record"
|
4
|
+
require "shoulda-matchers"
|
4
5
|
|
5
|
-
|
6
|
+
Dir.glob(File.dirname(__FILE__) + "/../lib/**/*.rb").each { |file| require file }
|
7
|
+
Dir.glob(File.dirname(__FILE__) + "/fake_app/**/*.rb").each { |file| require file }
|
6
8
|
|
7
9
|
ActiveRecord::Base.establish_connection(:adapter => "sqlite3", :database => ":memory:")
|
8
|
-
require File.dirname(__FILE__) + "/fake_app/db/create_users"
|
9
10
|
|
10
|
-
CreateUsers.migrate(:up)
|
11
|
+
CreateUsers.migrate(:up)
|
12
|
+
CreateAdmins.migrate(:up)
|
data/spec/validates_cpf_spec.rb
CHANGED
data/validates_cpf.gemspec
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: validates_cpf
|
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-20 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activerecord
|
16
|
-
requirement: &
|
16
|
+
requirement: &8557480 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,21 @@ dependencies:
|
|
21
21
|
version: 3.0.0
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *8557480
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: shoulda-matchers
|
27
|
+
requirement: &8556960 !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
29
|
+
requirements:
|
30
|
+
- - ! '>='
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '0'
|
33
|
+
type: :runtime
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: *8556960
|
25
36
|
- !ruby/object:Gem::Dependency
|
26
37
|
name: rspec
|
27
|
-
requirement: &
|
38
|
+
requirement: &8555240 !ruby/object:Gem::Requirement
|
28
39
|
none: false
|
29
40
|
requirements:
|
30
41
|
- - ! '>='
|
@@ -32,10 +43,10 @@ dependencies:
|
|
32
43
|
version: '0'
|
33
44
|
type: :development
|
34
45
|
prerelease: false
|
35
|
-
version_requirements: *
|
46
|
+
version_requirements: *8555240
|
36
47
|
- !ruby/object:Gem::Dependency
|
37
48
|
name: sqlite3
|
38
|
-
requirement: &
|
49
|
+
requirement: &8554720 !ruby/object:Gem::Requirement
|
39
50
|
none: false
|
40
51
|
requirements:
|
41
52
|
- - ! '>='
|
@@ -43,7 +54,7 @@ dependencies:
|
|
43
54
|
version: '0'
|
44
55
|
type: :development
|
45
56
|
prerelease: false
|
46
|
-
version_requirements: *
|
57
|
+
version_requirements: *8554720
|
47
58
|
description: Validates CPF, the simple way.
|
48
59
|
email: plribeiro3000@gmail.com
|
49
60
|
executables: []
|
@@ -55,11 +66,15 @@ files:
|
|
55
66
|
- Gemfile
|
56
67
|
- README.rdoc
|
57
68
|
- Rakefile
|
69
|
+
- lib/shoulda-matchers/validate_as_cpf_matcher.rb
|
58
70
|
- lib/validates_cpf.rb
|
59
71
|
- lib/validates_cpf/cpf.rb
|
60
72
|
- lib/validates_cpf/version.rb
|
73
|
+
- spec/fake_app/admin.rb
|
74
|
+
- spec/fake_app/db/create_admins.rb
|
61
75
|
- spec/fake_app/db/create_users.rb
|
62
76
|
- spec/fake_app/user.rb
|
77
|
+
- spec/shoulda-matchers/validate_as_cpf_matcher_spec.rb
|
63
78
|
- spec/spec_helper.rb
|
64
79
|
- spec/validates_cpf/cpf_spec.rb
|
65
80
|
- spec/validates_cpf_spec.rb
|