br_documents 0.2.0 → 0.2.3
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.
- checksums.yaml +4 -4
- data/.github/workflows/config.yml +12 -26
- data/.rubocop.yml +29 -21
- data/.tool-versions +1 -0
- data/Gemfile.lock +7 -4
- data/Rakefile +1 -1
- data/br_documents.gemspec +3 -0
- data/lib/br_documents/cnpj_cpf/document.rb +1 -1
- data/lib/br_documents/{gtin/gtin.rb → gtin.rb} +2 -2
- data/lib/br_documents/ie/ba.rb +1 -1
- data/lib/br_documents/ie/mg.rb +1 -1
- data/lib/br_documents/ie/mt.rb +1 -1
- data/lib/br_documents/ie_validator.rb +1 -1
- data/lib/br_documents/suframa.rb +46 -0
- data/lib/br_documents/version.rb +1 -1
- data/spec/{cnpj_cpf → br_documents/cnpj_cpf}/cnpj_spec.rb +13 -13
- data/spec/{cnpj_cpf → br_documents/cnpj_cpf}/cpf_spec.rb +13 -13
- data/spec/br_documents/cnpj_validator_spec.rb +36 -0
- data/spec/br_documents/cpf_validator_spec.rb +36 -0
- data/spec/{gtin → br_documents}/gtin_spec.rb +2 -2
- data/spec/{gtin_validator_spec.rb → br_documents/gtin_validator_spec.rb} +3 -3
- data/spec/{ie → br_documents/ie}/ac_spec.rb +3 -3
- data/spec/{ie → br_documents/ie}/al_spec.rb +2 -2
- data/spec/{ie → br_documents/ie}/am_spec.rb +3 -3
- data/spec/{ie → br_documents/ie}/ap_spec.rb +2 -2
- data/spec/{ie → br_documents/ie}/ba_spec.rb +4 -4
- data/spec/{ie → br_documents/ie}/ce_spec.rb +0 -0
- data/spec/{ie → br_documents/ie}/df_spec.rb +3 -3
- data/spec/{ie → br_documents/ie}/es_spec.rb +0 -0
- data/spec/{ie → br_documents/ie}/factory_spec.rb +28 -28
- data/spec/{ie → br_documents/ie}/go_spec.rb +3 -3
- data/spec/{ie → br_documents/ie}/ma_spec.rb +0 -0
- data/spec/{ie → br_documents/ie}/mg_spec.rb +6 -6
- data/spec/{ie → br_documents/ie}/ms_spec.rb +0 -0
- data/spec/{ie → br_documents/ie}/mt_spec.rb +8 -3
- data/spec/{ie → br_documents/ie}/pa_spec.rb +3 -3
- data/spec/{ie → br_documents/ie}/pb_spec.rb +0 -0
- data/spec/{ie → br_documents/ie}/pe_spec.rb +4 -4
- data/spec/{ie → br_documents/ie}/pi_spec.rb +0 -0
- data/spec/{ie → br_documents/ie}/pr_spec.rb +2 -2
- data/spec/{ie → br_documents/ie}/rj_spec.rb +3 -3
- data/spec/{ie → br_documents/ie}/rn_spec.rb +4 -4
- data/spec/{ie → br_documents/ie}/ro_spec.rb +4 -4
- data/spec/{ie → br_documents/ie}/rr_spec.rb +3 -3
- data/spec/{ie → br_documents/ie}/rs_spec.rb +3 -3
- data/spec/{ie → br_documents/ie}/sc_spec.rb +3 -3
- data/spec/{ie → br_documents/ie}/se_spec.rb +0 -0
- data/spec/{ie → br_documents/ie}/shared_examples_for_pattern1.rb +3 -3
- data/spec/{ie → br_documents/ie}/shared_examples_for_to_remove_all_masks.rb +0 -0
- data/spec/{ie → br_documents/ie}/sp_spec.rb +2 -2
- data/spec/{ie → br_documents/ie}/to_spec.rb +6 -6
- data/spec/{ie_validator_spec.rb → br_documents/ie_validator_spec.rb} +7 -6
- data/spec/br_documents/suframa_spec.rb +73 -0
- data/spec/{suframa_validator_spec.rb → br_documents/suframa_validator_spec.rb} +4 -4
- metadata +100 -85
- data/lib/br_documents/suframa/suframa.rb +0 -60
- data/spec/cnpj_validator_spec.rb +0 -36
- data/spec/cpf_validator_spec.rb +0 -36
- data/spec/suframa/suframa_spec.rb +0 -109
@@ -13,21 +13,21 @@ describe BrDocuments::IE::SC do
|
|
13
13
|
it 'is invalid with malformed number' do
|
14
14
|
['253.66.7852', '25.4062.407', 'A12345678'].each do |number|
|
15
15
|
ie = described_class.new(number)
|
16
|
-
expect(ie).
|
16
|
+
expect(ie).not_to be_valid
|
17
17
|
end
|
18
18
|
end
|
19
19
|
|
20
20
|
it 'is invalid with length different to 9' do
|
21
21
|
['1234567890', '12345678'].each do |number|
|
22
22
|
ie = described_class.new(number)
|
23
|
-
expect(ie).
|
23
|
+
expect(ie).not_to be_valid
|
24
24
|
end
|
25
25
|
end
|
26
26
|
|
27
27
|
it 'is invalid with invalid check number' do
|
28
28
|
['253667853', '254.062.408'].each do |number|
|
29
29
|
ie = described_class.new(number)
|
30
|
-
expect(ie).
|
30
|
+
expect(ie).not_to be_valid
|
31
31
|
end
|
32
32
|
end
|
33
33
|
|
File without changes
|
@@ -5,21 +5,21 @@ shared_examples 'a pattern1' do |uf|
|
|
5
5
|
it 'is invalid with malformed number' do
|
6
6
|
['1922212-21', '72.219.398-0', '63BA9943-8'].each do |number|
|
7
7
|
ie = described_class.create(uf, number)
|
8
|
-
expect(ie).
|
8
|
+
expect(ie).not_to be_valid
|
9
9
|
end
|
10
10
|
end
|
11
11
|
|
12
12
|
it 'is invalid with length different to 9' do
|
13
13
|
['1234567', '12345678901'].each do |number|
|
14
14
|
ie = described_class.create(uf, number)
|
15
|
-
expect(ie).
|
15
|
+
expect(ie).not_to be_valid
|
16
16
|
end
|
17
17
|
end
|
18
18
|
|
19
19
|
it 'is invalid with invalid check number' do
|
20
20
|
['226905727', '662637732'].each do |number|
|
21
21
|
ie = described_class.create(uf, number)
|
22
|
-
expect(ie).
|
22
|
+
expect(ie).not_to be_valid
|
23
23
|
end
|
24
24
|
end
|
25
25
|
|
File without changes
|
@@ -22,14 +22,14 @@ describe BrDocuments::IE::SP do
|
|
22
22
|
it 'is invalid with malformed number' do
|
23
23
|
['36.9107.395114', '527.08212.8110'].each do |number|
|
24
24
|
ie = described_class.new(number)
|
25
|
-
expect(ie).
|
25
|
+
expect(ie).not_to be_valid
|
26
26
|
end
|
27
27
|
end
|
28
28
|
|
29
29
|
it 'is invalid with invalid check number' do
|
30
30
|
['110042490113', '110.042.491.114', 'P-01100424.4/002'].each do |number|
|
31
31
|
ie = described_class.new(number)
|
32
|
-
expect(ie).
|
32
|
+
expect(ie).not_to be_valid
|
33
33
|
end
|
34
34
|
end
|
35
35
|
|
@@ -24,14 +24,14 @@ describe BrDocuments::IE::TO do
|
|
24
24
|
it 'is invalid with malformed number' do
|
25
25
|
['2.903.593.362-3', '29.02.79268-45', '29.02.5AB420-5'].each do |number|
|
26
26
|
ie = described_class.new(number)
|
27
|
-
expect(ie).
|
27
|
+
expect(ie).not_to be_valid
|
28
28
|
end
|
29
29
|
end
|
30
30
|
|
31
31
|
it 'is invalid with length different of 9 or 11' do
|
32
32
|
['12345678', '1234567890', '123456789012'].each do |number|
|
33
33
|
ie = described_class.new(number)
|
34
|
-
expect(ie).
|
34
|
+
expect(ie).not_to be_valid
|
35
35
|
end
|
36
36
|
end
|
37
37
|
|
@@ -39,14 +39,14 @@ describe BrDocuments::IE::TO do
|
|
39
39
|
it 'is invalid with invalid check number' do
|
40
40
|
['290227835', '294083153'].each do |number|
|
41
41
|
ie = described_class.new(number)
|
42
|
-
expect(ie).
|
42
|
+
expect(ie).not_to be_valid
|
43
43
|
end
|
44
44
|
end
|
45
45
|
|
46
46
|
it 'is invalid with correct check number but invalid mask' do
|
47
47
|
['29-022783-6', '29.408315.4'].each do |number|
|
48
48
|
ie = described_class.new(number)
|
49
|
-
expect(ie).
|
49
|
+
expect(ie).not_to be_valid
|
50
50
|
end
|
51
51
|
end
|
52
52
|
|
@@ -69,14 +69,14 @@ describe BrDocuments::IE::TO do
|
|
69
69
|
it 'is invalid with invalid check number' do
|
70
70
|
['29023864406', '29023864409'].each do |number|
|
71
71
|
ie = described_class.new(number)
|
72
|
-
expect(ie).
|
72
|
+
expect(ie).not_to be_valid
|
73
73
|
end
|
74
74
|
end
|
75
75
|
|
76
76
|
it 'is invalid with correct check number but invalid mask' do
|
77
77
|
['29-99.200143-6', '29.99.231741.7'].each do |number|
|
78
78
|
ie = described_class.new(number)
|
79
|
-
expect(ie).
|
79
|
+
expect(ie).not_to be_valid
|
80
80
|
end
|
81
81
|
end
|
82
82
|
|
@@ -1,10 +1,12 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
RSpec.describe IeValidator do
|
4
|
-
|
4
|
+
subject { described_class.new(attributes: 'ie', uf: 'uf') }
|
5
|
+
|
6
|
+
let(:record) { instance_double('model') }
|
5
7
|
|
6
8
|
before do
|
7
|
-
allow(record).to receive(:uf)
|
9
|
+
allow(record).to receive(:uf).and_return('SC')
|
8
10
|
allow(record).to receive(:errors).and_return({})
|
9
11
|
allow(record.errors).to receive(:messages).and_return({})
|
10
12
|
allow(record.errors).to receive(:add) do |attribute, error|
|
@@ -14,8 +16,6 @@ RSpec.describe IeValidator do
|
|
14
16
|
end
|
15
17
|
end
|
16
18
|
|
17
|
-
subject { IeValidator.new(attributes: 'ie', uf: 'uf') }
|
18
|
-
|
19
19
|
context "when IE's number is valid" do
|
20
20
|
before { subject.validate_each(record, 'ie', '253667852') }
|
21
21
|
|
@@ -50,7 +50,7 @@ RSpec.describe IeValidator do
|
|
50
50
|
|
51
51
|
context 'when UF is invalid' do
|
52
52
|
before do
|
53
|
-
allow(record).to receive(:uf)
|
53
|
+
allow(record).to receive(:uf).and_return('XX')
|
54
54
|
subject.validate_each(record, 'ie', '253667852')
|
55
55
|
end
|
56
56
|
|
@@ -73,7 +73,8 @@ RSpec.describe IeValidator do
|
|
73
73
|
end
|
74
74
|
|
75
75
|
context 'when attribute uf is not defined' do
|
76
|
-
subject {
|
76
|
+
subject { described_class.new(attributes: 'ie') }
|
77
|
+
|
77
78
|
before { subject.validate_each(record, 'ie', '253667852') }
|
78
79
|
|
79
80
|
it 'adds error in model' do
|
@@ -0,0 +1,73 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe BrDocuments::Suframa do
|
4
|
+
subject { described_class.new }
|
5
|
+
|
6
|
+
describe '#formatted' do
|
7
|
+
it 'returns the formatted number' do
|
8
|
+
value = '100698107'
|
9
|
+
|
10
|
+
subject = described_class.new(value)
|
11
|
+
|
12
|
+
expect(subject.formatted).to eql '10.0698.107'
|
13
|
+
end
|
14
|
+
|
15
|
+
context 'when number is invalid' do
|
16
|
+
it 'returns a empty string' do
|
17
|
+
value = '123'
|
18
|
+
|
19
|
+
subject = described_class.new(value)
|
20
|
+
|
21
|
+
expect(subject.formatted).to eql ''
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'is invalid if number is malformed' do
|
26
|
+
['121.23.4123', '5.50.309.012', '5.503.090.12'].each do |number|
|
27
|
+
suframa = described_class.new(number)
|
28
|
+
|
29
|
+
expect(suframa).not_to be_valid
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
it 'is invalid with a number longer than 9' do
|
34
|
+
['1234567890', '12.3456.7890'].each do |number|
|
35
|
+
suframa = described_class.new(number)
|
36
|
+
|
37
|
+
expect(suframa).not_to be_valid
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
it 'is invalid with a number shorter than 9' do
|
42
|
+
['12345678', '12.3456.78'].each do |number|
|
43
|
+
suframa = described_class.new(number)
|
44
|
+
|
45
|
+
expect(suframa).not_to be_valid
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
it 'is invalid with a sequence of the same number' do
|
50
|
+
['11.1111.111', '111111111'].each do |number|
|
51
|
+
suframa = described_class.new(number)
|
52
|
+
|
53
|
+
expect(suframa).not_to be_valid
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
it 'is invalid with invalid verifying digit' do
|
58
|
+
['55.0309.010', '550309010'].each do |number|
|
59
|
+
suframa = described_class.new(number)
|
60
|
+
|
61
|
+
expect(suframa).not_to be_valid
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
it 'is valid with correct number' do
|
66
|
+
['11.1279.100', '10.1040.105', '100628109', '100698107'].each do |number|
|
67
|
+
suframa = described_class.new(number)
|
68
|
+
|
69
|
+
expect(suframa).to be_valid
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
@@ -1,7 +1,9 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe SuframaValidator do
|
4
|
-
|
4
|
+
subject { described_class.new(attributes: 'suframa') }
|
5
|
+
|
6
|
+
let(:mock) { instance_double('mode') }
|
5
7
|
|
6
8
|
before do
|
7
9
|
allow(mock).to receive(:errors).and_return([])
|
@@ -11,8 +13,6 @@ describe SuframaValidator do
|
|
11
13
|
end
|
12
14
|
end
|
13
15
|
|
14
|
-
subject { SuframaValidator.new(attributes: 'suframa') }
|
15
|
-
|
16
16
|
context 'when SUFRAMA is valid' do
|
17
17
|
it "doesn't add errors in model" do
|
18
18
|
subject.validate_each(mock, 'suframa', '600215105')
|
@@ -30,7 +30,7 @@ describe SuframaValidator do
|
|
30
30
|
context 'when SUFRAMA is invalid' do
|
31
31
|
it 'adds errors in model' do
|
32
32
|
subject.validate_each(mock, 'suframa', '01233254121')
|
33
|
-
expect(mock.errors.messages).
|
33
|
+
expect(mock.errors.messages).not_to be_empty
|
34
34
|
end
|
35
35
|
end
|
36
36
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: br_documents
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- ASSEINFO - Sistemas de Informação
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-08-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activemodel
|
@@ -150,6 +150,20 @@ dependencies:
|
|
150
150
|
- - "~>"
|
151
151
|
- !ruby/object:Gem::Version
|
152
152
|
version: 2.10.1
|
153
|
+
- !ruby/object:Gem::Dependency
|
154
|
+
name: rubocop-rake
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
156
|
+
requirements:
|
157
|
+
- - ">="
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: 0.5.1
|
160
|
+
type: :development
|
161
|
+
prerelease: false
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
163
|
+
requirements:
|
164
|
+
- - ">="
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: 0.5.1
|
153
167
|
- !ruby/object:Gem::Dependency
|
154
168
|
name: rubocop-rspec
|
155
169
|
requirement: !ruby/object:Gem::Requirement
|
@@ -189,6 +203,7 @@ files:
|
|
189
203
|
- ".gitignore"
|
190
204
|
- ".rspec"
|
191
205
|
- ".rubocop.yml"
|
206
|
+
- ".tool-versions"
|
192
207
|
- Gemfile
|
193
208
|
- Gemfile.lock
|
194
209
|
- README.md
|
@@ -203,7 +218,7 @@ files:
|
|
203
218
|
- lib/br_documents/commons/mod11.rb
|
204
219
|
- lib/br_documents/commons/mod14.rb
|
205
220
|
- lib/br_documents/cpf_validator.rb
|
206
|
-
- lib/br_documents/gtin
|
221
|
+
- lib/br_documents/gtin.rb
|
207
222
|
- lib/br_documents/gtin_validator.rb
|
208
223
|
- lib/br_documents/ie/ac.rb
|
209
224
|
- lib/br_documents/ie/al.rb
|
@@ -237,55 +252,55 @@ files:
|
|
237
252
|
- lib/br_documents/ie/sp.rb
|
238
253
|
- lib/br_documents/ie/to.rb
|
239
254
|
- lib/br_documents/ie_validator.rb
|
240
|
-
- lib/br_documents/suframa
|
255
|
+
- lib/br_documents/suframa.rb
|
241
256
|
- lib/br_documents/suframa_validator.rb
|
242
257
|
- lib/br_documents/version.rb
|
243
|
-
- spec/cnpj_cpf/cnpj_spec.rb
|
244
|
-
- spec/cnpj_cpf/cpf_spec.rb
|
245
|
-
- spec/cnpj_validator_spec.rb
|
246
|
-
- spec/cpf_validator_spec.rb
|
247
|
-
- spec/
|
248
|
-
- spec/gtin_validator_spec.rb
|
249
|
-
- spec/ie/ac_spec.rb
|
250
|
-
- spec/ie/al_spec.rb
|
251
|
-
- spec/ie/am_spec.rb
|
252
|
-
- spec/ie/ap_spec.rb
|
253
|
-
- spec/ie/ba_spec.rb
|
254
|
-
- spec/ie/ce_spec.rb
|
255
|
-
- spec/ie/df_spec.rb
|
256
|
-
- spec/ie/es_spec.rb
|
257
|
-
- spec/ie/factory_spec.rb
|
258
|
-
- spec/ie/go_spec.rb
|
259
|
-
- spec/ie/ma_spec.rb
|
260
|
-
- spec/ie/mg_spec.rb
|
261
|
-
- spec/ie/ms_spec.rb
|
262
|
-
- spec/ie/mt_spec.rb
|
263
|
-
- spec/ie/pa_spec.rb
|
264
|
-
- spec/ie/pb_spec.rb
|
265
|
-
- spec/ie/pe_spec.rb
|
266
|
-
- spec/ie/pi_spec.rb
|
267
|
-
- spec/ie/pr_spec.rb
|
268
|
-
- spec/ie/rj_spec.rb
|
269
|
-
- spec/ie/rn_spec.rb
|
270
|
-
- spec/ie/ro_spec.rb
|
271
|
-
- spec/ie/rr_spec.rb
|
272
|
-
- spec/ie/rs_spec.rb
|
273
|
-
- spec/ie/sc_spec.rb
|
274
|
-
- spec/ie/se_spec.rb
|
275
|
-
- spec/ie/shared_examples_for_pattern1.rb
|
276
|
-
- spec/ie/shared_examples_for_to_remove_all_masks.rb
|
277
|
-
- spec/ie/sp_spec.rb
|
278
|
-
- spec/ie/to_spec.rb
|
279
|
-
- spec/ie_validator_spec.rb
|
258
|
+
- spec/br_documents/cnpj_cpf/cnpj_spec.rb
|
259
|
+
- spec/br_documents/cnpj_cpf/cpf_spec.rb
|
260
|
+
- spec/br_documents/cnpj_validator_spec.rb
|
261
|
+
- spec/br_documents/cpf_validator_spec.rb
|
262
|
+
- spec/br_documents/gtin_spec.rb
|
263
|
+
- spec/br_documents/gtin_validator_spec.rb
|
264
|
+
- spec/br_documents/ie/ac_spec.rb
|
265
|
+
- spec/br_documents/ie/al_spec.rb
|
266
|
+
- spec/br_documents/ie/am_spec.rb
|
267
|
+
- spec/br_documents/ie/ap_spec.rb
|
268
|
+
- spec/br_documents/ie/ba_spec.rb
|
269
|
+
- spec/br_documents/ie/ce_spec.rb
|
270
|
+
- spec/br_documents/ie/df_spec.rb
|
271
|
+
- spec/br_documents/ie/es_spec.rb
|
272
|
+
- spec/br_documents/ie/factory_spec.rb
|
273
|
+
- spec/br_documents/ie/go_spec.rb
|
274
|
+
- spec/br_documents/ie/ma_spec.rb
|
275
|
+
- spec/br_documents/ie/mg_spec.rb
|
276
|
+
- spec/br_documents/ie/ms_spec.rb
|
277
|
+
- spec/br_documents/ie/mt_spec.rb
|
278
|
+
- spec/br_documents/ie/pa_spec.rb
|
279
|
+
- spec/br_documents/ie/pb_spec.rb
|
280
|
+
- spec/br_documents/ie/pe_spec.rb
|
281
|
+
- spec/br_documents/ie/pi_spec.rb
|
282
|
+
- spec/br_documents/ie/pr_spec.rb
|
283
|
+
- spec/br_documents/ie/rj_spec.rb
|
284
|
+
- spec/br_documents/ie/rn_spec.rb
|
285
|
+
- spec/br_documents/ie/ro_spec.rb
|
286
|
+
- spec/br_documents/ie/rr_spec.rb
|
287
|
+
- spec/br_documents/ie/rs_spec.rb
|
288
|
+
- spec/br_documents/ie/sc_spec.rb
|
289
|
+
- spec/br_documents/ie/se_spec.rb
|
290
|
+
- spec/br_documents/ie/shared_examples_for_pattern1.rb
|
291
|
+
- spec/br_documents/ie/shared_examples_for_to_remove_all_masks.rb
|
292
|
+
- spec/br_documents/ie/sp_spec.rb
|
293
|
+
- spec/br_documents/ie/to_spec.rb
|
294
|
+
- spec/br_documents/ie_validator_spec.rb
|
295
|
+
- spec/br_documents/suframa_spec.rb
|
296
|
+
- spec/br_documents/suframa_validator_spec.rb
|
280
297
|
- spec/spec_helper.rb
|
281
|
-
- spec/suframa/suframa_spec.rb
|
282
|
-
- spec/suframa_validator_spec.rb
|
283
298
|
- spec/support/utilities.rb
|
284
299
|
homepage: http://github.com/asseinfo/br_documents
|
285
300
|
licenses:
|
286
301
|
- MIT
|
287
302
|
metadata: {}
|
288
|
-
post_install_message:
|
303
|
+
post_install_message:
|
289
304
|
rdoc_options: []
|
290
305
|
require_paths:
|
291
306
|
- lib
|
@@ -301,49 +316,49 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
301
316
|
version: '0'
|
302
317
|
requirements: []
|
303
318
|
rubygems_version: 3.1.6
|
304
|
-
signing_key:
|
319
|
+
signing_key:
|
305
320
|
specification_version: 4
|
306
321
|
summary: Validates brazilian documents like CPF, CNPJ and IE. It can be used with
|
307
322
|
active record or just in ruby.
|
308
323
|
test_files:
|
309
|
-
- spec/cnpj_cpf/cnpj_spec.rb
|
310
|
-
- spec/cnpj_cpf/cpf_spec.rb
|
311
|
-
- spec/cnpj_validator_spec.rb
|
312
|
-
- spec/cpf_validator_spec.rb
|
313
|
-
- spec/
|
314
|
-
- spec/gtin_validator_spec.rb
|
315
|
-
- spec/ie/ac_spec.rb
|
316
|
-
- spec/ie/al_spec.rb
|
317
|
-
- spec/ie/am_spec.rb
|
318
|
-
- spec/ie/ap_spec.rb
|
319
|
-
- spec/ie/ba_spec.rb
|
320
|
-
- spec/ie/ce_spec.rb
|
321
|
-
- spec/ie/df_spec.rb
|
322
|
-
- spec/ie/es_spec.rb
|
323
|
-
- spec/ie/factory_spec.rb
|
324
|
-
- spec/ie/go_spec.rb
|
325
|
-
- spec/ie/ma_spec.rb
|
326
|
-
- spec/ie/mg_spec.rb
|
327
|
-
- spec/ie/ms_spec.rb
|
328
|
-
- spec/ie/mt_spec.rb
|
329
|
-
- spec/ie/pa_spec.rb
|
330
|
-
- spec/ie/pb_spec.rb
|
331
|
-
- spec/ie/pe_spec.rb
|
332
|
-
- spec/ie/pi_spec.rb
|
333
|
-
- spec/ie/pr_spec.rb
|
334
|
-
- spec/ie/rj_spec.rb
|
335
|
-
- spec/ie/rn_spec.rb
|
336
|
-
- spec/ie/ro_spec.rb
|
337
|
-
- spec/ie/rr_spec.rb
|
338
|
-
- spec/ie/rs_spec.rb
|
339
|
-
- spec/ie/sc_spec.rb
|
340
|
-
- spec/ie/se_spec.rb
|
341
|
-
- spec/ie/shared_examples_for_pattern1.rb
|
342
|
-
- spec/ie/shared_examples_for_to_remove_all_masks.rb
|
343
|
-
- spec/ie/sp_spec.rb
|
344
|
-
- spec/ie/to_spec.rb
|
345
|
-
- spec/ie_validator_spec.rb
|
324
|
+
- spec/br_documents/cnpj_cpf/cnpj_spec.rb
|
325
|
+
- spec/br_documents/cnpj_cpf/cpf_spec.rb
|
326
|
+
- spec/br_documents/cnpj_validator_spec.rb
|
327
|
+
- spec/br_documents/cpf_validator_spec.rb
|
328
|
+
- spec/br_documents/gtin_spec.rb
|
329
|
+
- spec/br_documents/gtin_validator_spec.rb
|
330
|
+
- spec/br_documents/ie/ac_spec.rb
|
331
|
+
- spec/br_documents/ie/al_spec.rb
|
332
|
+
- spec/br_documents/ie/am_spec.rb
|
333
|
+
- spec/br_documents/ie/ap_spec.rb
|
334
|
+
- spec/br_documents/ie/ba_spec.rb
|
335
|
+
- spec/br_documents/ie/ce_spec.rb
|
336
|
+
- spec/br_documents/ie/df_spec.rb
|
337
|
+
- spec/br_documents/ie/es_spec.rb
|
338
|
+
- spec/br_documents/ie/factory_spec.rb
|
339
|
+
- spec/br_documents/ie/go_spec.rb
|
340
|
+
- spec/br_documents/ie/ma_spec.rb
|
341
|
+
- spec/br_documents/ie/mg_spec.rb
|
342
|
+
- spec/br_documents/ie/ms_spec.rb
|
343
|
+
- spec/br_documents/ie/mt_spec.rb
|
344
|
+
- spec/br_documents/ie/pa_spec.rb
|
345
|
+
- spec/br_documents/ie/pb_spec.rb
|
346
|
+
- spec/br_documents/ie/pe_spec.rb
|
347
|
+
- spec/br_documents/ie/pi_spec.rb
|
348
|
+
- spec/br_documents/ie/pr_spec.rb
|
349
|
+
- spec/br_documents/ie/rj_spec.rb
|
350
|
+
- spec/br_documents/ie/rn_spec.rb
|
351
|
+
- spec/br_documents/ie/ro_spec.rb
|
352
|
+
- spec/br_documents/ie/rr_spec.rb
|
353
|
+
- spec/br_documents/ie/rs_spec.rb
|
354
|
+
- spec/br_documents/ie/sc_spec.rb
|
355
|
+
- spec/br_documents/ie/se_spec.rb
|
356
|
+
- spec/br_documents/ie/shared_examples_for_pattern1.rb
|
357
|
+
- spec/br_documents/ie/shared_examples_for_to_remove_all_masks.rb
|
358
|
+
- spec/br_documents/ie/sp_spec.rb
|
359
|
+
- spec/br_documents/ie/to_spec.rb
|
360
|
+
- spec/br_documents/ie_validator_spec.rb
|
361
|
+
- spec/br_documents/suframa_spec.rb
|
362
|
+
- spec/br_documents/suframa_validator_spec.rb
|
346
363
|
- spec/spec_helper.rb
|
347
|
-
- spec/suframa/suframa_spec.rb
|
348
|
-
- spec/suframa_validator_spec.rb
|
349
364
|
- spec/support/utilities.rb
|
@@ -1,60 +0,0 @@
|
|
1
|
-
require_relative '../commons/mod11'
|
2
|
-
|
3
|
-
# rubocop:disable Style/ClassAndModuleChildren
|
4
|
-
class BrDocuments::Suframa
|
5
|
-
include BrDocuments::Commons::Mod11
|
6
|
-
|
7
|
-
def initialize(number)
|
8
|
-
@number = number
|
9
|
-
end
|
10
|
-
|
11
|
-
def formatted
|
12
|
-
valid? ? format_number : ''
|
13
|
-
end
|
14
|
-
|
15
|
-
def valid?
|
16
|
-
valid_pattern? &&
|
17
|
-
!sequence_of_equal_numbers? &&
|
18
|
-
valid_check_digit? &&
|
19
|
-
valid_activity_sector? &&
|
20
|
-
valid_administrative_unit?
|
21
|
-
end
|
22
|
-
|
23
|
-
private
|
24
|
-
|
25
|
-
def valid_pattern?
|
26
|
-
/^(\d{2}\.\d{4}\.\d{3})$|^(\d{9})$/.match(@number).present?
|
27
|
-
end
|
28
|
-
|
29
|
-
def sequence_of_equal_numbers?
|
30
|
-
number_without_mask.split('').uniq.length == 1
|
31
|
-
end
|
32
|
-
|
33
|
-
def number_without_mask
|
34
|
-
@number_without_mask ||= @number.gsub('.', '')
|
35
|
-
end
|
36
|
-
|
37
|
-
def valid_check_digit?
|
38
|
-
weights = [9, 8, 7, 6, 5, 4, 3, 2]
|
39
|
-
|
40
|
-
check_digit = generate_check_digit(number_without_mask, weights)
|
41
|
-
number_without_mask[8] == check_digit.to_s
|
42
|
-
end
|
43
|
-
|
44
|
-
def valid_activity_sector?
|
45
|
-
activity_sector = number_without_mask[0] + number_without_mask[1]
|
46
|
-
|
47
|
-
['01', '02', '10', '11', '20', '60'].include?(activity_sector)
|
48
|
-
end
|
49
|
-
|
50
|
-
def valid_administrative_unit?
|
51
|
-
administrative_unit = number_without_mask[6] + number_without_mask[7]
|
52
|
-
|
53
|
-
['01', '10', '30'].include?(administrative_unit)
|
54
|
-
end
|
55
|
-
|
56
|
-
def format_number
|
57
|
-
@number.sub(/(\d{2})(\d{4})(\d{3})/, '\\1.\\2.\\3')
|
58
|
-
end
|
59
|
-
end
|
60
|
-
# rubocop:enable Style/ClassAndModuleChildren
|
data/spec/cnpj_validator_spec.rb
DELETED
@@ -1,36 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe CnpjValidator do
|
4
|
-
before(:each) do
|
5
|
-
@validator = CnpjValidator.new(attributes: 'cnpj')
|
6
|
-
@mock = double('model')
|
7
|
-
allow(@mock).to receive(:errors).and_return([])
|
8
|
-
allow(@mock.errors).to receive(:messages).and_return({})
|
9
|
-
allow(@mock.errors).to receive(:add) do |attribute, error|
|
10
|
-
@mock.errors.messages[attribute] = [error]
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
|
-
subject { @validator }
|
15
|
-
|
16
|
-
context 'when Cnpj is valid' do
|
17
|
-
it "doesn't add errors in model" do
|
18
|
-
subject.validate_each(@mock, 'cnpj', '85961757000102')
|
19
|
-
expect(@mock.errors.messages).to be_empty
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
context 'when Cnpj is blank' do
|
24
|
-
it "doesn't add errors in model" do
|
25
|
-
subject.validate_each(@mock, 'cnpj', '')
|
26
|
-
expect(@mock.errors.messages).to be_empty
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
context 'when Cnpj is invalid' do
|
31
|
-
it 'adds errors in model' do
|
32
|
-
subject.validate_each(@mock, 'cnpj', '85961757000103')
|
33
|
-
expect(@mock.errors.messages).to_not be_empty
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
data/spec/cpf_validator_spec.rb
DELETED
@@ -1,36 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe CpfValidator do
|
4
|
-
before(:each) do
|
5
|
-
@validator = CpfValidator.new(attributes: 'cpf')
|
6
|
-
@mock = double('model')
|
7
|
-
allow(@mock).to receive(:errors).and_return([])
|
8
|
-
allow(@mock.errors).to receive(:messages).and_return({})
|
9
|
-
allow(@mock.errors).to receive(:add) do |attribute, error|
|
10
|
-
@mock.errors.messages[attribute] = [error]
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
|
-
subject { @validator }
|
15
|
-
|
16
|
-
context 'when Cpf is valid' do
|
17
|
-
it "doesn't add errors in model" do
|
18
|
-
subject.validate_each(@mock, 'cpf', '01233254120')
|
19
|
-
expect(@mock.errors.messages).to be_empty
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
context 'when Cpf is blank' do
|
24
|
-
it "doesn't add errors in model" do
|
25
|
-
subject.validate_each(@mock, 'cpf', '')
|
26
|
-
expect(@mock.errors.messages).to be_empty
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
context 'when Cpf is invalid' do
|
31
|
-
it 'adds errors in model' do
|
32
|
-
subject.validate_each(@mock, 'cpf', '01233254121')
|
33
|
-
expect(@mock.errors.messages).to_not be_empty
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|