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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: bb487d9d86c27524deb86b68a427f8eb375dee3c79b2ef3a51780e551c8eb08e
4
- data.tar.gz: ab945dce20f45f5da54d47517ccb92fa51ac668932696d897f4981a915d86df8
3
+ metadata.gz: 37a56fa2cb38a6063a8c08b28726d881d7caee787207bf87fe9707ec811a1220
4
+ data.tar.gz: dce5488d709fd8f6cb1b2c31a5fe7ddcec2cab8c52d19f7b7fe5bf0547390442
5
5
  SHA512:
6
- metadata.gz: 9fe9865dc6c6b9c94988b6f67b371996fc3e287033e0587026e502606592041e8fb58088015fc084c964bde7edd297ebed756d5fb3914c065f220c4b779ef776
7
- data.tar.gz: 2a7cb3d025e30a6019f7a2cec9774ef62ca7281c496187cc87f6e4e4c09ecb2c85c287e65ff8f3a89b15fa9d39eb0e9b32054688b1c5c2a8ecbddad4b41e2111
6
+ metadata.gz: e0ebeeda069d76cb831a60b381c4d1232d7a85085a68b429925111f5af0d8d014704d2bb8a5b28e8903903d85bedcd497c1fded581f8d36724f9a4dbc09e78b2
7
+ data.tar.gz: acde384b7f7fd58783d3d3990c5e58f0c1dc9db963f868262ee28c11a97433ada71b626cb9e9eb4cf690ca88c4ab929b1e50629ee198676309984ddd0c54268a
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- br_documents (1.0.0)
4
+ br_documents (1.0.1)
5
5
  activemodel (>= 4.0.0)
6
6
  i18n (>= 0.6.5)
7
7
 
@@ -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 = "#{@number[0, 3]}0#{@number[3..10]}"
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 = "#{@number[0, 11]}#{digital_check1}"
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
- @number[-2, 2] == "#{digital_check1}#{digital_check2}"
31
+ number[-2, 2] == "#{digital_check1}#{digital_check2}"
32
32
  end
33
33
 
34
34
  private
@@ -1,3 +1,3 @@
1
1
  module BrDocuments
2
- VERSION = '1.0.0'.freeze
2
+ VERSION = '1.0.1'.freeze
3
3
  end
@@ -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 malformed number' do
14
- ['363.112.657.12-75', '4.168.836.973-423', '560.139.778.87-12'].each do |number|
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 length different to 13' do
21
- ['123456789', '1234567890123'].each do |number|
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
- it_behaves_like 'for to remove all masks', '942.730.198/1820'
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
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: br_documents
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - ASSEINFO - Sistemas de Informação