br_documents 0.1.3 → 0.2.2

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 (131) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/config.yml +40 -0
  3. data/.rubocop.yml +73 -0
  4. data/.tool-versions +1 -0
  5. data/Gemfile +1 -1
  6. data/Gemfile.lock +79 -42
  7. data/README.md +33 -0
  8. data/Rakefile +4 -4
  9. data/br_documents.gemspec +26 -19
  10. data/lib/br_documents/cnpj_cpf/cnpj.rb +2 -2
  11. data/lib/br_documents/cnpj_cpf/cpf.rb +2 -2
  12. data/lib/br_documents/cnpj_cpf/document.rb +9 -9
  13. data/lib/br_documents/cnpj_validator.rb +4 -4
  14. data/lib/br_documents/commons/mod11.rb +1 -2
  15. data/lib/br_documents/commons/mod14.rb +1 -2
  16. data/lib/br_documents/cpf_validator.rb +4 -4
  17. data/lib/br_documents/{gtin/gtin.rb → gtin.rb} +3 -3
  18. data/lib/br_documents/gtin_validator.rb +6 -6
  19. data/lib/br_documents/ie/ac.rb +3 -2
  20. data/lib/br_documents/ie/al.rb +2 -1
  21. data/lib/br_documents/ie/am.rb +3 -2
  22. data/lib/br_documents/ie/ap.rb +20 -16
  23. data/lib/br_documents/ie/ba.rb +28 -25
  24. data/lib/br_documents/ie/base.rb +1 -1
  25. data/lib/br_documents/ie/ce.rb +3 -2
  26. data/lib/br_documents/ie/df.rb +3 -2
  27. data/lib/br_documents/ie/es.rb +2 -1
  28. data/lib/br_documents/ie/factory.rb +3 -3
  29. data/lib/br_documents/ie/go.rb +3 -2
  30. data/lib/br_documents/ie/ma.rb +2 -1
  31. data/lib/br_documents/ie/mg.rb +14 -17
  32. data/lib/br_documents/ie/ms.rb +2 -1
  33. data/lib/br_documents/ie/mt.rb +6 -5
  34. data/lib/br_documents/ie/pa.rb +3 -2
  35. data/lib/br_documents/ie/pattern1.rb +10 -7
  36. data/lib/br_documents/ie/pattern2.rb +9 -8
  37. data/lib/br_documents/ie/pb.rb +3 -2
  38. data/lib/br_documents/ie/pe.rb +10 -10
  39. data/lib/br_documents/ie/pi.rb +2 -1
  40. data/lib/br_documents/ie/pr.rb +3 -2
  41. data/lib/br_documents/ie/rj.rb +3 -2
  42. data/lib/br_documents/ie/rn.rb +19 -16
  43. data/lib/br_documents/ie/ro.rb +16 -13
  44. data/lib/br_documents/ie/rr.rb +4 -3
  45. data/lib/br_documents/ie/rs.rb +3 -2
  46. data/lib/br_documents/ie/sc.rb +3 -2
  47. data/lib/br_documents/ie/se.rb +3 -2
  48. data/lib/br_documents/ie/sp.rb +17 -14
  49. data/lib/br_documents/ie/to.rb +6 -5
  50. data/lib/br_documents/ie_validator.rb +7 -7
  51. data/lib/br_documents/suframa.rb +46 -0
  52. data/lib/br_documents/suframa_validator.rb +8 -0
  53. data/lib/br_documents/version.rb +1 -1
  54. data/lib/br_documents.rb +3 -3
  55. data/spec/br_documents/cnpj_cpf/cnpj_spec.rb +59 -0
  56. data/spec/br_documents/cnpj_cpf/cpf_spec.rb +59 -0
  57. data/spec/br_documents/cnpj_validator_spec.rb +36 -0
  58. data/spec/br_documents/cpf_validator_spec.rb +36 -0
  59. data/spec/{gtin → br_documents}/gtin_spec.rb +4 -4
  60. data/spec/{gtin_validator_spec.rb → br_documents/gtin_validator_spec.rb} +14 -14
  61. data/spec/br_documents/ie/ac_spec.rb +43 -0
  62. data/spec/br_documents/ie/al_spec.rb +36 -0
  63. data/spec/br_documents/ie/am_spec.rb +43 -0
  64. data/spec/br_documents/ie/ap_spec.rb +36 -0
  65. data/spec/br_documents/ie/ba_spec.rb +69 -0
  66. data/spec/br_documents/ie/ce_spec.rb +16 -0
  67. data/spec/br_documents/ie/df_spec.rb +43 -0
  68. data/spec/br_documents/ie/es_spec.rb +16 -0
  69. data/spec/br_documents/ie/factory_spec.rb +202 -0
  70. data/spec/br_documents/ie/go_spec.rb +43 -0
  71. data/spec/br_documents/ie/ma_spec.rb +16 -0
  72. data/spec/br_documents/ie/mg_spec.rb +43 -0
  73. data/spec/br_documents/ie/ms_spec.rb +16 -0
  74. data/spec/br_documents/ie/mt_spec.rb +49 -0
  75. data/spec/br_documents/ie/pa_spec.rb +43 -0
  76. data/spec/br_documents/ie/pb_spec.rb +16 -0
  77. data/spec/br_documents/ie/pe_spec.rb +62 -0
  78. data/spec/br_documents/ie/pi_spec.rb +16 -0
  79. data/spec/br_documents/ie/pr_spec.rb +36 -0
  80. data/spec/br_documents/ie/rj_spec.rb +43 -0
  81. data/spec/br_documents/ie/rn_spec.rb +62 -0
  82. data/spec/br_documents/ie/ro_spec.rb +62 -0
  83. data/spec/br_documents/ie/rr_spec.rb +43 -0
  84. data/spec/br_documents/ie/rs_spec.rb +41 -0
  85. data/spec/br_documents/ie/sc_spec.rb +43 -0
  86. data/spec/br_documents/ie/se_spec.rb +16 -0
  87. data/spec/br_documents/ie/shared_examples_for_pattern1.rb +33 -0
  88. data/spec/br_documents/ie/shared_examples_for_to_remove_all_masks.rb +16 -0
  89. data/spec/br_documents/ie/sp_spec.rb +45 -0
  90. data/spec/br_documents/ie/to_spec.rb +100 -0
  91. data/spec/{ie_validator_spec.rb → br_documents/ie_validator_spec.rb} +12 -9
  92. data/spec/br_documents/suframa_spec.rb +73 -0
  93. data/spec/br_documents/suframa_validator_spec.rb +36 -0
  94. data/spec/spec_helper.rb +6 -6
  95. data/spec/support/utilities.rb +2 -2
  96. metadata +177 -99
  97. data/.circleci/config.yml +0 -42
  98. data/spec/cnpj_cpf/cnpj_spec.rb +0 -59
  99. data/spec/cnpj_cpf/cpf_spec.rb +0 -59
  100. data/spec/cnpj_validator_spec.rb +0 -36
  101. data/spec/cpf_validator_spec.rb +0 -36
  102. data/spec/ie/ac_spec.rb +0 -43
  103. data/spec/ie/al_spec.rb +0 -36
  104. data/spec/ie/am_spec.rb +0 -43
  105. data/spec/ie/ap_spec.rb +0 -36
  106. data/spec/ie/ba_spec.rb +0 -69
  107. data/spec/ie/ce_spec.rb +0 -16
  108. data/spec/ie/df_spec.rb +0 -43
  109. data/spec/ie/es_spec.rb +0 -16
  110. data/spec/ie/factory_spec.rb +0 -203
  111. data/spec/ie/go_spec.rb +0 -43
  112. data/spec/ie/ma_spec.rb +0 -16
  113. data/spec/ie/mg_spec.rb +0 -43
  114. data/spec/ie/ms_spec.rb +0 -16
  115. data/spec/ie/mt_spec.rb +0 -44
  116. data/spec/ie/pa_spec.rb +0 -43
  117. data/spec/ie/pb_spec.rb +0 -16
  118. data/spec/ie/pe_spec.rb +0 -62
  119. data/spec/ie/pi_spec.rb +0 -16
  120. data/spec/ie/pr_spec.rb +0 -36
  121. data/spec/ie/rj_spec.rb +0 -43
  122. data/spec/ie/rn_spec.rb +0 -62
  123. data/spec/ie/ro_spec.rb +0 -62
  124. data/spec/ie/rr_spec.rb +0 -43
  125. data/spec/ie/rs_spec.rb +0 -41
  126. data/spec/ie/sc_spec.rb +0 -43
  127. data/spec/ie/se_spec.rb +0 -16
  128. data/spec/ie/shared_examples_for_pattern1.rb +0 -33
  129. data/spec/ie/shared_examples_for_to_remove_all_masks.rb +0 -17
  130. data/spec/ie/sp_spec.rb +0 -45
  131. data/spec/ie/to_spec.rb +0 -100
@@ -0,0 +1,43 @@
1
+ require 'spec_helper'
2
+ require_relative 'shared_examples_for_to_remove_all_masks'
3
+
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'
9
+ end
10
+ end
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|
15
+ ie = described_class.new(number)
16
+ expect(ie).not_to be_valid
17
+ end
18
+ end
19
+
20
+ it 'is invalid with length different to 13' do
21
+ ['1234567890', '123456789012'].each do |number|
22
+ ie = described_class.new(number)
23
+ expect(ie).not_to be_valid
24
+ end
25
+ end
26
+
27
+ it 'is invalid with invalid check number' do
28
+ ['0135184641523', '0172567054082'].each do |number|
29
+ ie = described_class.new(number)
30
+ expect(ie).not_to be_valid
31
+ end
32
+ end
33
+
34
+ it 'is valid with valid number' do
35
+ ['0182235562573', '0104754560901'].each do |number|
36
+ ie = described_class.new(number)
37
+ expect(ie).to be_valid
38
+ end
39
+ end
40
+
41
+ include_examples 'for to remove all masks', '01.047.545/609-01'
42
+ end
43
+ end
@@ -0,0 +1,36 @@
1
+ require 'spec_helper'
2
+ require_relative 'shared_examples_for_to_remove_all_masks'
3
+
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'
9
+ end
10
+ end
11
+
12
+ describe '#valid?' do
13
+ it 'is invalid with length different to 9' do
14
+ ['1234567', '122345678901'].each do |number|
15
+ ie = described_class.new(number)
16
+ expect(ie).not_to be_valid
17
+ end
18
+ end
19
+
20
+ it 'is invalid with invalid check number' do
21
+ ['245320152', '240046248'].each do |number|
22
+ ie = described_class.new(number)
23
+ expect(ie).not_to be_valid
24
+ end
25
+ end
26
+
27
+ it 'is valid with valid number' do
28
+ ['247975494', '248466313'].each do |number|
29
+ ie = described_class.new(number)
30
+ expect(ie).to be_valid
31
+ end
32
+ end
33
+
34
+ include_examples 'for to remove all masks', '248466313'
35
+ end
36
+ end
@@ -0,0 +1,43 @@
1
+ require 'spec_helper'
2
+ require_relative 'shared_examples_for_to_remove_all_masks'
3
+
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'
9
+ end
10
+ end
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|
15
+ ie = described_class.new(number)
16
+ expect(ie).not_to be_valid
17
+ end
18
+ end
19
+
20
+ it 'is invalid with length different to 9' do
21
+ ['1234567', '12345678901'].each do |number|
22
+ ie = described_class.new(number)
23
+ expect(ie).not_to be_valid
24
+ end
25
+ end
26
+
27
+ it 'is invalid with invalid check number' do
28
+ ['500085276', '886770232'].each do |number|
29
+ ie = described_class.new(number)
30
+ expect(ie).not_to be_valid
31
+ end
32
+ end
33
+
34
+ it 'is valid with valid number' do
35
+ ['425721221', '310636396'].each do |number|
36
+ ie = described_class.new(number)
37
+ expect(ie).to be_valid
38
+ end
39
+ end
40
+
41
+ include_examples 'for to remove all masks', '31.063.639-6'
42
+ end
43
+ end
@@ -0,0 +1,36 @@
1
+ require 'spec_helper'
2
+ require_relative 'shared_examples_for_to_remove_all_masks'
3
+
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'
9
+ end
10
+ end
11
+
12
+ describe '#valid?' do
13
+ it 'is invalid with length different to 9' do
14
+ ['1234567', '123456789012'].each do |number|
15
+ ie = described_class.new(number)
16
+ expect(ie).not_to be_valid
17
+ end
18
+ end
19
+
20
+ it 'is invalid with invalid check number' do
21
+ ['030123456', '030182454'].each do |number|
22
+ ie = described_class.new(number)
23
+ expect(ie).not_to be_valid
24
+ end
25
+ end
26
+
27
+ it 'is valid with valid number' do
28
+ ['030123459', '030183458', '030213452', '030213460'].each do |number|
29
+ ie = described_class.new(number)
30
+ expect(ie).to be_valid
31
+ end
32
+ end
33
+
34
+ include_examples 'for to remove all masks', '030213452'
35
+ end
36
+ end
@@ -0,0 +1,69 @@
1
+ require 'spec_helper'
2
+ require_relative 'shared_examples_for_to_remove_all_masks'
3
+
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'
10
+ end
11
+ end
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'
17
+ end
18
+ end
19
+ end
20
+
21
+ describe '#valid?' do
22
+ it 'is invalid with malformed number' do
23
+ ['82.060.187.373', '528843171-72', 'AD402552219'].each do |number|
24
+ ie = described_class.new(number)
25
+ expect(ie).not_to be_valid
26
+ end
27
+ end
28
+
29
+ it 'is invalid with length different to 8 or 9' do
30
+ ['1234567', '1234567890'].each do |number|
31
+ ie = described_class.new(number)
32
+ expect(ie).not_to be_valid
33
+ end
34
+ end
35
+
36
+ context 'when having 8 digits' do
37
+ it 'is invalid with invalid check number' do
38
+ ['12345682', '61934523', '39034325'].each do |number|
39
+ ie = described_class.new(number)
40
+ expect(ie).not_to be_valid
41
+ end
42
+ end
43
+
44
+ it 'is valid with valid number' do
45
+ ['123456-63', '61234557'].each do |number|
46
+ ie = described_class.new(number)
47
+ expect(ie).to be_valid
48
+ end
49
+ end
50
+ end
51
+
52
+ context 'when having 9 digits' do
53
+ it 'is invalid with invalid check number' do
54
+ ie = described_class.new('100052398')
55
+ expect(ie).not_to be_valid
56
+ end
57
+
58
+ it 'is valid with valid number' do
59
+ ['1000003-06', '066.486.527'].each do |number|
60
+ ie = described_class.new(number)
61
+ expect(ie).to be_valid
62
+ end
63
+ end
64
+ end
65
+
66
+ include_examples 'for to remove all masks', '1000003-06'
67
+ include_examples 'for to remove all masks', '100.000.306'
68
+ end
69
+ end
@@ -0,0 +1,16 @@
1
+ require 'spec_helper'
2
+ require_relative 'shared_examples_for_pattern1'
3
+ require_relative 'shared_examples_for_to_remove_all_masks'
4
+
5
+ describe BrDocuments::IE::CE do
6
+ describe '#formatted' do
7
+ it 'returns a formatted ie' do
8
+ ie = described_class.new('123456789')
9
+ expect(ie.formatted).to eq '12345678-9'
10
+ end
11
+ end
12
+
13
+ it_behaves_like 'a pattern1', 'CE'
14
+
15
+ include_examples 'for to remove all masks', '12345678-9'
16
+ end
@@ -0,0 +1,43 @@
1
+ require 'spec_helper'
2
+ require_relative 'shared_examples_for_to_remove_all_masks'
3
+
4
+ describe BrDocuments::IE::DF do
5
+ describe '#formatted' do
6
+ it 'returns a formatted ie' do
7
+ ie = described_class.new('1234567890123')
8
+ expect(ie.formatted).to eq '12345678901-23'
9
+ end
10
+ end
11
+
12
+ describe '#valid?' do
13
+ it 'is invalid with malformed number' do
14
+ ['070648022871-3', '07.064.802.287-13', '0AB49871799-12'].each do |number|
15
+ ie = described_class.new(number)
16
+ expect(ie).not_to be_valid
17
+ end
18
+ end
19
+
20
+ it 'is invalid with length different to 13' do
21
+ ['1234567890', '123456789012345'].each do |number|
22
+ ie = described_class.new(number)
23
+ expect(ie).not_to be_valid
24
+ end
25
+ end
26
+
27
+ it 'is invalid with invalid check number' do
28
+ ['0733002219945', '0733002219943'].each do |number|
29
+ ie = described_class.new(number)
30
+ expect(ie).not_to be_valid
31
+ end
32
+ end
33
+
34
+ it 'is valid with valid number' do
35
+ ['0746069399231', '0784748156211'].each do |number|
36
+ ie = described_class.new(number)
37
+ expect(ie).to be_valid
38
+ end
39
+ end
40
+
41
+ include_examples 'for to remove all masks', '07847481562-11'
42
+ end
43
+ end
@@ -0,0 +1,16 @@
1
+ require 'spec_helper'
2
+ require_relative 'shared_examples_for_pattern1'
3
+ require_relative 'shared_examples_for_to_remove_all_masks'
4
+
5
+ describe BrDocuments::IE::ES do
6
+ describe '#formatted' do
7
+ it 'returns a formatted ie' do
8
+ ie = described_class.new('123456789')
9
+ expect(ie.formatted).to eq '123456789'
10
+ end
11
+ end
12
+
13
+ it_behaves_like 'a pattern1', 'ES'
14
+
15
+ include_examples 'for to remove all masks', '12345678-9'
16
+ end
@@ -0,0 +1,202 @@
1
+ require 'spec_helper'
2
+
3
+ describe BrDocuments::IE::Factory do
4
+ describe '.create' do
5
+ context 'when uf is AC' do
6
+ it 'returns an instance of BrDocuments::IE::AC' do
7
+ ie = described_class.create('AC', '123456789')
8
+ expect(ie).to be_an_instance_of BrDocuments::IE::AC
9
+ end
10
+ end
11
+
12
+ context 'when uf is AL' do
13
+ it 'returns an instance of BrDocuments::IE::AL' do
14
+ ie = described_class.create('AL', '123456789')
15
+ expect(ie).to be_an_instance_of BrDocuments::IE::AL
16
+ end
17
+ end
18
+
19
+ context 'when uf is AP' do
20
+ it 'returns an instance of BrDocuments::IE::AP' do
21
+ ie = described_class.create('AP', '123456789')
22
+ expect(ie).to be_an_instance_of BrDocuments::IE::AP
23
+ end
24
+ end
25
+
26
+ context 'when uf is AM' do
27
+ it 'returns an instance of BrDocuments::IE::AM' do
28
+ ie = described_class.create('AM', '123456789')
29
+ expect(ie).to be_an_instance_of BrDocuments::IE::AM
30
+ end
31
+ end
32
+
33
+ context 'when uf is BA' do
34
+ it 'returns an instance of BrDocuments::IE::BA' do
35
+ ie = described_class.create('BA', '123456789')
36
+ expect(ie).to be_an_instance_of BrDocuments::IE::BA
37
+ end
38
+ end
39
+
40
+ context 'when uf is CE' do
41
+ it 'returns an instance of BrDocuments::IE::CE' do
42
+ ie = described_class.create('CE', '123456789')
43
+ expect(ie).to be_an_instance_of BrDocuments::IE::CE
44
+ end
45
+ end
46
+
47
+ context 'when uf is DF' do
48
+ it 'returns an instance of BrDocuments::IE::DF' do
49
+ ie = described_class.create('DF', '123456789')
50
+ expect(ie).to be_an_instance_of BrDocuments::IE::DF
51
+ end
52
+ end
53
+
54
+ context 'when uf is ES' do
55
+ it 'returns an instance of BrDocuments::IE::ES' do
56
+ ie = described_class.create('ES', '123456789')
57
+ expect(ie).to be_an_instance_of BrDocuments::IE::ES
58
+ end
59
+ end
60
+
61
+ context 'when uf is GO' do
62
+ it 'returns an instance of BrDocuments::IE::GO' do
63
+ ie = described_class.create('GO', '123456789')
64
+ expect(ie).to be_an_instance_of BrDocuments::IE::GO
65
+ end
66
+ end
67
+
68
+ context 'when uf is MA' do
69
+ it 'returns an instance of BrDocuments::IE::MA' do
70
+ ie = described_class.create('MA', '123456789')
71
+ expect(ie).to be_an_instance_of BrDocuments::IE::MA
72
+ end
73
+ end
74
+
75
+ context 'when uf is MG' do
76
+ it 'returns an instance of BrDocuments::IE::MG' do
77
+ ie = described_class.create('MG', '123456789')
78
+ expect(ie).to be_an_instance_of BrDocuments::IE::MG
79
+ end
80
+ end
81
+
82
+ context 'when uf is MS' do
83
+ it 'returns an instance of BrDocuments::IE::MS' do
84
+ ie = described_class.create('MS', '123456789')
85
+ expect(ie).to be_an_instance_of BrDocuments::IE::MS
86
+ end
87
+ end
88
+
89
+ context 'when uf is MT' do
90
+ it 'returns an instance of BrDocuments::IE::MT' do
91
+ ie = described_class.create('MT', '123456789')
92
+ expect(ie).to be_an_instance_of BrDocuments::IE::MT
93
+ end
94
+ end
95
+
96
+ context 'when uf is PA' do
97
+ it 'returns an instance of BrDocuments::IE::PA' do
98
+ ie = described_class.create('PA', '123456789')
99
+ expect(ie).to be_an_instance_of BrDocuments::IE::PA
100
+ end
101
+ end
102
+
103
+ context 'when uf is PB' do
104
+ it 'returns an instance of BrDocuments::IE::PB' do
105
+ ie = described_class.create('PB', '123456789')
106
+ expect(ie).to be_an_instance_of BrDocuments::IE::PB
107
+ end
108
+ end
109
+
110
+ context 'when uf is PR' do
111
+ it 'returns an instance of BrDocuments::IE::PR' do
112
+ ie = described_class.create('PR', '123456789')
113
+ expect(ie).to be_an_instance_of BrDocuments::IE::PR
114
+ end
115
+ end
116
+
117
+ context 'when uf is PE' do
118
+ it 'returns an instance of BrDocuments::IE::PE' do
119
+ ie = described_class.create('PE', '123456789')
120
+ expect(ie).to be_an_instance_of BrDocuments::IE::PE
121
+ end
122
+ end
123
+
124
+ context 'when uf is PI' do
125
+ it 'returns an instance of BrDocuments::IE::PI' do
126
+ ie = described_class.create('PI', '123456789')
127
+ expect(ie).to be_an_instance_of BrDocuments::IE::PI
128
+ end
129
+ end
130
+
131
+ context 'when uf is RJ' do
132
+ it 'returns an instance of BrDocuments::IE::RJ' do
133
+ ie = described_class.create('RJ', '123456789')
134
+ expect(ie).to be_an_instance_of BrDocuments::IE::RJ
135
+ end
136
+ end
137
+
138
+ context 'when uf is returns' do
139
+ it 'returns an instance of BrDocuments::IE::RN' do
140
+ ie = described_class.create('RN', '123456789')
141
+ expect(ie).to be_an_instance_of BrDocuments::IE::RN
142
+ end
143
+ end
144
+
145
+ context 'when uf is RS' do
146
+ it 'returns an instance of BrDocuments::IE::RS' do
147
+ ie = described_class.create('RS', '123456789')
148
+ expect(ie).to be_an_instance_of BrDocuments::IE::RS
149
+ end
150
+ end
151
+
152
+ context 'when uf is RO' do
153
+ it 'returns an instance of BrDocuments::IE::RO' do
154
+ ie = described_class.create('RO', '123456789')
155
+ expect(ie).to be_an_instance_of BrDocuments::IE::RO
156
+ end
157
+ end
158
+
159
+ context 'when uf is RR' do
160
+ it 'returns an instance of BrDocuments::IE::RR' do
161
+ ie = described_class.create('RR', '123456789')
162
+ expect(ie).to be_an_instance_of BrDocuments::IE::RR
163
+ end
164
+ end
165
+
166
+ context 'when uf is SC' do
167
+ it 'returns an instance of BrDocuments::IE::SC' do
168
+ ie = described_class.create('SC', '123456789')
169
+ expect(ie).to be_an_instance_of BrDocuments::IE::SC
170
+ end
171
+ end
172
+
173
+ context 'when uf is SP' do
174
+ it 'returns an instance of BrDocuments::IE::SP' do
175
+ ie = described_class.create('SP', '123456789')
176
+ expect(ie).to be_an_instance_of BrDocuments::IE::SP
177
+ end
178
+ end
179
+
180
+ context 'when uf is SE' do
181
+ it 'returns an instance of BrDocuments::IE::SE' do
182
+ ie = described_class.create('SE', '123456789')
183
+ expect(ie).to be_an_instance_of BrDocuments::IE::SE
184
+ end
185
+ end
186
+
187
+ context 'when uf is TO' do
188
+ it 'returns an instance of BrDocuments::IE::TO' do
189
+ ie = described_class.create('TO', '123456789')
190
+ expect(ie).to be_an_instance_of BrDocuments::IE::TO
191
+ end
192
+ end
193
+
194
+ context 'when uf is invalid' do
195
+ it 'is returns an error' do
196
+ expect do
197
+ described_class.create('', '')
198
+ end.to raise_error(ArgumentError, t('validator.ie.uf.invalid'))
199
+ end
200
+ end
201
+ end
202
+ end
@@ -0,0 +1,43 @@
1
+ require 'spec_helper'
2
+ require_relative 'shared_examples_for_to_remove_all_masks'
3
+
4
+ describe BrDocuments::IE::GO 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'
9
+ end
10
+ end
11
+
12
+ describe '#valid?' do
13
+ it 'is invalid with malformed number' do
14
+ ['01.390415.9', '280541-600', '1C78150A5'].each do |number|
15
+ ie = described_class.new(number)
16
+ expect(ie).not_to be_valid
17
+ end
18
+ end
19
+
20
+ it 'is invalid with length different to 9' do
21
+ ['1234567', '122345678901'].each do |number|
22
+ ie = described_class.new(number)
23
+ expect(ie).not_to be_valid
24
+ end
25
+ end
26
+
27
+ it 'is invalid with invalid check number' do
28
+ ['903473566', '493184742'].each do |number|
29
+ ie = described_class.new(number)
30
+ expect(ie).not_to be_valid
31
+ end
32
+ end
33
+
34
+ it 'is valid with valid number' do
35
+ ['155432214', '916876470'].each do |number|
36
+ ie = described_class.new(number)
37
+ expect(ie).to be_valid
38
+ end
39
+ end
40
+
41
+ include_examples 'for to remove all masks', '91.687.647-0'
42
+ end
43
+ end
@@ -0,0 +1,16 @@
1
+ require 'spec_helper'
2
+ require_relative 'shared_examples_for_pattern1'
3
+ require_relative 'shared_examples_for_to_remove_all_masks'
4
+
5
+ describe BrDocuments::IE::MA do
6
+ describe '#formatted' do
7
+ it 'returns a formatted ie' do
8
+ ie = described_class.new('123456789')
9
+ expect(ie.formatted).to eq '123456789'
10
+ end
11
+ end
12
+
13
+ it_behaves_like 'a pattern1', 'MA'
14
+
15
+ include_examples 'for to remove all masks', '12345678-9'
16
+ end
@@ -0,0 +1,43 @@
1
+ require 'spec_helper'
2
+ require_relative 'shared_examples_for_to_remove_all_masks'
3
+
4
+ RSpec.describe BrDocuments::IE::MG do
5
+ describe '#formatted' do
6
+ it 'returns a formatted ie' do
7
+ ie = described_class.new('1234567890123')
8
+ expect(ie.formatted).to eq '123.456.789/0123'
9
+ end
10
+ end
11
+
12
+ describe '#valid?' do
13
+ it 'is invalid with malformed number' do
14
+ ['36.311.266.571-75', '4.168.836.973-423', '560.139.778.87-BA'].each do |number|
15
+ ie = described_class.new(number)
16
+ expect(ie).not_to be_valid
17
+ end
18
+ end
19
+
20
+ it 'is invalid with length different to 13' do
21
+ ['123456789', '1234567890123'].each do |number|
22
+ ie = described_class.new(number)
23
+ expect(ie).not_to be_valid
24
+ end
25
+ end
26
+
27
+ it 'is invalid with invalid check number' do
28
+ ['4193434759812', '9427301981832'].each do |number|
29
+ ie = described_class.new(number)
30
+ expect(ie).not_to be_valid
31
+ end
32
+ end
33
+
34
+ it 'is valid with valid number' do
35
+ ['4193434759899', '9427301981820'].each do |number|
36
+ ie = described_class.new(number)
37
+ expect(ie).to be_valid
38
+ end
39
+ end
40
+
41
+ include_examples 'for to remove all masks', '942.730.198.18-20'
42
+ end
43
+ end
@@ -0,0 +1,16 @@
1
+ require 'spec_helper'
2
+ require_relative 'shared_examples_for_pattern1'
3
+ require_relative 'shared_examples_for_to_remove_all_masks'
4
+
5
+ describe BrDocuments::IE::MS do
6
+ describe '#formatted' do
7
+ it 'returns a formatted ie' do
8
+ ie = described_class.new('123456789')
9
+ expect(ie.formatted).to eq '123456789'
10
+ end
11
+ end
12
+
13
+ it_behaves_like 'a pattern1', 'MS'
14
+
15
+ include_examples 'for to remove all masks', '12345678-9'
16
+ end
@@ -0,0 +1,49 @@
1
+ require 'spec_helper'
2
+ require_relative 'shared_examples_for_to_remove_all_masks'
3
+
4
+ RSpec.describe BrDocuments::IE::MT do
5
+ describe '#formatted' do
6
+ it 'returns a formatted ie' do
7
+ ie = described_class.new('12345678901')
8
+ expect(ie.formatted).to eq '1234567890-1'
9
+ end
10
+
11
+ it 'returns empty when ie is empty' do
12
+ ie = described_class.new('')
13
+ expect(ie.formatted).to eql ''
14
+ end
15
+ end
16
+
17
+ describe '#valid?' do
18
+ it 'is invalid with malformed number' do
19
+ ['82.060.187.373', '528843171-72', 'AD402552219'].each do |number|
20
+ ie = described_class.new(number)
21
+ expect(ie).not_to be_valid
22
+ end
23
+ end
24
+
25
+ context 'when the number is greater than 11' do
26
+ subject { described_class.new('123456789012') }
27
+
28
+ it 'is invalid' do
29
+ expect(subject).not_to be_valid
30
+ end
31
+ end
32
+
33
+ it 'is invalid with invalid check number' do
34
+ ['00404609123', '83646580222'].each do |number|
35
+ ie = described_class.new(number)
36
+ expect(ie).not_to be_valid
37
+ end
38
+ end
39
+
40
+ it 'is valid with valid number' do
41
+ ['0013000001-9', '82060187373', '132631946', '13.263.194-6'].each do |number|
42
+ ie = described_class.new(number)
43
+ expect(ie).to be_valid
44
+ end
45
+ end
46
+
47
+ include_examples 'for to remove all masks', '0013000001-9'
48
+ end
49
+ end