unique_identifier 0.0.2 → 0.0.3

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: ef2436a63aa5338ba9990158576c833975acb805
4
- data.tar.gz: 6569f75cf20811cbbcc35f35facb961784edc7b3
3
+ metadata.gz: 6fba706996f4d605d85e6e8a9364981d7150fc6d
4
+ data.tar.gz: ef8444f104bbc9eb045416441e449da3516c8a05
5
5
  SHA512:
6
- metadata.gz: 104ca7b13cabdc8c20b017558b6a4d7ac289a2a5f46f859d8a479db320cf12252aad99a03a3b121a20ca4d2c688ce9319660278effd4645f7a7e45d5fa9565f8
7
- data.tar.gz: 935896bf3463c6917e5c82b7648af904ed1fb283f0a9af5ca18e49e298d39a52dc9c3bef7c5d87559430084fcb07ff4fc1340965322b1859f35f95d7f52ef7e3
6
+ metadata.gz: 2dc1fb3c4245a81f3cfec364af9553c33fd95619a7877f47bea6e125230d3c8d193e5e311646945708d7cb67a1d1f4140c6eaa12d0441ca3f7757dcf6f833a8c
7
+ data.tar.gz: c48adcce59cc91713e0baba12e7c7786ee1a7617769a1b5c181ee997d768c5f4a2bab93407980efc578eca48f8fb60816dcef956ba2b9ff058d9bcf8c9783a4d
@@ -1,3 +1,3 @@
1
1
  module UniqueIdentifier
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
@@ -6,14 +6,14 @@ module UniqueIdentifier
6
6
  module ClassMethods
7
7
 
8
8
  mattr_accessor :field, :block, :klass
9
-
9
+
10
10
  def unique_id(field, block)
11
11
  @klass = self.name.constantize
12
12
  @klass.const_set('BLOCK', block)
13
13
  @klass.const_set('FIELD', field)
14
14
  @klass.set_callback(:create, :before, :generate_unique_id)
15
15
  end
16
-
16
+
17
17
  end
18
18
 
19
19
  module InstanceMethods
@@ -21,7 +21,9 @@ module UniqueIdentifier
21
21
  return if self.send(self.class::FIELD)
22
22
  identifier = loop do
23
23
  random = self.class::BLOCK.call
24
- break random unless self.class.exists?(self.class::FIELD => random)
24
+ unless self.class.base_class.exists?(self.class::FIELD => random)
25
+ break random
26
+ end
25
27
  end
26
28
  self.send "#{self.class::FIELD}=", identifier
27
29
  end
data/spec/spec_helper.rb CHANGED
@@ -10,13 +10,14 @@ UniqueIdentifier::Railtie.insert
10
10
  ActiveRecord::Base.establish_connection(adapter: "sqlite3", database: ":memory:")
11
11
 
12
12
  RSpec.configure do |config|
13
-
13
+
14
14
  config.before(:all) do
15
15
  m = ActiveRecord::Migration.new
16
- m.verbose = false
17
- m.create_table :dummy_models do |t|
16
+ m.verbose = false
17
+ m.create_table :dummy_models do |t|
18
18
  t.string :number
19
- end
19
+ t.string :type
20
+ end
20
21
  end
21
22
 
22
23
  config.after(:all) do
@@ -39,14 +40,11 @@ def build_class(name, options = {})
39
40
  # Set class as a constant
40
41
  klass = Object.const_set(class_name, Class.new(ActiveRecord::Base))
41
42
 
42
- klass.const_set("MODE", "test")
43
-
44
43
  klass.class_eval do
45
- include UniqueIdentifier::Glue
46
44
 
47
- unique_identifier name, options
45
+ unique_id name, options
48
46
 
49
47
  end
50
-
48
+
51
49
  klass
52
- end
50
+ end
@@ -1,15 +1,51 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe UniqueIdentifier do
4
+ describe ".unique_identifier" do
5
+
6
+ context "callbacks" do
7
+
8
+ before do
9
+ DummyModel = build_class(
10
+ :number,
11
+ Proc.new { "R#{Array.new(9) { rand(9) }.join}" }
12
+ )
13
+ end
14
+
15
+ let(:model) { DummyModel.create }
16
+
17
+ it "populates the specified field on create" do
18
+ expect(model.number).to match(/R\d{9}/)
19
+ end
4
20
 
5
- describe "unique_identifier" do
6
-
7
- it "should" do
8
- DummyModel = build_class( :number, Proc.new { "#{DummyModel::MODE}#{Array.new(9) { rand(9) }.join}" } )
9
- model1 = DummyModel.create
10
- model1.number.should_not be_nil
11
21
  end
12
22
 
13
- end
23
+ context "uniqueness" do
24
+
25
+ before do
26
+ i = -1
27
+ DummyModel = build_class(:number, Proc.new { i += 1 })
28
+ class InheritedModel < DummyModel
29
+ x = -1
30
+ unique_id :number, Proc.new { x += 1 }
31
+ end
32
+ class FurtherInheritedModel < InheritedModel
33
+ j = -1
34
+ unique_id :number, Proc.new { j += 1 }
35
+ end
36
+ end
14
37
 
15
- end
38
+ let!(:model) { DummyModel.create }
39
+ let!(:inherited_model) { InheritedModel.create }
40
+ let!(:further_inherited_model) { FurtherInheritedModel.create }
41
+
42
+ it "creates only truely unique fields" do
43
+ expect(model.number).to eq("0")
44
+ expect(inherited_model.number).to eq("1")
45
+ expect(further_inherited_model.number).to eq("2")
46
+ end
47
+
48
+ end
49
+
50
+ end
51
+ end
@@ -22,7 +22,7 @@ Gem::Specification.new do |spec|
22
22
  spec.add_development_dependency "rake"
23
23
  spec.add_development_dependency "rails"
24
24
  spec.add_development_dependency "rspec"
25
- spec.add_development_dependency "debugger"
25
+ spec.add_development_dependency "byebug"
26
26
  spec.add_development_dependency "sqlite3"
27
27
 
28
28
  end
metadata CHANGED
@@ -1,97 +1,97 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: unique_identifier
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Justin Grubbs
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-05-05 00:00:00.000000000 Z
11
+ date: 2016-05-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: '1.3'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.3'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - '>='
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - '>='
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rails
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - '>='
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
47
  version: '0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - '>='
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rspec
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - '>='
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - '>='
66
+ - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
- name: debugger
70
+ name: byebug
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - '>='
73
+ - - ">="
74
74
  - !ruby/object:Gem::Version
75
75
  version: '0'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - '>='
80
+ - - ">="
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: sqlite3
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - '>='
87
+ - - ">="
88
88
  - !ruby/object:Gem::Version
89
89
  version: '0'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - '>='
94
+ - - ">="
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
97
  description: before_create helper to create unique idenfication fields
@@ -101,7 +101,7 @@ executables: []
101
101
  extensions: []
102
102
  extra_rdoc_files: []
103
103
  files:
104
- - .gitignore
104
+ - ".gitignore"
105
105
  - Gemfile
106
106
  - LICENSE.txt
107
107
  - README.md
@@ -121,17 +121,17 @@ require_paths:
121
121
  - lib
122
122
  required_ruby_version: !ruby/object:Gem::Requirement
123
123
  requirements:
124
- - - '>='
124
+ - - ">="
125
125
  - !ruby/object:Gem::Version
126
126
  version: '0'
127
127
  required_rubygems_version: !ruby/object:Gem::Requirement
128
128
  requirements:
129
- - - '>='
129
+ - - ">="
130
130
  - !ruby/object:Gem::Version
131
131
  version: '0'
132
132
  requirements: []
133
133
  rubyforge_project:
134
- rubygems_version: 2.2.2
134
+ rubygems_version: 2.4.6
135
135
  signing_key:
136
136
  specification_version: 4
137
137
  summary: before_create helper to create unique idenfication fields