power_enum 0.8.5 → 0.8.6
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/README.md +17 -0
- data/lib/active_record/acts/enumerated.rb +10 -0
- data/lib/testing/rspec.rb +37 -3
- metadata +3 -3
data/README.md
CHANGED
@@ -276,6 +276,11 @@ Example:
|
|
276
276
|
:active => false
|
277
277
|
end
|
278
278
|
|
279
|
+
##### acts\_as\_enumerated? (since version 0.8.6)
|
280
|
+
|
281
|
+
Returns `true` for ActiveRecord models that act as enumerated, `false` for others. So
|
282
|
+
`BookingStatus.acts_as_enumerated?` would return `true`, while `Booking.acts_as_enumerated?` would return `false`.
|
283
|
+
|
279
284
|
#### Instance Methods
|
280
285
|
|
281
286
|
Each enumeration model gets the following instance methods.
|
@@ -533,6 +538,18 @@ This is also valid:
|
|
533
538
|
end
|
534
539
|
end
|
535
540
|
|
541
|
+
#### match\_enum (Since version 0.8.6)
|
542
|
+
|
543
|
+
Tests if an enum instance matches the given value, which may be a symbol, id, string, or enum instance:
|
544
|
+
|
545
|
+
describe Booking do
|
546
|
+
it "status should be 'received' for a new booking" do
|
547
|
+
Booking.new.status.should match_enum(:received)
|
548
|
+
end
|
549
|
+
end
|
550
|
+
|
551
|
+
Of course `Booking.new.status.should === :received` still works, but is liable to produce false positives.
|
552
|
+
|
536
553
|
## How to run tests
|
537
554
|
|
538
555
|
Go to the 'dummy' project:
|
@@ -9,6 +9,11 @@ module ActiveRecord
|
|
9
9
|
|
10
10
|
module ClassMethods
|
11
11
|
|
12
|
+
# Returns false for ActiveRecord models that do not act as enumerated.
|
13
|
+
def acts_as_enumerated?
|
14
|
+
false
|
15
|
+
end
|
16
|
+
|
12
17
|
# Declares the model as enumerated. See the README for detailed usage instructions.
|
13
18
|
#
|
14
19
|
# === Supported options
|
@@ -101,6 +106,11 @@ module ActiveRecord
|
|
101
106
|
module EnumClassMethods
|
102
107
|
attr_accessor :enumeration_model_updates_permitted
|
103
108
|
|
109
|
+
# Returns true for ActiveRecord models that act as enumerated.
|
110
|
+
def acts_as_enumerated?
|
111
|
+
true
|
112
|
+
end
|
113
|
+
|
104
114
|
# Returns all the enum values. Caches results after the first time this method is run.
|
105
115
|
def all
|
106
116
|
return @all if @all
|
data/lib/testing/rspec.rb
CHANGED
@@ -42,9 +42,8 @@ if defined? RSpec
|
|
42
42
|
match do |enum|
|
43
43
|
enum_class = get_enum_class(enum)
|
44
44
|
|
45
|
-
if enum_class.respond_to?(:
|
46
|
-
enum_class.
|
47
|
-
enum_class.respond_to?(:purge_enumerations_cache)
|
45
|
+
if enum_class.respond_to?(:acts_as_enumerated?) &&
|
46
|
+
enum_class.acts_as_enumerated?
|
48
47
|
|
49
48
|
if @items
|
50
49
|
begin
|
@@ -143,4 +142,39 @@ if defined? RSpec
|
|
143
142
|
end
|
144
143
|
end
|
145
144
|
|
145
|
+
# Tests if an enum instance matches the given value, which may be a symbol,
|
146
|
+
# id, string, or enum instance:
|
147
|
+
#
|
148
|
+
# describe Booking do
|
149
|
+
# it "status should be 'received' for a new booking" do
|
150
|
+
# Booking.new.status.should match_enum(:received)
|
151
|
+
# end
|
152
|
+
# end
|
153
|
+
RSpec::Matchers.define :match_enum do |attribute|
|
154
|
+
match do |item|
|
155
|
+
if item.class.respond_to?(:acts_as_enumerated?) &&
|
156
|
+
item.class.acts_as_enumerated?
|
157
|
+
begin
|
158
|
+
item.class[attribute] == item
|
159
|
+
rescue Exception
|
160
|
+
false
|
161
|
+
end
|
162
|
+
else
|
163
|
+
false
|
164
|
+
end
|
165
|
+
end
|
166
|
+
|
167
|
+
failure_message_for_should do
|
168
|
+
"expected #{attribute} to match the enum"
|
169
|
+
end
|
170
|
+
|
171
|
+
failure_message_for_should_not do
|
172
|
+
"expected #{attribute} to not match the enum"
|
173
|
+
end
|
174
|
+
|
175
|
+
description do
|
176
|
+
"match enum value of #{attribute}"
|
177
|
+
end
|
178
|
+
end
|
179
|
+
|
146
180
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: power_enum
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.8.
|
4
|
+
version: 0.8.6
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -12,7 +12,7 @@ authors:
|
|
12
12
|
autorequire:
|
13
13
|
bindir: bin
|
14
14
|
cert_chain: []
|
15
|
-
date: 2012-08-
|
15
|
+
date: 2012-08-29 00:00:00.000000000 Z
|
16
16
|
dependencies:
|
17
17
|
- !ruby/object:Gem::Dependency
|
18
18
|
name: rails
|
@@ -143,7 +143,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
143
143
|
version: '0'
|
144
144
|
segments:
|
145
145
|
- 0
|
146
|
-
hash: -
|
146
|
+
hash: -1167487358875782212
|
147
147
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
148
148
|
none: false
|
149
149
|
requirements:
|