rvr 1.0.0 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/lib/rvr.rb +15 -6
  3. data/spec/rvr_spec.rb +17 -9
  4. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 944027f324c281b9c477e12f63c08c3d651c6237
4
- data.tar.gz: 3898c46558de9889ef2d15acbdd553526549028f
3
+ metadata.gz: dc790324e2847498d28314967d91439640b193c7
4
+ data.tar.gz: 2015a8c2580024b88dcd0fb457b716b6c06ae1b2
5
5
  SHA512:
6
- metadata.gz: e235f90ca5ca3e385da21c7429df79eef15a52eb15a243f8015f9dbf2e81949f7cb92b538a2d79573938981a8f014b8000b1878618454a473428335f67f7cb87
7
- data.tar.gz: dbbc6eb066fe76813689ca4a70ca477a30c32aadfb7f416faa929c6a833b4cea344608ac6356a9a49b8eb3e6240858617c9569153df6993684c165ee7852f8bd
6
+ metadata.gz: 921de401c3e8e7beec9c659bc7fab2619849e1cd56031f10525a9fe3d486806417982af58a0cf2fd24304a0e9edefa629d379e0bb94f0dc3d83bbd8fff1c5d16
7
+ data.tar.gz: 596649066094f8fe9720b6da96a6f6aa684446bbafab912abbbd4efd04078878566afcad14ec4e94a6ed1a17f0c56654d7e75c9bf6348187cc4f237cf6502f64
data/lib/rvr.rb CHANGED
@@ -5,8 +5,9 @@ class Rvr
5
5
 
6
6
  attr_accessor :regon
7
7
 
8
- validates :regon, presence: true, numericality: true, length: { is: 9 }
9
- validate :checksum
8
+ validates :regon, presence: true, numericality: true
9
+ validate :check_length
10
+ validate :checksum, if: :regon?
10
11
 
11
12
  def initialize(value)
12
13
  self.regon = value
@@ -17,18 +18,26 @@ class Rvr
17
18
  end
18
19
 
19
20
  private
21
+ def check_length
22
+ errors.add(:regon) unless regon.size == 9 || regon.size == 14
23
+ end
24
+
25
+ def regon?
26
+ !regon.blank?
27
+ end
28
+
20
29
  def checksum
21
- errors.add(:regon) unless control_number == regon[8].to_i
30
+ errors.add(:regon) unless control_number == regon[regon.length-1].to_i
22
31
  end
23
32
 
24
33
  def control_number
25
- s = 0
26
- (0..7).each { |i| s += (regon[i].to_i*control_array[i]) }
34
+ r = regon.split("")
35
+ s = control_array.inject(0) { |sum, a| sum += a*r.shift.to_i }
27
36
  s % 11 == 10 ? 0 : s % 11
28
37
  end
29
38
 
30
39
  def control_array
31
- [8, 9, 2, 3, 4, 5, 6, 7]
40
+ regon.length == 9 ? [8, 9, 2, 3, 4, 5, 6, 7] : [2, 4, 8, 5, 0, 9, 7, 3, 6, 1, 2, 4, 8]
32
41
  end
33
42
  end
34
43
 
data/spec/rvr_spec.rb CHANGED
@@ -11,32 +11,36 @@ describe Rvr do
11
11
  it { Rvr.new("12345").should_not be_valid }
12
12
 
13
13
  it { Rvr.new("1234567890").should_not be_valid }
14
+
15
+ it { Rvr.new("123456789123").should_not be_valid }
16
+
17
+ it { Rvr.new("123456789012345").should_not be_valid }
14
18
  end
15
19
 
16
20
  context "should verify numericality of regon" do
17
- it { Rvr.new("abcdefghij").should_not be_valid }
21
+ it { Rvr.new("abcdefghi").should_not be_valid }
18
22
 
19
- it { Rvr.new("12345678a0").should_not be_valid }
23
+ it { Rvr.new("12345678a").should_not be_valid }
20
24
  end
21
25
 
22
26
  it "regon always should be a string" do
23
- @nvr = Rvr.new(1234567890)
24
- @nvr.regon.should eq("1234567890")
27
+ @nvr = Rvr.new(123456789)
28
+ @nvr.regon.should eq("123456789")
25
29
  end
26
30
 
27
31
  it "should remove all spaces from regon" do
28
- @nvr = Rvr.new("123 45 67 890")
29
- @nvr.regon.should eq("1234567890")
32
+ @nvr = Rvr.new("123 45 67 89")
33
+ @nvr.regon.should eq("123456789")
30
34
  end
31
35
 
32
36
  it "should remove all dashes from regon" do
33
- @nvr = Rvr.new("123-45-67-890")
34
- @nvr.regon.should eq("1234567890")
37
+ @nvr = Rvr.new("123-45-67-89")
38
+ @nvr.regon.should eq("123456789")
35
39
  end
36
40
 
37
41
  context "checksum" do
38
42
  it "shouldn't accept incorrect regon number" do
39
- Rvr.new("1234567890").should_not be_valid
43
+ Rvr.new("123456789").should_not be_valid
40
44
  end
41
45
 
42
46
  context "should accept correct regon numbers" do
@@ -45,6 +49,10 @@ describe Rvr do
45
49
  it { Rvr.new("000515780").should be_valid }
46
50
 
47
51
  it { Rvr.new("14-00-92-077").should be_valid }
52
+
53
+ it { Rvr.new(12345678512347).should be_valid }
54
+
55
+ it { Rvr.new("235 113 328 571 88").should be_valid }
48
56
  end
49
57
  end
50
58
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rvr
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Szymon Rut
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-07-12 00:00:00.000000000 Z
11
+ date: 2013-07-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activemodel