data_maker 2.3.5 → 2.4.1

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: 4e8bd10cd1054c7b976126fc61233d7d32f0396c
4
- data.tar.gz: ff5d8f214ee9e2559a77c6ce12a25e2c24daa44f
3
+ metadata.gz: 79d6395ccae55becbbee7d42d320ecea06ee313f
4
+ data.tar.gz: 09e338eb94b0557ea1b796bd80226eadb374ebdf
5
5
  SHA512:
6
- metadata.gz: 237e6cdcb8e942e4843926171692a514ff742b5a1fb3f9c7214bd4e9d217363213231fd7af78e86e12ee5c4a817a3564f117f2079ca34d076ed7c0410168c7b8
7
- data.tar.gz: ddc7c624da099b0152b8823025d38f4241daa5e79e4dc4e369129837846bc43f6d998212006ef07d5f5f245a05f9146f1448417b3d819f5728bb1744c8363cbc
6
+ metadata.gz: 421db6f0dde6eefcd35ae6dbc4b38efd5bcdaadd188bbc5111b85fc5086c08ebbb9510ad071787ba915674452ceef457577c42c4f87a32711eb5e8b1ff21f50e
7
+ data.tar.gz: 86c622b1989cf9b8153657a3a6a751dc05e949d19c36c33b77e6c60e4a6963d2cabf70a3e7d9a780d3d14059db24f6bc2c8cd667aa1f4fee6b88f65500f04e38
data/data_maker.gemspec CHANGED
@@ -52,6 +52,7 @@ Gem::Specification.new do |gem|
52
52
  lib/data_maker.rb
53
53
  lib/data_maker/cn/address.rb
54
54
  lib/data_maker/cn/name.rb
55
+ lib/data_maker/cn/nin.rb
55
56
  lib/data_maker/cn/phone_number.rb
56
57
  lib/data_maker/data/cn/address/aba_districts
57
58
  lib/data_maker/data/cn/address/akesu_districts
@@ -109,6 +110,7 @@ Gem::Specification.new do |gem|
109
110
  lib/data_maker/data/cn/address/chuxiong_districts
110
111
  lib/data_maker/data/cn/address/chuzhou_districts
111
112
  lib/data_maker/data/cn/address/cities
113
+ lib/data_maker/data/cn/address/city_no_districts
112
114
  lib/data_maker/data/cn/address/city_provinces
113
115
  lib/data_maker/data/cn/address/dalian_districts
114
116
  lib/data_maker/data/cn/address/dalibaizu_districts
@@ -450,10 +452,12 @@ Gem::Specification.new do |gem|
450
452
  lib/data_maker/utilities/array_utilities.rb
451
453
  lib/data_maker/utilities/module_utilities.rb
452
454
  lib/data_maker/validators/chinese_characters.rb
455
+ lib/data_maker/validators/chinese_nin_validator.rb
453
456
  lib/data_maker/validators/chinese_phone_number.rb
454
457
  lib/data_maker/version.rb
455
458
  spec/lib/data_maker/cn/address_spec.rb
456
459
  spec/lib/data_maker/cn/name_spec.rb
460
+ spec/lib/data_maker/cn/nin_spec.rb
457
461
  spec/lib/data_maker/cn/phone_number_spec.rb
458
462
  spec/lib/data_maker/data_maker_spec.rb
459
463
  spec/lib/data_maker/utilities/array_utilities_spec.rb
@@ -0,0 +1,61 @@
1
+ module DataMaker
2
+ module CN
3
+ module NIN
4
+ extend ModuleUtilities
5
+
6
+ def self.national_id_number
7
+ nin = GenerateNationalIDNumber.new
8
+ nin.generate
9
+ end
10
+
11
+ class GenerateNationalIDNumber
12
+ attr_accessor :birthdate
13
+
14
+ def initialize
15
+ self.birthdate = generate_birthdate
16
+ end
17
+
18
+ def generate
19
+ nin = national_id_number
20
+ while DataMaker::Validators::ChineseNINValidator.valid?(nin)
21
+ nin = national_id_number
22
+ end
23
+ nin
24
+ end
25
+
26
+ private
27
+
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
+ 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
50
+ 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]
52
+ checksum = 0
53
+ weights.each_with_index do |weight, index|
54
+ checksum += (weight.to_i * base_number[index].to_i)
55
+ end
56
+ summod[(checksum % 11)].to_s
57
+ end
58
+ end
59
+ end
60
+ end
61
+ end
@@ -0,0 +1,18 @@
1
+ dongcheng
2
+ xicheng
3
+ chongwen
4
+ xuanwu
5
+ zhaoyang
6
+ fengtai
7
+ shijingshan
8
+ haidian
9
+ mentougou
10
+ fangshan
11
+ tongzhou
12
+ shunyi
13
+ changping
14
+ daxing
15
+ huairou
16
+ pinggu
17
+ miyun
18
+ yanqing
@@ -0,0 +1,28 @@
1
+ module DataMaker
2
+ module Validators
3
+ class ChineseNINValidator
4
+ attr_accessor :nin
5
+
6
+ def initialize(nin)
7
+ self.nin = nin
8
+ end
9
+
10
+ def self.valid?(*args)
11
+ new(*args).valid?
12
+ end
13
+
14
+ def valid?
15
+ raise ArgumentError, "Please pass a NIN to validate!" if nin.nil?
16
+ valid_length? && valid_checksum?
17
+ end
18
+
19
+ def valid_length?
20
+ nin.length == 18
21
+ end
22
+
23
+ def valid_checksum?
24
+ DataMaker::CN::NIN::GenerateChecksum.new(nin[0..-2]).generate == nin[-1]
25
+ end
26
+ end
27
+ end
28
+ end
@@ -1,3 +1,3 @@
1
1
  module DataMaker
2
- VERSION = '2.3.5'
2
+ VERSION = '2.4.1'
3
3
  end
@@ -0,0 +1,40 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe DataMaker::CN::NIN do
4
+ describe "#self.national_id_number" do
5
+ it "calls DataMaker::CN::GenerateNationalIDNumber#generate" do
6
+ expect_any_instance_of(described_class::GenerateNationalIDNumber).to receive(:generate)
7
+ described_class.national_id_number
8
+ end
9
+ end
10
+
11
+ describe "::GenerateNationalIDNumber" do
12
+ describe "#initialize" do
13
+ let(:param) { rand(1000..2000) }
14
+
15
+ it "raises an error when a parameter is passed" do
16
+ expect { described_class::GenerateNationalIDNumber.new(param) }.to raise_error
17
+ end
18
+ end
19
+
20
+ describe "#generate" do
21
+ let(:generate) { described_class::GenerateNationalIDNumber.new.generate }
22
+
23
+ it "generates a string with a length of 18" do
24
+ expect(generate.length).to eq(18)
25
+ end
26
+
27
+ it "generates a valid checksum using DataMaker::CN::GenerateChecksum" do
28
+ nin = generate
29
+ checksum = described_class::GenerateChecksum.new(nin[0..-2])
30
+ expect(checksum.generate).to_not eq(nin[-1])
31
+ end
32
+ end
33
+ 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
+ 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.3.5" }
8
+ let(:current_version) { "2.4.1" }
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.3.5
4
+ version: 2.4.1
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-05-20 00:00:00.000000000 Z
11
+ date: 2015-06-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: simplecov
@@ -181,6 +181,7 @@ files:
181
181
  - lib/data_maker.rb
182
182
  - lib/data_maker/cn/address.rb
183
183
  - lib/data_maker/cn/name.rb
184
+ - lib/data_maker/cn/nin.rb
184
185
  - lib/data_maker/cn/phone_number.rb
185
186
  - lib/data_maker/data/cn/address/aba_districts
186
187
  - lib/data_maker/data/cn/address/akesu_districts
@@ -238,6 +239,7 @@ files:
238
239
  - lib/data_maker/data/cn/address/chuxiong_districts
239
240
  - lib/data_maker/data/cn/address/chuzhou_districts
240
241
  - lib/data_maker/data/cn/address/cities
242
+ - lib/data_maker/data/cn/address/city_no_districts
241
243
  - lib/data_maker/data/cn/address/city_provinces
242
244
  - lib/data_maker/data/cn/address/dalian_districts
243
245
  - lib/data_maker/data/cn/address/dalibaizu_districts
@@ -579,10 +581,12 @@ files:
579
581
  - lib/data_maker/utilities/array_utilities.rb
580
582
  - lib/data_maker/utilities/module_utilities.rb
581
583
  - lib/data_maker/validators/chinese_characters.rb
584
+ - lib/data_maker/validators/chinese_nin_validator.rb
582
585
  - lib/data_maker/validators/chinese_phone_number.rb
583
586
  - lib/data_maker/version.rb
584
587
  - spec/lib/data_maker/cn/address_spec.rb
585
588
  - spec/lib/data_maker/cn/name_spec.rb
589
+ - spec/lib/data_maker/cn/nin_spec.rb
586
590
  - spec/lib/data_maker/cn/phone_number_spec.rb
587
591
  - spec/lib/data_maker/data_maker_spec.rb
588
592
  - spec/lib/data_maker/utilities/array_utilities_spec.rb
@@ -615,6 +619,7 @@ summary: Data generator gem for aiding in development and testing for applicatio
615
619
  test_files:
616
620
  - spec/lib/data_maker/cn/address_spec.rb
617
621
  - spec/lib/data_maker/cn/name_spec.rb
622
+ - spec/lib/data_maker/cn/nin_spec.rb
618
623
  - spec/lib/data_maker/cn/phone_number_spec.rb
619
624
  - spec/lib/data_maker/data_maker_spec.rb
620
625
  - spec/lib/data_maker/utilities/array_utilities_spec.rb