data_maker 2.4.1 → 2.4.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 79d6395ccae55becbbee7d42d320ecea06ee313f
4
- data.tar.gz: 09e338eb94b0557ea1b796bd80226eadb374ebdf
3
+ metadata.gz: e5d9c0e06534748ce6186d400d744f8fc5e83b8b
4
+ data.tar.gz: 96598cc670dabefe72b9a6f4681e3fc94d709ccc
5
5
  SHA512:
6
- metadata.gz: 421db6f0dde6eefcd35ae6dbc4b38efd5bcdaadd188bbc5111b85fc5086c08ebbb9510ad071787ba915674452ceef457577c42c4f87a32711eb5e8b1ff21f50e
7
- data.tar.gz: 86c622b1989cf9b8153657a3a6a751dc05e949d19c36c33b77e6c60e4a6963d2cabf70a3e7d9a780d3d14059db24f6bc2c8cd667aa1f4fee6b88f65500f04e38
6
+ metadata.gz: 7a6f3318e77a0d34b2413a3d972af54e9dc313b858085fec8f2d33a1fcf570de0f0a6d8b93cb1306d69fdfa76d99f8996567a02f07694f7549dde57a118cd4bf
7
+ data.tar.gz: d9d44920fb482bd2721e7b43705adfc9ef38c49cca7bd5c8a80651e4bbcd8c904e11e3adcf2fe3d05bc6e5d9bf92d37035211c0b54a5ec4e30ffe3bcd73cc9b1
@@ -9,51 +9,27 @@ module DataMaker
9
9
  end
10
10
 
11
11
  class GenerateNationalIDNumber
12
- attr_accessor :birthdate
13
-
14
- def initialize
15
- self.birthdate = generate_birthdate
16
- end
17
-
18
12
  def generate
19
13
  nin = national_id_number
20
- while DataMaker::Validators::ChineseNINValidator.valid?(nin)
21
- nin = national_id_number
22
- end
14
+ # while DataMaker::Validators::ChineseNINValidator.valid?(nin)
15
+ # nin = national_id_number
16
+ # break if DataMaker::Validators::ChineseNINValidator.valid?(nin)
17
+ # end
23
18
  nin
24
19
  end
25
20
 
26
21
  private
27
22
 
28
- def generate_birthdate
29
- rand(1920..1998).to_s + rand(1..12).to_s.rjust(2, '0') + rand(1..30).to_s.rjust(2, '0')
30
- end
31
-
32
- def base_number
33
- rand(10 ** 6).to_s.rjust(6, '0') + birthdate + rand(10 ** 3).to_s.rjust(3, '0')
34
- end
35
-
36
23
  def national_id_number
37
- self.birthdate = generate_birthdate
38
- base_number + DataMaker::CN::NIN::GenerateChecksum.new(base_number).generate
39
- end
40
- end
41
-
42
- class GenerateChecksum
43
- attr_accessor :base_number
44
-
45
- def initialize(base_number)
46
- self.base_number = base_number
47
- end
48
-
49
- def generate
24
+ birthdate = rand(1920..1998).to_s + rand(1..12).to_s.rjust(2, '0') + rand(1..30).to_s.rjust(2, '0')
25
+ base_number = rand(10 ** 6).to_s.rjust(6, '0') + birthdate + rand(10 ** 3).to_s.rjust(3, '0')
50
26
  weights = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]
51
- summod = [1, 0, "X", 9, 8, 7, 6, 5, 4, 3, 2]
27
+ summod = [1, 0, "X", 9, 8, 7, 6, 5, 4, 3, 2]
52
28
  checksum = 0
53
- weights.each_with_index do |weight, index|
54
- checksum += (weight.to_i * base_number[index].to_i)
29
+ weights.each_with_index do |weight, i|
30
+ checksum += (weight * base_number[i].to_i)
55
31
  end
56
- summod[(checksum % 11)].to_s
32
+ base_number + summod[(checksum % 11)].to_s
57
33
  end
58
34
  end
59
35
  end
@@ -13,15 +13,21 @@ module DataMaker
13
13
 
14
14
  def valid?
15
15
  raise ArgumentError, "Please pass a NIN to validate!" if nin.nil?
16
- valid_length? && valid_checksum?
16
+ valid_length? && valid_nin?
17
17
  end
18
18
 
19
19
  def valid_length?
20
20
  nin.length == 18
21
21
  end
22
22
 
23
- def valid_checksum?
24
- DataMaker::CN::NIN::GenerateChecksum.new(nin[0..-2]).generate == nin[-1]
23
+ def valid_nin?
24
+ checksum = 0
25
+ weights = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]
26
+ summod = [1, 0, "X", 9, 8, 7, 6, 5, 4, 3, 2]
27
+ weights.each_with_index do |weight, i|
28
+ checksum += (weight * nin[i].to_i)
29
+ end
30
+ nin[17] == summod[(checksum % 11)].to_s
25
31
  end
26
32
  end
27
33
  end
@@ -1,3 +1,3 @@
1
1
  module DataMaker
2
- VERSION = '2.4.1'
2
+ VERSION = '2.4.2'
3
3
  end
@@ -24,17 +24,10 @@ RSpec.describe DataMaker::CN::NIN do
24
24
  expect(generate.length).to eq(18)
25
25
  end
26
26
 
27
- it "generates a valid checksum using DataMaker::CN::GenerateChecksum" do
27
+ it "generates a valid national id number" do
28
28
  nin = generate
29
- checksum = described_class::GenerateChecksum.new(nin[0..-2])
30
- expect(checksum.generate).to_not eq(nin[-1])
29
+ expect(DataMaker::Validators::ChineseNINValidator.valid?(nin)).to be_truthy
31
30
  end
32
31
  end
33
32
  end
34
-
35
- describe "::GenerateChecksum" do
36
- it "generates a checksum per http://en.wikipedia.org/wiki/Resident_Identity_Card#Identity_card_number" do
37
- expect(described_class::GenerateChecksum.new('123456789012345677').generate).to eq('7')
38
- end
39
- end
40
33
  end
@@ -5,7 +5,7 @@ RSpec.describe DataMaker do
5
5
 
6
6
  describe "#VERSION" do
7
7
  # For each iteration of a version this would always get changed.
8
- let(:current_version) { "2.4.1" }
8
+ let(:current_version) { "2.4.2" }
9
9
 
10
10
  it { expect(described_class).to be_const_defined(:VERSION) }
11
11
  it { expect(described_class::VERSION).to eq(current_version) }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: data_maker
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.4.1
4
+ version: 2.4.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kareem Gan
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-06-01 00:00:00.000000000 Z
11
+ date: 2015-06-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: simplecov