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 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
@@ -18,6 +18,8 @@ class CPF
18
18
  @number
19
19
  end
20
20
 
21
+ private
22
+
21
23
  def check_cpf
22
24
  return false if @cleaned_number.length != 11 or @cleaned_number.scan(/\d/).uniq.length == 1
23
25
  @result == first_digit_verifier + second_digit_verifier
@@ -1,3 +1,3 @@
1
1
  module ValidatesCpf
2
- VERSION = "0.0.1"
2
+ VERSION = "0.1.0"
3
3
  end
@@ -0,0 +1,2 @@
1
+ class Admin < ActiveRecord::Base
2
+ end
@@ -0,0 +1,11 @@
1
+ class CreateAdmins < ActiveRecord::Migration
2
+ def self.up
3
+ create_table :admins do |u|
4
+ u.string :cpf
5
+ end
6
+ end
7
+
8
+ def self.down
9
+ drop_table :admins
10
+ end
11
+ end
@@ -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
- require File.expand_path(File.dirname(__FILE__) + "/../lib/validates_cpf")
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)
@@ -1,7 +1,5 @@
1
1
  require 'spec_helper'
2
2
 
3
- require File.expand_path(File.dirname(__FILE__) + "/../../lib/validates_cpf/cpf")
4
-
5
3
  describe CPF do
6
4
  context "should be invalid with" do
7
5
  it "blank number" do
@@ -1,5 +1,4 @@
1
1
  require 'spec_helper'
2
- require File.expand_path(File.dirname(__FILE__) + "/fake_app/user")
3
2
 
4
3
  describe CpfValidator do
5
4
  context "when cpf is invalid" do
@@ -12,6 +12,7 @@ Gem::Specification.new do |s|
12
12
  s.description = %q{Validates CPF, the simple way.}
13
13
 
14
14
  s.add_dependency("activerecord", ">= 3.0.0")
15
+ s.add_dependency("shoulda-matchers")
15
16
 
16
17
  s.rubyforge_project = "validates_cpf"
17
18
 
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.1
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: &8077760 !ruby/object:Gem::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: *8077760
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: &8076240 !ruby/object:Gem::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: *8076240
46
+ version_requirements: *8555240
36
47
  - !ruby/object:Gem::Dependency
37
48
  name: sqlite3
38
- requirement: &8075700 !ruby/object:Gem::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: *8075700
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