Sha256: f9d5de05e960c9602f77b81e3f25f1e361aabab82dc0917a64d98c320ec7fdea

Contents?: true

Size: 1.62 KB

Versions: 2

Compression:

Stored size: 1.62 KB

Contents

# Specs for assigning states

require 'spec_helper'
require 'maintain'

describe Maintain do
  before :each do
    class ::MaintainTest
      attr_accessor :existant_attribute
      extend Maintain
    end
  end

  describe "setting" do
    describe "string states" do
      before :each do
        MaintainTest.maintain :state do
          state :new
          state :overdue
          state :closed
        end
        @maintainer = MaintainTest.new
      end

      it "should, you know, work" do
        @maintainer.state = :new
        @maintainer.state.should == :new
        @maintainer.state = 'new'
        @maintainer.state.should == :new
        @maintainer.state = 0
        @maintainer.state.should == :new
        @maintainer.state.name.should == "new"
        @maintainer.state = 'nada'
        @maintainer.state.should be_nil
      end

      it "should support a `state!` bang method, too!" do
        @maintainer.new!
        @maintainer.state.should == :new
        @maintainer.overdue!
        @maintainer.state.should == :overdue
        @maintainer.closed!
        @maintainer.state.should == :closed
      end
    end

    describe "integer states" do
      before :each do
        MaintainTest.maintain :state do
          state :new, 1
          state :overdue, 2
          state :closed, 3
        end
        @maintainer = MaintainTest.new
      end

      it "should, you know, work" do
        @maintainer.state = 1
        @maintainer.state.should == :new
        @maintainer.state = 'new'
        @maintainer.state.should == :new
        @maintainer.state = :new
        @maintainer.state.should == :new
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
maintain-0.2.23 spec/setting_state_spec.rb
maintain-0.2.22 spec/setting_state_spec.rb