spec/ruby-enum/enum_spec.rb in ruby-enum-0.6.0 vs spec/ruby-enum/enum_spec.rb in ruby-enum-0.7.0

- old
+ new

@@ -5,11 +5,42 @@ define :RED, 'red' define :GREEN, 'green' end +class FirstSubclass < Colors + define :ORANGE, 'orange' +end + +class SecondSubclass < FirstSubclass + define :PINK, 'pink' +end + describe Ruby::Enum do + describe 'Subclass behavior' do + it 'contains the enums defined in the parent class' do + expect(FirstSubclass::GREEN).to eq 'green' + expect(FirstSubclass::RED).to eq 'red' + end + + it 'contains its own enums' do + expect(FirstSubclass::ORANGE).to eq 'orange' + end + it 'parent class should not have enums defined in child classes' do + expect { Colors::ORANGE }.to raise_error Ruby::Enum::Errors::UninitializedConstantError + end + context 'Given a 2 level depth subclass' do + subject { SecondSubclass } + it 'contains its own enums and all the enums defined in the parent classes' do + expect(subject::RED).to eq 'red' + expect(subject::GREEN).to eq 'green' + expect(subject::ORANGE).to eq 'orange' + expect(subject::PINK).to eq 'pink' + end + end + end + it 'returns an enum value' do expect(Colors::RED).to eq 'red' expect(Colors::GREEN).to eq 'green' end it 'raises UninitializedConstantError on an invalid constant' do @@ -125,8 +156,17 @@ expect do Colors.class_eval do define :Other, 'red' end end.to raise_error Ruby::Enum::Errors::DuplicateValueError, /The value red has already been defined./ + end + end + + describe 'Given a class that has not defined any enums' do + class EmptyEnums + include Ruby::Enum + end + it do + expect { EmptyEnums::ORANGE }.to raise_error Ruby::Enum::Errors::UninitializedConstantError end end end