Sha256: 8448a6039d877e7a2b3c1fe9da47a4cb5afcddfb236fa0aa1333ad459623578e

Contents?: true

Size: 1.25 KB

Versions: 3

Compression:

Stored size: 1.25 KB

Contents

require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')

class ClassyEnumBase < ClassyEnum::Base
end

class ClassyEnumBase::One < ClassyEnumBase
end

class ClassyEnumBase::Two < ClassyEnumBase
end

describe ClassyEnum::Base do
  context '.build' do
    context 'invalid option' do
      it 'should return the option' do
        ClassyEnumBase.build(:invalid_option).should == :invalid_option
      end
    end

    context 'string option' do
      subject { ClassyEnumBase.build("one") }
      it { should be_a(ClassyEnumBase::One) }
    end

    context 'symbol option' do
      subject { ClassyEnumBase.build(:two) }
      it { should be_a(ClassyEnumBase::Two) }
    end
  end

  context '#new' do
    subject { ClassyEnumBase::One }
    its(:new) { should be_a(ClassyEnumBase::One) }
    its(:new) { should == ClassyEnumBase::One.new  }
  end

  context 'Subclass naming' do
    it 'should raise an error when invalid' do
      lambda {
        class WrongSublcassName < ClassyEnumBase; end
      }.should raise_error(ClassyEnum::SubclassNameError)
    end
  end
end

describe ClassyEnum::Base, 'Arel visitor' do
  specify do
    Arel::Visitors::ToSql.instance_methods.map(&:to_sym).should include(:'visit_ClassyEnumBase_One', :'visit_ClassyEnumBase_Two')
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
classy_enum-3.1.0 spec/classy_enum/base_spec.rb
classy_enum-3.0.1 spec/classy_enum/base_spec.rb
classy_enum-3.0.0 spec/classy_enum/base_spec.rb