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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e5d9c0e06534748ce6186d400d744f8fc5e83b8b
|
4
|
+
data.tar.gz: 96598cc670dabefe72b9a6f4681e3fc94d709ccc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7a6f3318e77a0d34b2413a3d972af54e9dc313b858085fec8f2d33a1fcf570de0f0a6d8b93cb1306d69fdfa76d99f8996567a02f07694f7549dde57a118cd4bf
|
7
|
+
data.tar.gz: d9d44920fb482bd2721e7b43705adfc9ef38c49cca7bd5c8a80651e4bbcd8c904e11e3adcf2fe3d05bc6e5d9bf92d37035211c0b54a5ec4e30ffe3bcd73cc9b1
|
data/lib/data_maker/cn/nin.rb
CHANGED
@@ -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
|
-
|
22
|
-
|
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
|
-
|
38
|
-
base_number +
|
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
|
27
|
+
summod = [1, 0, "X", 9, 8, 7, 6, 5, 4, 3, 2]
|
52
28
|
checksum = 0
|
53
|
-
weights.each_with_index do |weight,
|
54
|
-
checksum += (weight
|
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? &&
|
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
|
24
|
-
|
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
|
data/lib/data_maker/version.rb
CHANGED
@@ -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
|
27
|
+
it "generates a valid national id number" do
|
28
28
|
nin = generate
|
29
|
-
|
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.
|
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.
|
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-
|
11
|
+
date: 2015-06-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: simplecov
|