validates_cnpj 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/lib/remarkable/validate_as_cnpj_matcher.rb +34 -0
- data/lib/shoulda-matchers/validate_as_cnpj_matcher.rb +45 -0
- data/lib/validates_cnpj/version.rb +1 -1
- data/spec/remarkable/validate_as_cnpj_matcher_spec.rb +26 -0
- data/spec/shoulda-matchers/validate_as_cnpj_matcher_spec.rb +26 -0
- metadata +17 -13
@@ -0,0 +1,34 @@
|
|
1
|
+
require 'remarkable/active_record'
|
2
|
+
|
3
|
+
module Remarkable
|
4
|
+
module ActiveRecord
|
5
|
+
module Matchers
|
6
|
+
class ValidateAsCnpjMatcher < Remarkable::ActiveRecord::Base
|
7
|
+
arguments :cnpj
|
8
|
+
|
9
|
+
collection_assertions :cnpj_valid?, :allow_nil?, :formatted_number?
|
10
|
+
|
11
|
+
protected
|
12
|
+
|
13
|
+
def cnpj_valid?
|
14
|
+
@subject.cnpj = '123456'
|
15
|
+
@subject.valid?.errors[:cnpj].should == ['is invalid']
|
16
|
+
end
|
17
|
+
|
18
|
+
def allow_nil?
|
19
|
+
@subject.cnpj = nil
|
20
|
+
@subject.valid?.errors[:cnpj].should == []
|
21
|
+
end
|
22
|
+
|
23
|
+
def formatted_number?
|
24
|
+
@subject.cnpj = '51114450000146'
|
25
|
+
@subject.valid?.cnpj.should == '51.114.450/0001-46'
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
def validate_as_cnpj(*args, &block)
|
30
|
+
ValidateAsCnpjMatcher.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_cnpj(attr)
|
7
|
+
ValidateAsCnpjMatcher.new(attr)
|
8
|
+
end
|
9
|
+
|
10
|
+
class ValidateAsCnpjMatcher < ValidationMatcher
|
11
|
+
def initialize(attribute)
|
12
|
+
@attribute = attribute
|
13
|
+
end
|
14
|
+
|
15
|
+
def description
|
16
|
+
"validate #{@attribute} as a valid CNPJ number"
|
17
|
+
end
|
18
|
+
|
19
|
+
def failure_message
|
20
|
+
"expected #{@attribute} to be validated as a valid CNPJ 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("51.114.450/0001-46")
|
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::ValidateAsCnpjMatcher do
|
5
|
+
context "on a attribute which validates cnpj" do
|
6
|
+
it "should require a valid CNPJ" do
|
7
|
+
@company = Company.new(:cnpj => '123456')
|
8
|
+
@company.should validate_as_cnpj(:cnpj)
|
9
|
+
end
|
10
|
+
|
11
|
+
it "should allow a nil value" do
|
12
|
+
@company = Company.new(:cnpj => nil)
|
13
|
+
@company.should validate_as_cnpj(:cnpj)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
context "on a attribute which not validates cnpj" do
|
18
|
+
before do
|
19
|
+
@user = Admin.new(:cnpj => '123456')
|
20
|
+
end
|
21
|
+
|
22
|
+
it "should not require a valid CPF" do
|
23
|
+
@user.should_not validate_as_cnpj(:cnpj)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'shoulda-matchers'
|
3
|
+
|
4
|
+
describe Shoulda::Matchers::ActiveModel::ValidateAsCnpjMatcher do
|
5
|
+
context "on a attribute which validates cnpj" do
|
6
|
+
it "should require a valid CNPJ" do
|
7
|
+
@company = Company.new(:cnpj => '123456')
|
8
|
+
@company.should validate_as_cnpj(:cnpj)
|
9
|
+
end
|
10
|
+
|
11
|
+
it "should allow a nil value" do
|
12
|
+
@company = Company.new(:cnpj => nil)
|
13
|
+
@company.should validate_as_cnpj(:cnpj)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
context "on a attribute which not validates cnpj" do
|
18
|
+
before do
|
19
|
+
@user = Admin.new(:cnpj => '123456')
|
20
|
+
end
|
21
|
+
|
22
|
+
it "should not require a valid CPF" do
|
23
|
+
@user.should_not validate_as_cnpj(:cnpj)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: validates_cnpj
|
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: &20905400 !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: *20905400
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: rake
|
27
|
-
requirement: &
|
27
|
+
requirement: &20903720 !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: *20903720
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: rspec
|
38
|
-
requirement: &
|
38
|
+
requirement: &20903180 !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: *20903180
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: shoulda-matchers
|
49
|
-
requirement: &
|
49
|
+
requirement: &20902660 !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: *20902660
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: remarkable_activerecord
|
60
|
-
requirement: &
|
60
|
+
requirement: &20902080 !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: *20902080
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: sqlite3
|
71
|
-
requirement: &
|
71
|
+
requirement: &20901680 !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: *20901680
|
80
80
|
description: Validates CNPJ and test it with macros in a simple way.
|
81
81
|
email: plribeiro3000@gmail.com
|
82
82
|
executables: []
|
@@ -89,6 +89,8 @@ files:
|
|
89
89
|
- Gemfile
|
90
90
|
- README.rdoc
|
91
91
|
- Rakefile
|
92
|
+
- lib/remarkable/validate_as_cnpj_matcher.rb
|
93
|
+
- lib/shoulda-matchers/validate_as_cnpj_matcher.rb
|
92
94
|
- lib/validates_cnpj.rb
|
93
95
|
- lib/validates_cnpj/cnpj.rb
|
94
96
|
- lib/validates_cnpj/version.rb
|
@@ -96,6 +98,8 @@ files:
|
|
96
98
|
- spec/fake_app/company.rb
|
97
99
|
- spec/fake_app/db/create_admins.rb
|
98
100
|
- spec/fake_app/db/create_companies.rb
|
101
|
+
- spec/remarkable/validate_as_cnpj_matcher_spec.rb
|
102
|
+
- spec/shoulda-matchers/validate_as_cnpj_matcher_spec.rb
|
99
103
|
- spec/spec_helper.rb
|
100
104
|
- spec/validates_cnpj/cnpj_spec.rb
|
101
105
|
- spec/validates_cnpj_spec.rb
|