validates_cpf 0.2.2 → 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.
data/.gitignore CHANGED
@@ -2,4 +2,4 @@
2
2
  .bundle
3
3
  .rvmrc
4
4
  Gemfile.lock
5
- pkg/*
5
+ pkg/*
data/LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ (The MIT License)
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ 'Software'), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
17
+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
18
+ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
19
+ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
20
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.rdoc CHANGED
@@ -1,6 +1,6 @@
1
1
  = ValidatesCPF {<img src="https://secure.travis-ci.org/plribeiro3000/validates_cpf.png" />}[http://travis-ci.org/plribeiro3000/validates_cpf]
2
2
 
3
- Rails gem to validate CPF. Don't forget to check {ValidatesCnpj}[https://github.com/plribeiro3000/validates_cnpj] and {ValidatesTelephone}[https://github.com/plribeiro3000/validates_telephone].
3
+ Rails gem to validate CPF. Don't forget to check {ValidatesCnpj}[https://github.com/plribeiro3000/validates_cnpj], {ValidatesTelephone}[https://github.com/plribeiro3000/validates_telephone] and {ValidatesHost}[https://github.com/plribeiro3000/validates_host].
4
4
 
5
5
  == Install
6
6
 
@@ -10,23 +10,24 @@ gem install validates_cpf
10
10
 
11
11
  Lets say you have a model with "cpf" string column that you want to be a valid CPF. Just add this to your model:
12
12
 
13
+ ```ruby
13
14
  class User < ActiveRecord::Base
14
15
  validates :cpf, :cpf => true
15
16
  end
17
+ ```
16
18
 
17
19
  == Test
18
20
 
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_cpf/shoulda-matchers/validate_as_cpf_matcher"
23
- If you are using remarkable, add this line to your spec_helper.rb :
24
- require "validates_cpf/remarkable/validate_as_cpf_matcher"
21
+ This gem has buitin matchers for shoulda-matchers and remarkable.
25
22
 
26
23
  === How?
27
24
 
28
- You should use validates_as_cpf(:attribute) just like any other shoulda or remarkable matcher.
25
+ You should use require_a_valid_cpf(:attribute) or skip the attribute part if the attribute name is cpf.
29
26
 
30
27
  == Goal
31
28
 
32
- This project is based on brcpfcnpj gem and his intention it to mantain a cleaner code to validate CPF and easy matchers to test it.
29
+ This project is based on brcpfcnpj gem and his intention it to mantain a cleaner code to validate CPF and easy matchers to test it.
30
+
31
+ == Contribute
32
+
33
+ Fork the project and send me a Pull Request. =D
@@ -0,0 +1,29 @@
1
+ require 'remarkable/active_model'
2
+
3
+ module Remarkable
4
+ module ActiveModel
5
+ module Matchers
6
+ class RequireAValidCpfMatcher < Remarkable::ActiveModel::Base
7
+ arguments :cpf
8
+
9
+ collection_assertions :disallow_invalid_value, :allow_valid_value
10
+
11
+ protected
12
+
13
+ def disallow_invalid_value
14
+ @subject.cpf = '123456'
15
+ @subject.valid?.errors[:cpf].should == ['is invalid']
16
+ end
17
+
18
+ def allow_valid_value
19
+ @subject.cpf = '764.579.437-21'
20
+ @subject.valid?.errors[:cpf].should == []
21
+ end
22
+ end
23
+
24
+ def require_a_valid_cpf(*args, &block)
25
+ RequireAValidCpfMatcher.new(*args, &block).spec(self)
26
+ end
27
+ end
28
+ end
29
+ end
@@ -3,27 +3,23 @@ require "shoulda-matchers"
3
3
  module Shoulda
4
4
  module Matchers
5
5
  module ActiveModel
6
- def validate_as_cpf(attr)
7
- ValidateAsCpfMatcher.new(attr)
6
+ def require_a_valid_cpf(attr = :cpf)
7
+ RequireAValidCpfMatcher.new(attr)
8
8
  end
9
9
 
10
- class ValidateAsCpfMatcher < ValidationMatcher
10
+ class RequireAValidCpfMatcher < ValidationMatcher
11
11
  def initialize(attribute)
12
12
  @attribute = attribute
13
13
  end
14
14
 
15
15
  def description
16
- "validate #{@attribute} as a valid CPF number"
17
- end
18
-
19
- def failure_message
20
- "expected #{@attribute} to be validated as a valid CPF number"
16
+ "require a valid CPF number"
21
17
  end
22
18
 
23
19
  def matches?(subject)
24
20
  super(subject)
25
21
 
26
- disallows_invalid_value and allows_valid_value and allows_nil_value
22
+ disallows_invalid_value and allows_valid_value
27
23
  end
28
24
 
29
25
  private
@@ -35,10 +31,6 @@ module Shoulda
35
31
  def allows_valid_value
36
32
  allows_value_of("897.546.112-20")
37
33
  end
38
-
39
- def allows_nil_value
40
- allows_value_of(nil)
41
- end
42
34
  end
43
35
  end
44
36
  end
@@ -1,3 +1,3 @@
1
1
  module ValidatesCpf
2
- VERSION = "0.2.2"
2
+ VERSION = "1.0.0"
3
3
  end
data/lib/validates_cpf.rb CHANGED
@@ -1,6 +1,9 @@
1
- require "active_model"
2
1
  require "validates_cpf/cpf"
3
2
 
3
+ #Rspec Matchers
4
+ require "validates_cpf/shoulda-matchers/require_a_valid_cpf_matcher" if defined?(::Shoulda)
5
+ require "validates_cpf/remarkable/require_a_valid_cpf_matcher" if defined?(::Remarkable)
6
+
4
7
  class CpfValidator < ActiveModel::EachValidator
5
8
  def validate_each(record, attribute, value)
6
9
  record.errors[attribute] << I18n.t("errors.messages.invalid") unless CPF.new(value).valid?
@@ -1,7 +1,8 @@
1
1
  class CreateAdmins < ActiveRecord::Migration
2
2
  def self.up
3
- create_table :admins do |u|
4
- u.string :cpf
3
+ create_table :admins do |a|
4
+ a.string :cpf
5
+ a.string :name
5
6
  end
6
7
  end
7
8
 
@@ -2,6 +2,7 @@ class CreateUsers < ActiveRecord::Migration
2
2
  def self.up
3
3
  create_table :users do |u|
4
4
  u.string :cpf
5
+ u.string :name
5
6
  end
6
7
  end
7
8
 
@@ -0,0 +1,20 @@
1
+ require 'spec_helper'
2
+ require 'remarkable/active_model'
3
+
4
+ describe Remarkable::ActiveModel::Matchers::RequireAValidCpfMatcher do
5
+ before :each do
6
+ @user = User.new
7
+ end
8
+
9
+ it "should accept on cpf" do
10
+ @user.should require_a_valid_cpf(:cpf)
11
+ end
12
+
13
+ it "should accept without a specified attribute" do
14
+ @user.should require_a_valid_cpf
15
+ end
16
+
17
+ it "should reject on name" do
18
+ @user.should_not require_a_valid_cpf(:name)
19
+ end
20
+ end
@@ -0,0 +1,20 @@
1
+ require 'spec_helper'
2
+ require 'shoulda-matchers'
3
+
4
+ describe Shoulda::Matchers::ActiveModel::RequireAValidCpfMatcher do
5
+ before :each do
6
+ @user = User.new
7
+ end
8
+
9
+ it "should accept on cpf" do
10
+ @user.should require_a_valid_cpf(:cpf)
11
+ end
12
+
13
+ it "should accept without a specified attribute" do
14
+ @user.should require_a_valid_cpf
15
+ end
16
+
17
+ it "should reject on name" do
18
+ @user.should_not require_a_valid_cpf(:name)
19
+ end
20
+ end
@@ -10,7 +10,7 @@ describe CpfValidator do
10
10
  @user.valid?.should be_false
11
11
  end
12
12
 
13
- it "should set an error on attribute" do
13
+ it "should set an error message on attribute" do
14
14
  @user.valid?
15
15
  @user.errors[:cpf].should == ['is invalid']
16
16
  end
@@ -25,7 +25,7 @@ describe CpfValidator do
25
25
  @user.valid?.should be_true
26
26
  end
27
27
 
28
- it "should not set an error on attribute" do
28
+ it "should not set an error message on attribute" do
29
29
  @user.valid?
30
30
  @user.errors[:cpf].should be_blank
31
31
  end
@@ -22,7 +22,7 @@ Gem::Specification.new do |s|
22
22
 
23
23
  s.add_development_dependency "rake"
24
24
  s.add_development_dependency "rspec", ">= 2.0.0"
25
- s.add_development_dependency "shoulda-matchers", ">= 1.0.0"
26
- s.add_development_dependency "remarkable_activerecord", "= 4.0.0.alpha4"
25
+ s.add_development_dependency "shoulda-matchers", ">= 1.2.0"
26
+ s.add_development_dependency "remarkable_activerecord", ">= 4.0.0.alpha4"
27
27
  s.add_development_dependency "sqlite3"
28
28
  end
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.2.2
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-02-21 00:00:00.000000000 Z
12
+ date: 2012-07-24 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activerecord
16
- requirement: &19547780 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,15 @@ dependencies:
21
21
  version: 3.0.0
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *19547780
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: 3.0.0
25
30
  - !ruby/object:Gem::Dependency
26
31
  name: rake
27
- requirement: &19545400 !ruby/object:Gem::Requirement
32
+ requirement: !ruby/object:Gem::Requirement
28
33
  none: false
29
34
  requirements:
30
35
  - - ! '>='
@@ -32,10 +37,15 @@ dependencies:
32
37
  version: '0'
33
38
  type: :development
34
39
  prerelease: false
35
- version_requirements: *19545400
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
36
46
  - !ruby/object:Gem::Dependency
37
47
  name: rspec
38
- requirement: &19543920 !ruby/object:Gem::Requirement
48
+ requirement: !ruby/object:Gem::Requirement
39
49
  none: false
40
50
  requirements:
41
51
  - - ! '>='
@@ -43,32 +53,47 @@ dependencies:
43
53
  version: 2.0.0
44
54
  type: :development
45
55
  prerelease: false
46
- version_requirements: *19543920
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: 2.0.0
47
62
  - !ruby/object:Gem::Dependency
48
63
  name: shoulda-matchers
49
- requirement: &19542960 !ruby/object:Gem::Requirement
64
+ requirement: !ruby/object:Gem::Requirement
50
65
  none: false
51
66
  requirements:
52
67
  - - ! '>='
53
68
  - !ruby/object:Gem::Version
54
- version: 1.0.0
69
+ version: 1.2.0
55
70
  type: :development
56
71
  prerelease: false
57
- version_requirements: *19542960
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: 1.2.0
58
78
  - !ruby/object:Gem::Dependency
59
79
  name: remarkable_activerecord
60
- requirement: &19541760 !ruby/object:Gem::Requirement
80
+ requirement: !ruby/object:Gem::Requirement
61
81
  none: false
62
82
  requirements:
63
- - - =
83
+ - - ! '>='
64
84
  - !ruby/object:Gem::Version
65
85
  version: 4.0.0.alpha4
66
86
  type: :development
67
87
  prerelease: false
68
- version_requirements: *19541760
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: 4.0.0.alpha4
69
94
  - !ruby/object:Gem::Dependency
70
95
  name: sqlite3
71
- requirement: &19541020 !ruby/object:Gem::Requirement
96
+ requirement: !ruby/object:Gem::Requirement
72
97
  none: false
73
98
  requirements:
74
99
  - - ! '>='
@@ -76,7 +101,12 @@ dependencies:
76
101
  version: '0'
77
102
  type: :development
78
103
  prerelease: false
79
- version_requirements: *19541020
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
80
110
  description: Validates CPF and test it with matchers in a simple way.
81
111
  email: plribeiro3000@gmail.com
82
112
  executables: []
@@ -86,21 +116,22 @@ files:
86
116
  - .gitignore
87
117
  - .rspec
88
118
  - Gemfile
119
+ - LICENSE
89
120
  - README.rdoc
90
121
  - Rakefile
91
122
  - lib/validates_cpf.rb
92
123
  - lib/validates_cpf/cpf.rb
93
- - lib/validates_cpf/remarkable/validate_as_cpf_matcher.rb
94
- - lib/validates_cpf/shoulda-matchers/validate_as_cpf_matcher.rb
124
+ - lib/validates_cpf/remarkable/require_a_valid_cpf_matcher.rb
125
+ - lib/validates_cpf/shoulda-matchers/require_a_valid_cpf_matcher.rb
95
126
  - lib/validates_cpf/version.rb
96
127
  - spec/fake_app/admin.rb
97
128
  - spec/fake_app/db/create_admins.rb
98
129
  - spec/fake_app/db/create_users.rb
99
130
  - spec/fake_app/user.rb
100
- - spec/remarkable/validate_as_cpf_matcher_spec.rb
101
- - spec/shoulda-matchers/validate_as_cpf_matcher_spec.rb
102
131
  - spec/spec_helper.rb
103
132
  - spec/validates_cpf/cpf_spec.rb
133
+ - spec/validates_cpf/remarkable/require_a_valid_cpf_matcher_spec.rb
134
+ - spec/validates_cpf/shoulda-matchers/require_a_valid_cpf_matcher_spec.rb
104
135
  - spec/validates_cpf_spec.rb
105
136
  - validates_cpf.gemspec
106
137
  homepage: ''
@@ -123,7 +154,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
123
154
  version: '0'
124
155
  requirements: []
125
156
  rubyforge_project: validates_cpf
126
- rubygems_version: 1.8.10
157
+ rubygems_version: 1.8.24
127
158
  signing_key:
128
159
  specification_version: 3
129
160
  summary: CPF Validation GEM
@@ -1,34 +0,0 @@
1
- require 'remarkable/active_record'
2
-
3
- module Remarkable
4
- module ActiveRecord
5
- module Matchers
6
- class ValidateAsCpfMatcher < Remarkable::ActiveRecord::Base
7
- arguments :cpf
8
-
9
- collection_assertions :cpf_valid?, :allow_nil?, :formatted_number?
10
-
11
- protected
12
-
13
- def cpf_valid?
14
- @subject.cpf = '123456'
15
- @subject.valid?.errors[:cpf].should == ['is invalid']
16
- end
17
-
18
- def allow_nil?
19
- @subject.cpf = nil
20
- @subject.valid?.errors[:cpf].should == []
21
- end
22
-
23
- def formatted_number?
24
- @subject.cpf = '55658208394'
25
- @subject.valid?.cpf.should == '556.582.083-94'
26
- end
27
- end
28
-
29
- def validate_as_cpf(*args, &block)
30
- ValidateAsCpfMatcher.new(*args, &block).spec(self)
31
- end
32
- end
33
- end
34
- end
@@ -1,26 +0,0 @@
1
- require 'spec_helper'
2
- require 'remarkable/active_record'
3
-
4
- describe Remarkable::ActiveRecord::Matchers::ValidateAsCpfMatcher do
5
- context "on a attribute which validates cpf" do
6
- it "should require a valid CPF" do
7
- @user = User.new(:cpf => '123456')
8
- @user.should validate_as_cpf(:cpf)
9
- end
10
-
11
- it "should allow a nil value" do
12
- @user = User.new(:cpf => nil)
13
- @user.should validate_as_cpf(:cpf)
14
- end
15
- end
16
-
17
- context "on a attribute which not validates cpf" do
18
- before do
19
- @user = Admin.new(:cpf => '123456')
20
- end
21
-
22
- it "should not require a valid CPF" do
23
- @user.should_not validate_as_cpf(:cpf)
24
- end
25
- end
26
- end
@@ -1,26 +0,0 @@
1
- require 'spec_helper'
2
- require 'shoulda-matchers'
3
-
4
- describe Shoulda::Matchers::ActiveModel::ValidateAsCpfMatcher do
5
- context "on a attribute which validates cpf" do
6
- it "should require a valid CPF" do
7
- @user = User.new(:cpf => '123456')
8
- @user.should validate_as_cpf(:cpf)
9
- end
10
-
11
- it "should allow a nil value" do
12
- @user = User.new(:cpf => nil)
13
- @user.should validate_as_cpf(:cpf)
14
- end
15
- end
16
-
17
- context "on a attribute which not validates cpf" do
18
- before do
19
- @user = Admin.new(:cpf => '123456')
20
- end
21
-
22
- it "should not require a valid CPF" do
23
- @user.should_not validate_as_cpf(:cpf)
24
- end
25
- end
26
- end