enumerate_it 1.0.2 → 1.0.3
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.
- data/Gemfile.lock +12 -1
- data/lib/enumerate_it/class_methods.rb +2 -1
- data/lib/enumerate_it/version.rb +1 -1
- data/spec/enumerate_it_spec.rb +39 -9
- metadata +36 -4
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
enumerate_it (1.0.
|
4
|
+
enumerate_it (1.0.3)
|
5
5
|
activesupport (>= 3.0.0)
|
6
6
|
|
7
7
|
GEM
|
@@ -19,8 +19,16 @@ GEM
|
|
19
19
|
activesupport (3.0.5)
|
20
20
|
arel (2.0.9)
|
21
21
|
builder (2.1.2)
|
22
|
+
coderay (1.0.9)
|
22
23
|
diff-lcs (1.1.2)
|
23
24
|
i18n (0.5.0)
|
25
|
+
method_source (0.8.1)
|
26
|
+
pry (0.9.12)
|
27
|
+
coderay (~> 1.0.5)
|
28
|
+
method_source (~> 0.8)
|
29
|
+
slop (~> 3.4)
|
30
|
+
pry-nav (0.2.3)
|
31
|
+
pry (~> 0.9.10)
|
24
32
|
rake (0.9.2.2)
|
25
33
|
rspec (2.5.0)
|
26
34
|
rspec-core (~> 2.5.0)
|
@@ -30,6 +38,7 @@ GEM
|
|
30
38
|
rspec-expectations (2.5.0)
|
31
39
|
diff-lcs (~> 1.1.2)
|
32
40
|
rspec-mocks (2.5.0)
|
41
|
+
slop (3.4.4)
|
33
42
|
tzinfo (0.3.24)
|
34
43
|
|
35
44
|
PLATFORMS
|
@@ -38,5 +47,7 @@ PLATFORMS
|
|
38
47
|
DEPENDENCIES
|
39
48
|
activerecord (>= 3.0.5)
|
40
49
|
enumerate_it!
|
50
|
+
pry
|
51
|
+
pry-nav
|
41
52
|
rake
|
42
53
|
rspec (>= 2.5.0)
|
@@ -68,7 +68,8 @@ module EnumerateIt
|
|
68
68
|
|
69
69
|
def define_enumeration_class(attribute, options)
|
70
70
|
if options[:with].nil?
|
71
|
-
|
71
|
+
inner_enum_class_name = attribute.to_s.camelize.to_sym
|
72
|
+
options[:with] = self.constants.include?(inner_enum_class_name) ? self.const_get(inner_enum_class_name) : attribute.to_s.camelize.constantize
|
72
73
|
end
|
73
74
|
end
|
74
75
|
|
data/lib/enumerate_it/version.rb
CHANGED
data/spec/enumerate_it_spec.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
#encoding: utf-8
|
2
2
|
require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
3
|
+
require 'active_record'
|
3
4
|
|
4
5
|
class TestEnumeration < EnumerateIt::Base
|
5
6
|
associate_values(
|
@@ -132,7 +133,9 @@ describe EnumerateIt do
|
|
132
133
|
class FooBar
|
133
134
|
extend EnumerateIt
|
134
135
|
attr_accessor :test_enumeration
|
136
|
+
|
135
137
|
has_enumeration_for :test_enumeration
|
138
|
+
|
136
139
|
def initialize(test_enumeration_value)
|
137
140
|
@test_enumeration = test_enumeration_value
|
138
141
|
end
|
@@ -143,6 +146,34 @@ describe EnumerateIt do
|
|
143
146
|
target = FooBar.new(TestEnumeration::VALUE_1)
|
144
147
|
target.test_enumeration_humanize.should == 'Hey, I am 1!'
|
145
148
|
end
|
149
|
+
|
150
|
+
context "when using a nested class as the enumeration" do
|
151
|
+
before do
|
152
|
+
class NestedEnum < EnumerateIt::Base
|
153
|
+
associate_values :foo => ['1', 'Fooo'], :bar => ['2', 'Barrrr']
|
154
|
+
end
|
155
|
+
|
156
|
+
class ClassWithNestedEnum
|
157
|
+
class NestedEnum < EnumerateIt::Base
|
158
|
+
associate_values :foo => ['1', 'Blerrgh'], :bar => ['2' => 'Blarghhh']
|
159
|
+
end
|
160
|
+
|
161
|
+
extend EnumerateIt
|
162
|
+
|
163
|
+
attr_accessor :nested_enum
|
164
|
+
|
165
|
+
has_enumeration_for :nested_enum
|
166
|
+
|
167
|
+
def initialize(nested_enum_value)
|
168
|
+
@nested_enum = nested_enum_value
|
169
|
+
end
|
170
|
+
end
|
171
|
+
end
|
172
|
+
|
173
|
+
it "uses the inner class as the enumeration class" do
|
174
|
+
target = ClassWithNestedEnum.new('1').nested_enum_humanize.should == 'Blerrgh'
|
175
|
+
end
|
176
|
+
end
|
146
177
|
end
|
147
178
|
end
|
148
179
|
|
@@ -199,29 +230,28 @@ describe EnumerateIt do
|
|
199
230
|
|
200
231
|
describe "using the :create_scopes option" do
|
201
232
|
def setup_enumeration
|
202
|
-
|
233
|
+
OtherTestClass.send(:has_enumeration_for, :foobar, :with => TestEnumeration, :create_scopes => true)
|
203
234
|
end
|
204
235
|
|
205
236
|
context "if the hosting class responds to :scope" do
|
206
237
|
before do
|
207
|
-
class
|
208
|
-
|
209
|
-
def self.scope(name, whatever); end
|
238
|
+
class OtherTestClass < ActiveRecord::Base
|
239
|
+
extend EnumerateIt
|
210
240
|
end
|
211
241
|
|
212
242
|
setup_enumeration
|
213
243
|
end
|
214
244
|
|
215
245
|
it "creates a scope for each enumeration value" do
|
216
|
-
TestEnumeration.enumeration do |symbol
|
217
|
-
|
246
|
+
TestEnumeration.enumeration.keys.each do |symbol|
|
247
|
+
OtherTestClass.should respond_to(symbol)
|
218
248
|
end
|
219
249
|
end
|
220
250
|
|
221
251
|
it "when called, the scopes create the correct query" do
|
222
|
-
TestEnumeration.enumeration do |symbol, pair|
|
223
|
-
|
224
|
-
|
252
|
+
TestEnumeration.enumeration.each do |symbol, pair|
|
253
|
+
OtherTestClass.should_receive(:where).with(:foobar => pair.first)
|
254
|
+
OtherTestClass.send symbol
|
225
255
|
end
|
226
256
|
end
|
227
257
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: enumerate_it
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-03-13 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activesupport
|
@@ -75,6 +75,38 @@ dependencies:
|
|
75
75
|
- - ! '>='
|
76
76
|
- !ruby/object:Gem::Version
|
77
77
|
version: 3.0.5
|
78
|
+
- !ruby/object:Gem::Dependency
|
79
|
+
name: pry
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
82
|
+
requirements:
|
83
|
+
- - ! '>='
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: '0'
|
86
|
+
type: :development
|
87
|
+
prerelease: false
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ! '>='
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: '0'
|
94
|
+
- !ruby/object:Gem::Dependency
|
95
|
+
name: pry-nav
|
96
|
+
requirement: !ruby/object:Gem::Requirement
|
97
|
+
none: false
|
98
|
+
requirements:
|
99
|
+
- - ! '>='
|
100
|
+
- !ruby/object:Gem::Version
|
101
|
+
version: '0'
|
102
|
+
type: :development
|
103
|
+
prerelease: false
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ! '>='
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '0'
|
78
110
|
description: Have a legacy database and need some enumerations in your models to match
|
79
111
|
those stupid '4 rows/2 columns' tables with foreign keys and stop doing joins just
|
80
112
|
to fetch a simple description? Or maybe use some integers instead of strings as
|
@@ -124,7 +156,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
124
156
|
version: '0'
|
125
157
|
segments:
|
126
158
|
- 0
|
127
|
-
hash:
|
159
|
+
hash: -1389146170184327843
|
128
160
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
129
161
|
none: false
|
130
162
|
requirements:
|
@@ -133,7 +165,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
133
165
|
version: '0'
|
134
166
|
segments:
|
135
167
|
- 0
|
136
|
-
hash:
|
168
|
+
hash: -1389146170184327843
|
137
169
|
requirements: []
|
138
170
|
rubyforge_project:
|
139
171
|
rubygems_version: 1.8.24
|