br_documents 0.0.15 → 0.2.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.
Files changed (98) hide show
  1. checksums.yaml +5 -5
  2. data/.github/workflows/config.yml +54 -0
  3. data/.gitignore +1 -1
  4. data/.rubocop.yml +65 -0
  5. data/Gemfile +1 -1
  6. data/Gemfile.lock +100 -0
  7. data/README.md +58 -1
  8. data/Rakefile +3 -3
  9. data/br_documents.gemspec +23 -19
  10. data/lib/br_documents.rb +3 -3
  11. data/lib/br_documents/cnpj_cpf/cnpj.rb +2 -2
  12. data/lib/br_documents/cnpj_cpf/cpf.rb +2 -2
  13. data/lib/br_documents/cnpj_cpf/document.rb +9 -9
  14. data/lib/br_documents/cnpj_validator.rb +4 -4
  15. data/lib/br_documents/commons/mod11.rb +1 -2
  16. data/lib/br_documents/commons/mod14.rb +20 -0
  17. data/lib/br_documents/cpf_validator.rb +4 -4
  18. data/lib/br_documents/gtin/gtin.rb +28 -0
  19. data/lib/br_documents/gtin_validator.rb +8 -0
  20. data/lib/br_documents/ie/ac.rb +3 -2
  21. data/lib/br_documents/ie/al.rb +2 -1
  22. data/lib/br_documents/ie/am.rb +3 -2
  23. data/lib/br_documents/ie/ap.rb +20 -16
  24. data/lib/br_documents/ie/ba.rb +28 -25
  25. data/lib/br_documents/ie/base.rb +1 -1
  26. data/lib/br_documents/ie/ce.rb +3 -2
  27. data/lib/br_documents/ie/df.rb +3 -2
  28. data/lib/br_documents/ie/es.rb +2 -1
  29. data/lib/br_documents/ie/factory.rb +3 -3
  30. data/lib/br_documents/ie/go.rb +3 -2
  31. data/lib/br_documents/ie/ma.rb +2 -1
  32. data/lib/br_documents/ie/mg.rb +14 -17
  33. data/lib/br_documents/ie/ms.rb +2 -1
  34. data/lib/br_documents/ie/mt.rb +6 -5
  35. data/lib/br_documents/ie/pa.rb +3 -2
  36. data/lib/br_documents/ie/pattern1.rb +10 -7
  37. data/lib/br_documents/ie/pattern2.rb +9 -8
  38. data/lib/br_documents/ie/pb.rb +3 -2
  39. data/lib/br_documents/ie/pe.rb +10 -10
  40. data/lib/br_documents/ie/pi.rb +2 -1
  41. data/lib/br_documents/ie/pr.rb +3 -2
  42. data/lib/br_documents/ie/rj.rb +3 -2
  43. data/lib/br_documents/ie/rn.rb +19 -16
  44. data/lib/br_documents/ie/ro.rb +17 -14
  45. data/lib/br_documents/ie/rr.rb +4 -3
  46. data/lib/br_documents/ie/rs.rb +3 -2
  47. data/lib/br_documents/ie/sc.rb +3 -2
  48. data/lib/br_documents/ie/se.rb +3 -2
  49. data/lib/br_documents/ie/sp.rb +17 -14
  50. data/lib/br_documents/ie/to.rb +6 -5
  51. data/lib/br_documents/ie_validator.rb +16 -15
  52. data/lib/br_documents/suframa/suframa.rb +60 -0
  53. data/lib/br_documents/suframa_validator.rb +8 -0
  54. data/lib/br_documents/version.rb +1 -1
  55. data/spec/cnpj_cpf/cnpj_spec.rb +21 -21
  56. data/spec/cnpj_cpf/cpf_spec.rb +21 -21
  57. data/spec/cnpj_validator_spec.rb +12 -12
  58. data/spec/cpf_validator_spec.rb +12 -12
  59. data/spec/gtin/gtin_spec.rb +49 -0
  60. data/spec/gtin_validator_spec.rb +47 -0
  61. data/spec/ie/ac_spec.rb +16 -16
  62. data/spec/ie/al_spec.rb +14 -14
  63. data/spec/ie/am_spec.rb +16 -16
  64. data/spec/ie/ap_spec.rb +14 -14
  65. data/spec/ie/ba_spec.rb +28 -28
  66. data/spec/ie/ce_spec.rb +9 -9
  67. data/spec/ie/df_spec.rb +16 -16
  68. data/spec/ie/es_spec.rb +9 -9
  69. data/spec/ie/factory_spec.rb +88 -89
  70. data/spec/ie/go_spec.rb +16 -16
  71. data/spec/ie/ma_spec.rb +9 -9
  72. data/spec/ie/mg_spec.rb +16 -16
  73. data/spec/ie/ms_spec.rb +9 -9
  74. data/spec/ie/mt_spec.rb +17 -17
  75. data/spec/ie/pa_spec.rb +16 -16
  76. data/spec/ie/pb_spec.rb +9 -9
  77. data/spec/ie/pe_spec.rb +27 -27
  78. data/spec/ie/pi_spec.rb +9 -9
  79. data/spec/ie/pr_spec.rb +14 -14
  80. data/spec/ie/rj_spec.rb +16 -16
  81. data/spec/ie/rn_spec.rb +27 -27
  82. data/spec/ie/ro_spec.rb +27 -27
  83. data/spec/ie/rr_spec.rb +16 -16
  84. data/spec/ie/rs_spec.rb +16 -16
  85. data/spec/ie/sc_spec.rb +16 -16
  86. data/spec/ie/se_spec.rb +9 -9
  87. data/spec/ie/shared_examples_for_pattern1.rb +11 -11
  88. data/spec/ie/shared_examples_for_to_remove_all_masks.rb +7 -8
  89. data/spec/ie/sp_spec.rb +19 -19
  90. data/spec/ie/to_spec.rb +35 -35
  91. data/spec/ie_validator_spec.rb +43 -31
  92. data/spec/spec_helper.rb +9 -6
  93. data/spec/suframa/suframa_spec.rb +109 -0
  94. data/spec/suframa_validator_spec.rb +36 -0
  95. data/spec/support/utilities.rb +2 -2
  96. metadata +94 -25
  97. data/.travis.yml +0 -6
  98. data/circle.yml +0 -3
@@ -1,35 +1,35 @@
1
- require "spec_helper"
1
+ require 'spec_helper'
2
2
 
3
3
  describe CpfValidator do
4
4
  before(:each) do
5
- @validator = CpfValidator.new(attributes: "cpf")
6
- @mock = double("model")
5
+ @validator = CpfValidator.new(attributes: 'cpf')
6
+ @mock = double('model')
7
7
  allow(@mock).to receive(:errors).and_return([])
8
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]
9
+ allow(@mock.errors).to receive(:add) do |attribute, error|
10
+ @mock.errors.messages[attribute] = [error]
11
11
  end
12
12
  end
13
13
 
14
14
  subject { @validator }
15
15
 
16
- context "when Cpf is valid" do
16
+ context 'when Cpf is valid' do
17
17
  it "doesn't add errors in model" do
18
- subject.validate_each(@mock, "cpf", "01233254120")
18
+ subject.validate_each(@mock, 'cpf', '01233254120')
19
19
  expect(@mock.errors.messages).to be_empty
20
20
  end
21
21
  end
22
22
 
23
- context "when Cpf is blank" do
23
+ context 'when Cpf is blank' do
24
24
  it "doesn't add errors in model" do
25
- subject.validate_each(@mock, "cpf", "")
25
+ subject.validate_each(@mock, 'cpf', '')
26
26
  expect(@mock.errors.messages).to be_empty
27
27
  end
28
28
  end
29
29
 
30
- context "when Cpf is invalid" do
31
- it "adds errors in model" do
32
- subject.validate_each(@mock, "cpf", "01233254121")
30
+ context 'when Cpf is invalid' do
31
+ it 'adds errors in model' do
32
+ subject.validate_each(@mock, 'cpf', '01233254121')
33
33
  expect(@mock.errors.messages).to_not be_empty
34
34
  end
35
35
  end
@@ -0,0 +1,49 @@
1
+ require 'spec_helper'
2
+
3
+ describe BrDocuments::Gtin do
4
+ describe '#valid?' do
5
+ context 'when the checksum is valid' do
6
+ context 'when the GTIN has 8 digits' do
7
+ subject { described_class.new('12345618') }
8
+
9
+ it { is_expected.to be_valid }
10
+ end
11
+
12
+ context 'when the GTIN has 12 digits' do
13
+ subject { described_class.new('114567854874') }
14
+
15
+ it { is_expected.to be_valid }
16
+ end
17
+
18
+ context 'when the GTIN has 13 digits' do
19
+ subject { described_class.new('1145678548719') }
20
+
21
+ it { is_expected.to be_valid }
22
+ end
23
+
24
+ context 'when the GTIN has 14 digits' do
25
+ subject { described_class.new('1234567891125') }
26
+
27
+ it { is_expected.to be_valid }
28
+ end
29
+
30
+ context 'when the final digit is zero' do
31
+ subject { described_class.new('7898417964120') }
32
+
33
+ it { is_expected.to be_valid }
34
+ end
35
+
36
+ context 'when the number of digits is different of 8, 13 or 14' do
37
+ subject { described_class.new('12345678901234560') }
38
+
39
+ it { is_expected.to_not be_valid }
40
+ end
41
+ end
42
+
43
+ context 'when the checksum is invald' do
44
+ subject { described_class.new('1145678548712') }
45
+
46
+ it { is_expected.to_not be_valid }
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,47 @@
1
+ require 'spec_helper'
2
+
3
+ describe GtinValidator do
4
+ let(:record) { double('model') }
5
+
6
+ before do
7
+ allow(record).to receive(:errors).and_return([])
8
+ allow(record.errors).to receive(:messages).and_return({})
9
+ allow(record.errors).to receive(:add) do |attribute, error|
10
+ record.errors.messages[attribute] = [error]
11
+ end
12
+ end
13
+
14
+ subject { GtinValidator.new(attributes: 'gtin') }
15
+
16
+ context 'when GTIN code is valid' do
17
+ before { subject.validate_each(record, 'gtin', '1243658721548') }
18
+
19
+ it "doesn't add errors in model" do
20
+ expect(record.errors.messages).to be_empty
21
+ end
22
+ end
23
+
24
+ context 'when GTIN is blank' do
25
+ before { subject.validate_each(record, 'gtin', '') }
26
+
27
+ it "doesn't add errors in model" do
28
+ expect(record.errors.messages).to be_empty
29
+ end
30
+ end
31
+
32
+ context 'when GTIN is nil' do
33
+ before { subject.validate_each(record, 'gtin', nil) }
34
+
35
+ it "doesn't add errors in model" do
36
+ expect(record.errors.messages).to be_empty
37
+ end
38
+ end
39
+
40
+ context 'when GTIN is invalid' do
41
+ before { subject.validate_each(record, 'gtin', '253667853') }
42
+
43
+ it 'adds errors in model' do
44
+ expect(record.errors.messages).to include 'gtin' => [:invalid]
45
+ end
46
+ end
47
+ end
data/spec/ie/ac_spec.rb CHANGED
@@ -1,43 +1,43 @@
1
- require "spec_helper"
2
- require_relative "shared_examples_for_to_remove_all_masks"
1
+ require 'spec_helper'
2
+ require_relative 'shared_examples_for_to_remove_all_masks'
3
3
 
4
4
  RSpec.describe BrDocuments::IE::AC do
5
- describe "#formatted" do
6
- it "returns a formatted ie" do
7
- ie = described_class.new("1234567890123")
8
- expect(ie.formatted).to eq "12.345.678/901-23"
5
+ describe '#formatted' do
6
+ it 'returns a formatted ie' do
7
+ ie = described_class.new('1234567890123')
8
+ expect(ie.formatted).to eq '12.345.678/901-23'
9
9
  end
10
10
  end
11
11
 
12
- describe "#valid?" do
13
- it "is invalid with malformed number" do
14
- ["01.448.52/88.91-50", "01.278.704/5555-7", "01.AB7.904/028-50"].each do |number|
12
+ describe '#valid?' do
13
+ it 'is invalid with malformed number' do
14
+ ['01.448.52/88.91-50', '01.278.704/5555-7', '01.AB7.904/028-50'].each do |number|
15
15
  ie = described_class.new(number)
16
16
  expect(ie).to_not be_valid
17
17
  end
18
18
  end
19
19
 
20
- it "is invalid with length different to 13" do
21
- ["1234567890", "123456789012"].each do |number|
20
+ it 'is invalid with length different to 13' do
21
+ ['1234567890', '123456789012'].each do |number|
22
22
  ie = described_class.new(number)
23
23
  expect(ie).to_not be_valid
24
24
  end
25
25
  end
26
26
 
27
- it "is invalid with invalid check number" do
28
- ["0135184641523", "0172567054082"].each do |number|
27
+ it 'is invalid with invalid check number' do
28
+ ['0135184641523', '0172567054082'].each do |number|
29
29
  ie = described_class.new(number)
30
30
  expect(ie).to_not be_valid
31
31
  end
32
32
  end
33
33
 
34
- it "is valid with valid number" do
35
- ["0182235562573", "0104754560901"].each do |number|
34
+ it 'is valid with valid number' do
35
+ ['0182235562573', '0104754560901'].each do |number|
36
36
  ie = described_class.new(number)
37
37
  expect(ie).to be_valid
38
38
  end
39
39
  end
40
40
 
41
- include_examples "for to remove all masks", "01.047.545/609-01"
41
+ include_examples 'for to remove all masks', '01.047.545/609-01'
42
42
  end
43
43
  end
data/spec/ie/al_spec.rb CHANGED
@@ -1,36 +1,36 @@
1
- require "spec_helper"
2
- require_relative "shared_examples_for_to_remove_all_masks"
1
+ require 'spec_helper'
2
+ require_relative 'shared_examples_for_to_remove_all_masks'
3
3
 
4
4
  describe BrDocuments::IE::AL do
5
- describe "#formatted" do
6
- it "returns a formatted ie" do
7
- ie = described_class.new("123456789")
8
- expect(ie.formatted).to eq "123456789"
5
+ describe '#formatted' do
6
+ it 'returns a formatted ie' do
7
+ ie = described_class.new('123456789')
8
+ expect(ie.formatted).to eq '123456789'
9
9
  end
10
10
  end
11
11
 
12
- describe "#valid?" do
13
- it "is invalid with length different to 9" do
14
- ["1234567", "122345678901"].each do |number|
12
+ describe '#valid?' do
13
+ it 'is invalid with length different to 9' do
14
+ ['1234567', '122345678901'].each do |number|
15
15
  ie = described_class.new(number)
16
16
  expect(ie).to_not be_valid
17
17
  end
18
18
  end
19
19
 
20
- it "is invalid with invalid check number" do
21
- ["245320152", "240046248"].each do |number|
20
+ it 'is invalid with invalid check number' do
21
+ ['245320152', '240046248'].each do |number|
22
22
  ie = described_class.new(number)
23
23
  expect(ie).to_not be_valid
24
24
  end
25
25
  end
26
26
 
27
- it "is valid with valid number" do
28
- ["247975494", "248466313"].each do |number|
27
+ it 'is valid with valid number' do
28
+ ['247975494', '248466313'].each do |number|
29
29
  ie = described_class.new(number)
30
30
  expect(ie).to be_valid
31
31
  end
32
32
  end
33
33
 
34
- include_examples "for to remove all masks", "248466313"
34
+ include_examples 'for to remove all masks', '248466313'
35
35
  end
36
36
  end
data/spec/ie/am_spec.rb CHANGED
@@ -1,43 +1,43 @@
1
- require "spec_helper"
2
- require_relative "shared_examples_for_to_remove_all_masks"
1
+ require 'spec_helper'
2
+ require_relative 'shared_examples_for_to_remove_all_masks'
3
3
 
4
4
  describe BrDocuments::IE::AM do
5
- describe "#formatted" do
6
- it "returns a formatted ie" do
7
- ie = described_class.new("123456789")
8
- expect(ie.formatted).to eq "12.345.678-9"
5
+ describe '#formatted' do
6
+ it 'returns a formatted ie' do
7
+ ie = described_class.new('123456789')
8
+ expect(ie.formatted).to eq '12.345.678-9'
9
9
  end
10
10
  end
11
11
 
12
- describe "#valid?" do
13
- it "is invalid with malformed number" do
14
- ["8.535.410-60", "884.67.826-1", "13.BA9.093-6"].each do |number|
12
+ describe '#valid?' do
13
+ it 'is invalid with malformed number' do
14
+ ['8.535.410-60', '884.67.826-1', '13.BA9.093-6'].each do |number|
15
15
  ie = described_class.new(number)
16
16
  expect(ie).to_not be_valid
17
17
  end
18
18
  end
19
19
 
20
- it "is invalid with length different to 9" do
21
- ["1234567", "12345678901"].each do |number|
20
+ it 'is invalid with length different to 9' do
21
+ ['1234567', '12345678901'].each do |number|
22
22
  ie = described_class.new(number)
23
23
  expect(ie).to_not be_valid
24
24
  end
25
25
  end
26
26
 
27
- it "is invalid with invalid check number" do
28
- ["500085276", "886770232"].each do |number|
27
+ it 'is invalid with invalid check number' do
28
+ ['500085276', '886770232'].each do |number|
29
29
  ie = described_class.new(number)
30
30
  expect(ie).to_not be_valid
31
31
  end
32
32
  end
33
33
 
34
- it "is valid with valid number" do
35
- ["425721221", "310636396"].each do |number|
34
+ it 'is valid with valid number' do
35
+ ['425721221', '310636396'].each do |number|
36
36
  ie = described_class.new(number)
37
37
  expect(ie).to be_valid
38
38
  end
39
39
  end
40
40
 
41
- include_examples "for to remove all masks", "31.063.639-6"
41
+ include_examples 'for to remove all masks', '31.063.639-6'
42
42
  end
43
43
  end
data/spec/ie/ap_spec.rb CHANGED
@@ -1,36 +1,36 @@
1
- require "spec_helper"
2
- require_relative "shared_examples_for_to_remove_all_masks"
1
+ require 'spec_helper'
2
+ require_relative 'shared_examples_for_to_remove_all_masks'
3
3
 
4
4
  RSpec.describe BrDocuments::IE::AP do
5
- describe "#formatted" do
6
- it "returns a formatted ie" do
7
- ie = described_class.new("123456789")
8
- expect(ie.formatted).to eq "123456789"
5
+ describe '#formatted' do
6
+ it 'returns a formatted ie' do
7
+ ie = described_class.new('123456789')
8
+ expect(ie.formatted).to eq '123456789'
9
9
  end
10
10
  end
11
11
 
12
- describe "#valid?" do
13
- it "is invalid with length different to 9" do
14
- ["1234567", "123456789012"].each do |number|
12
+ describe '#valid?' do
13
+ it 'is invalid with length different to 9' do
14
+ ['1234567', '123456789012'].each do |number|
15
15
  ie = described_class.new(number)
16
16
  expect(ie).to_not be_valid
17
17
  end
18
18
  end
19
19
 
20
- it "is invalid with invalid check number" do
21
- ["030123456", "030182454"].each do |number|
20
+ it 'is invalid with invalid check number' do
21
+ ['030123456', '030182454'].each do |number|
22
22
  ie = described_class.new(number)
23
23
  expect(ie).to_not be_valid
24
24
  end
25
25
  end
26
26
 
27
- it "is valid with valid number" do
28
- ["030123459", "030183458", "030213452"].each do |number|
27
+ it 'is valid with valid number' do
28
+ ['030123459', '030183458', '030213452', '030213460'].each do |number|
29
29
  ie = described_class.new(number)
30
30
  expect(ie).to be_valid
31
31
  end
32
32
  end
33
33
 
34
- include_examples "for to remove all masks", "030213452"
34
+ include_examples 'for to remove all masks', '030213452'
35
35
  end
36
36
  end
data/spec/ie/ba_spec.rb CHANGED
@@ -1,69 +1,69 @@
1
- require "spec_helper"
2
- require_relative "shared_examples_for_to_remove_all_masks"
1
+ require 'spec_helper'
2
+ require_relative 'shared_examples_for_to_remove_all_masks'
3
3
 
4
4
  RSpec.describe BrDocuments::IE::BA do
5
- describe "#formatted" do
6
- context "when having 8 digits" do
7
- it "returns a formatted ie" do
8
- ie = described_class.new("12345678")
9
- expect(ie.formatted).to eq "123456-78"
5
+ describe '#formatted' do
6
+ context 'when having 8 digits' do
7
+ it 'returns a formatted ie' do
8
+ ie = described_class.new('12345678')
9
+ expect(ie.formatted).to eq '123456-78'
10
10
  end
11
11
  end
12
12
 
13
- context "when having 9 digits" do
14
- it "returns a formatted ie" do
15
- ie = described_class.new("123456789")
16
- expect(ie.formatted).to eq "1234567-89"
13
+ context 'when having 9 digits' do
14
+ it 'returns a formatted ie' do
15
+ ie = described_class.new('123456789')
16
+ expect(ie.formatted).to eq '1234567-89'
17
17
  end
18
18
  end
19
19
  end
20
20
 
21
- describe "#valid?" do
22
- it "is invalid with malformed number" do
23
- ["82.060.187.373", "528843171-72", "AD402552219"].each do |number|
21
+ describe '#valid?' do
22
+ it 'is invalid with malformed number' do
23
+ ['82.060.187.373', '528843171-72', 'AD402552219'].each do |number|
24
24
  ie = described_class.new(number)
25
25
  expect(ie).to_not be_valid
26
26
  end
27
27
  end
28
28
 
29
- it "is invalid with length different to 8 or 9" do
30
- ["1234567", "1234567890"].each do |number|
29
+ it 'is invalid with length different to 8 or 9' do
30
+ ['1234567', '1234567890'].each do |number|
31
31
  ie = described_class.new(number)
32
32
  expect(ie).to_not be_valid
33
33
  end
34
34
  end
35
35
 
36
- context "when having 8 digits" do
37
- it "is invalid with invalid check number" do
38
- ["12345682", "61934523", "39034325"].each do |number|
36
+ context 'when having 8 digits' do
37
+ it 'is invalid with invalid check number' do
38
+ ['12345682', '61934523', '39034325'].each do |number|
39
39
  ie = described_class.new(number)
40
40
  expect(ie).to_not be_valid
41
41
  end
42
42
  end
43
43
 
44
- it "is valid with valid number" do
45
- ["123456-63", "61234557"].each do |number|
44
+ it 'is valid with valid number' do
45
+ ['123456-63', '61234557'].each do |number|
46
46
  ie = described_class.new(number)
47
47
  expect(ie).to be_valid
48
48
  end
49
49
  end
50
50
  end
51
51
 
52
- context "when having 9 digits" do
53
- it "is invalid with invalid check number" do
54
- ie = described_class.new("100052398")
52
+ context 'when having 9 digits' do
53
+ it 'is invalid with invalid check number' do
54
+ ie = described_class.new('100052398')
55
55
  expect(ie).to_not be_valid
56
56
  end
57
57
 
58
- it "is valid with valid number" do
59
- ["1000003-06", "066.486.527"].each do |number|
58
+ it 'is valid with valid number' do
59
+ ['1000003-06', '066.486.527'].each do |number|
60
60
  ie = described_class.new(number)
61
61
  expect(ie).to be_valid
62
62
  end
63
63
  end
64
64
  end
65
65
 
66
- include_examples "for to remove all masks", "1000003-06"
67
- include_examples "for to remove all masks", "100.000.306"
66
+ include_examples 'for to remove all masks', '1000003-06'
67
+ include_examples 'for to remove all masks', '100.000.306'
68
68
  end
69
69
  end