Skip to content

Commit 45390ae

Browse files
committed
Add test for subclass lazy reloading
1 parent c57c56c commit 45390ae

1 file changed

Lines changed: 29 additions & 2 deletions

File tree

spec/ruby-enum/enum_spec.rb

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -250,9 +250,36 @@ class OtherSecondSubclass < FirstSubclass
250250
define :BUZZ_CUT, 'buzz_cut'
251251
end
252252

253-
HairStyles = Class.new(&class_body)
253+
hair_styles = Class.new(&class_body)
254254

255-
expect { HairStyles.class_eval(&class_body) }.not_to raise_error
255+
expect { hair_styles.class_eval(&class_body) }.not_to raise_error
256+
end
257+
258+
context 'when a subclass is defined' do
259+
it 'NEEDS to include Ruby::Enum explicitly to be lazy reloaded' do
260+
hair_styles = Class.new do
261+
include Ruby::Enum
262+
263+
define :BUZZ_CUT, 'buzz_cut'
264+
end
265+
266+
broken_subclass_body = proc do
267+
define :PONYTAIL, 'ponytail'
268+
end
269+
broken_subclass = Class.new(hair_styles, &broken_subclass_body)
270+
expect { broken_subclass.class_eval(&broken_subclass_body) }
271+
.to raise_error Ruby::Enum::Errors::DuplicateKeyError, /PONYTAIL/
272+
273+
subclass_body = proc do
274+
include Ruby::Enum
275+
276+
define :PONYTAIL, 'ponytail'
277+
end
278+
more_hair_styles = Class.new(hair_styles, &subclass_body)
279+
280+
expect { more_hair_styles.class_eval(&subclass_body) }.not_to raise_error
281+
expect(more_hair_styles.values).to eq(%w[buzz_cut ponytail])
282+
end
256283
end
257284
end
258285

0 commit comments

Comments
 (0)