data_maker 2.4.1 → 2.4.2
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
|
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
|