br_documents 1.0.0 → 1.0.1
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/Gemfile.lock +1 -1
- data/lib/br_documents/ie/mg.rb +6 -6
- data/lib/br_documents/version.rb +1 -1
- data/spec/br_documents/ie/mg_spec.rb +33 -6
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 37a56fa2cb38a6063a8c08b28726d881d7caee787207bf87fe9707ec811a1220
|
|
4
|
+
data.tar.gz: dce5488d709fd8f6cb1b2c31a5fe7ddcec2cab8c52d19f7b7fe5bf0547390442
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: e0ebeeda069d76cb831a60b381c4d1232d7a85085a68b429925111f5af0d8d014704d2bb8a5b28e8903903d85bedcd497c1fded581f8d36724f9a4dbc09e78b2
|
|
7
|
+
data.tar.gz: acde384b7f7fd58783d3d3990c5e58f0c1dc9db963f868262ee28c11a97433ada71b626cb9e9eb4cf690ca88c4ab929b1e50629ee198676309984ddd0c54268a
|
data/Gemfile.lock
CHANGED
data/lib/br_documents/ie/mg.rb
CHANGED
|
@@ -9,26 +9,26 @@ module BrDocuments
|
|
|
9
9
|
protected
|
|
10
10
|
|
|
11
11
|
def format_ie(number)
|
|
12
|
-
number.sub(/(\d{3})(\d{3})(\d{3})(\d{4})/, '\\1.\\2.\\3/\\4')
|
|
12
|
+
number.sub(/(\d{3})(\d{3})(\d{3})(\d{1,4})/, '\\1.\\2.\\3/\\4')
|
|
13
13
|
end
|
|
14
14
|
|
|
15
15
|
def valid_format?
|
|
16
|
-
regex = /^(\d{3}\.\d{3}\.\d{3}\/\d{4})$|^(\d{13})$/
|
|
16
|
+
regex = /^(\d{3}\.\d{3}\.\d{3}\/\d{1,4})$|^(\d{3,13})$/
|
|
17
17
|
regex.match(@number).present?
|
|
18
18
|
end
|
|
19
19
|
|
|
20
20
|
def valid_check_digit?
|
|
21
|
-
@number.gsub
|
|
21
|
+
number = @number.gsub(/[\.\/-]/, '').rjust(13, '0')
|
|
22
22
|
|
|
23
|
-
number1 = "#{
|
|
23
|
+
number1 = "#{number[0, 3]}0#{number[3..10]}"
|
|
24
24
|
weight1 = [1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2]
|
|
25
25
|
digital_check1 = generate_first_digital_check(number1, weight1)
|
|
26
26
|
|
|
27
|
-
number2 = "#{
|
|
27
|
+
number2 = "#{number[0, 11]}#{digital_check1}"
|
|
28
28
|
weight2 = [3, 2, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2]
|
|
29
29
|
digital_check2 = generate_check_digit(number2, weight2)
|
|
30
30
|
|
|
31
|
-
|
|
31
|
+
number[-2, 2] == "#{digital_check1}#{digital_check2}"
|
|
32
32
|
end
|
|
33
33
|
|
|
34
34
|
private
|
data/lib/br_documents/version.rb
CHANGED
|
@@ -7,25 +7,38 @@ RSpec.describe BrDocuments::IE::MG do
|
|
|
7
7
|
ie = described_class.new('1234567890123')
|
|
8
8
|
expect(ie.formatted).to eq '123.456.789/0123'
|
|
9
9
|
end
|
|
10
|
+
|
|
11
|
+
it 'formats short numbers without leading zeros' do
|
|
12
|
+
ie = described_class.new('4056384072')
|
|
13
|
+
expect(ie.formatted).to eql '405.638.407/2'
|
|
14
|
+
|
|
15
|
+
ie = described_class.new('40563840072')
|
|
16
|
+
expect(ie.formatted).to eql '405.638.400/72'
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
it 'does not format numbers with less than 10 digits' do
|
|
20
|
+
ie = described_class.new('405638472')
|
|
21
|
+
expect(ie.formatted).to eql '405638472'
|
|
22
|
+
end
|
|
10
23
|
end
|
|
11
24
|
|
|
12
25
|
describe '#valid?' do
|
|
13
|
-
it 'is invalid with
|
|
14
|
-
['
|
|
26
|
+
it 'is invalid with less than 3 digits' do
|
|
27
|
+
['1', '12'].each do |number|
|
|
15
28
|
ie = described_class.new(number)
|
|
16
29
|
expect(ie).not_to be_valid
|
|
17
30
|
end
|
|
18
31
|
end
|
|
19
32
|
|
|
20
|
-
it 'is invalid with
|
|
21
|
-
['
|
|
33
|
+
it 'is invalid with malformed number' do
|
|
34
|
+
['363.112.657.12-75', '4.168.836.973-423', '560.139.778.87-12'].each do |number|
|
|
22
35
|
ie = described_class.new(number)
|
|
23
36
|
expect(ie).not_to be_valid
|
|
24
37
|
end
|
|
25
38
|
end
|
|
26
39
|
|
|
27
40
|
it 'is invalid with invalid check number' do
|
|
28
|
-
['4193434759812', '9427301981832'].each do |number|
|
|
41
|
+
['123456789', '1234567890123', '4193434759812', '9427301981832'].each do |number|
|
|
29
42
|
ie = described_class.new(number)
|
|
30
43
|
expect(ie).not_to be_valid
|
|
31
44
|
end
|
|
@@ -38,6 +51,20 @@ RSpec.describe BrDocuments::IE::MG do
|
|
|
38
51
|
end
|
|
39
52
|
end
|
|
40
53
|
|
|
41
|
-
|
|
54
|
+
it 'is valid with less than 13 digits' do
|
|
55
|
+
ie = described_class.new('40563840072')
|
|
56
|
+
expect(ie).to be_valid
|
|
57
|
+
|
|
58
|
+
ie = described_class.new('183')
|
|
59
|
+
expect(ie).to be_valid
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
it 'is valid with masked number' do
|
|
63
|
+
ie = described_class.new('942.730.198/1820')
|
|
64
|
+
expect(ie).to be_valid
|
|
65
|
+
|
|
66
|
+
ie = described_class.new('123.456.782/2')
|
|
67
|
+
expect(ie).to be_valid
|
|
68
|
+
end
|
|
42
69
|
end
|
|
43
70
|
end
|