Sha256: df815f00d9057ae3c5248658e78f5da47cef9a502bdcd0c6a2189fd9d2fbfa76

Contents?: true

Size: 1.88 KB

Versions: 8

Compression:

Stored size: 1.88 KB

Contents

require 'spec_helper'

describe ::Enum do
  subject do
    ::CategoryEnum
  end

  let(:expected_names) {  [:default, :clothing, :shoes, :accessories] }
  let(:expected_values) { [1,2,3,4] }

  describe ".key?" do
    it { subject.key?(:default).should eq true }
  end

  describe "[](val)" do
    it { subject[:default].to_i.should eq 1 }
  end

  describe "[](val)" do
    it { subject["default"].to_i.should eq 1 }
  end

  describe ".value?" do
    it { subject.value?(1).should eq true }
  end

  describe ".keys" do
    it { subject.keys.should eq [:default, :clothing, :shoes, :accessories] }
  end

  describe ".names" do
    it { subject.keys.should eq expected_names }
  end

  describe ".values" do
    it { subject.values.should eq expected_values }
  end

  context "duplicate enum name" do
    it { expect{subject.define_enum_value(:default, 6)}.to raise_error(::Trax::Core::Errors::DuplicateEnumValue) }
  end

  context "duplicate enum value" do
    it {expect{subject.define_enum_value(:newthing, 1)}.to raise_error(::Trax::Core::Errors::DuplicateEnumValue) }
  end

  context "InstanceMethods" do
    subject { ::CategoryEnum.new(:clothing) }

    it { subject.choice.should eq :clothing }
    it { subject.choice.should eq 2 }
    it { expect(subject.next_value.to_sym).to eq :shoes }
    it { expect(subject.previous_value.to_sym).to eq :default }

    context "selection of values" do
      it { subject.select_next_value.should eq ::CategoryEnum.new(:shoes).choice }
    end
    context "value is last" do
      subject { ::CategoryEnum.new(:accessories) }
      it { subject.next_value?.should eq false }
      it { subject.previous_value?.should eq true }

      context "selection of value" do
        it { expect(subject.select_next_value).to eq ::CategoryEnum.new(:accessories) }
        it { expect(subject.select_previous_value).to eq ::CategoryEnum.new(:shoes) }
      end
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
trax_core-0.0.80 spec/trax/enum_spec.rb
trax_core-0.0.79 spec/trax/enum_spec.rb
trax_core-0.0.78 spec/trax/enum_spec.rb
trax_core-0.0.77 spec/trax/enum_spec.rb
trax_core-0.0.76 spec/trax/enum_spec.rb
trax_core-0.0.74 spec/trax/enum_spec.rb
trax_core-0.0.73 spec/trax/enum_spec.rb
trax_core-0.0.72 spec/trax/enum_spec.rb