Sha256: 33cf737bb8a3b082a13a67f40cc8895d79ade0b6ddcca5d9833378293307cf53

Contents?: true

Size: 1.62 KB

Versions: 14

Compression:

Stored size: 1.62 KB

Contents

require_relative '../../test_helper'

class StateWithMultipleContextsTest < StateMachinesTest
  def setup
    @klass = Class.new
    @machine = StateMachines::Machine.new(@klass)
    @ancestors = @klass.ancestors
    @machine.states << @state = StateMachines::State.new(@machine, :idling)

    context = nil
    speed_method = nil
    @state.context do
      context = self

      def speed
        0
      end

      speed_method = instance_method(:speed)
    end
    @context = context
    @speed_method = speed_method

    rpm_method = nil
    @state.context do
      def rpm
        1000
      end

      rpm_method = instance_method(:rpm)
    end
    @rpm_method = rpm_method
  end

  def test_should_include_new_module_in_owner_class
    refute_equal @ancestors, @klass.ancestors
    assert_equal [@context], @klass.ancestors - @ancestors
  end

  def test_should_define_each_context_method_in_owner_class
    %w(speed rpm).each { |method| assert @klass.method_defined?(method) }
  end

  def test_should_define_aliased_context_method_in_owner_class
    %w(speed rpm).each { |method| assert @klass.method_defined?("__state_idling_#{method}_#{@context.object_id}__") }
  end

  def test_should_not_use_context_methods_as_owner_class_methods
    refute_equal @speed_method, @state.context_methods[:speed]
    refute_equal @rpm_method, @state.context_methods[:rpm]
  end

  def test_should_use_context_methods_as_aliased_owner_class_methods
    assert_equal @speed_method, @state.context_methods[:"__state_idling_speed_#{@context.object_id}__"]
    assert_equal @rpm_method, @state.context_methods[:"__state_idling_rpm_#{@context.object_id}__"]
  end
end

Version data entries

14 entries across 14 versions & 2 rubygems

Version Path
state_machines-0.5.0 test/unit/state/state_with_multiple_contexts_test.rb
solidus_backend-1.0.0.pre3 vendor/bundle/gems/state_machines-0.2.2/test/unit/state/state_with_multiple_contexts_test.rb
solidus_backend-1.0.0.pre2 vendor/bundle/gems/state_machines-0.2.2/test/unit/state/state_with_multiple_contexts_test.rb
solidus_backend-1.0.0.pre vendor/bundle/gems/state_machines-0.2.2/test/unit/state/state_with_multiple_contexts_test.rb
state_machines-0.4.0 test/unit/state/state_with_multiple_contexts_test.rb
state_machines-0.3.0 test/unit/state/state_with_multiple_contexts_test.rb
state_machines-0.2.2 test/unit/state/state_with_multiple_contexts_test.rb
state_machines-0.2.1 test/unit/state/state_with_multiple_contexts_test.rb
state_machines-0.2.0 test/unit/state/state_with_multiple_contexts_test.rb
state_machines-0.1.4 test/unit/state/state_with_multiple_contexts_test.rb
state_machines-0.1.3 test/unit/state/state_with_multiple_contexts_test.rb
state_machines-0.1.2 test/unit/state/state_with_multiple_contexts_test.rb
state_machines-0.1.1 test/unit/state/state_with_multiple_contexts_test.rb
state_machines-0.1.0 test/unit/state/state_with_multiple_contexts_test.rb