File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff 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
You can’t perform that action at this time.
0 commit comments