class MachineWithClassHelpersTest

Public Class Methods

park() click to toggle source
# File test/unit/machine_test.rb, line 1304
def self.park
end

Public Instance Methods

park() click to toggle source
# File test/unit/machine_test.rb, line 1342
def park
end
setup() click to toggle source
# File test/unit/machine_test.rb, line 1259
def setup
  @klass = Class.new
  @machine = StateMachine::Machine.new(@klass)
end
test_should_allow_string_evaluation() click to toggle source
# File test/unit/machine_test.rb, line 1430
  def test_should_allow_string_evaluation
    @machine.define_helper :class, <<-end_eval, __FILE__, __LINE__ + 1
      def states
        []
      end
    end_eval
    assert_equal [], @klass.states
  end
test_should_define_if_ignoring_method_conflicts_and_defined_in_superclass() click to toggle source
# File test/unit/machine_test.rb, line 1377
def test_should_define_if_ignoring_method_conflicts_and_defined_in_superclass
  require 'stringio'
  @original_stderr, $stderr = $stderr, StringIO.new
  StateMachine::Machine.ignore_method_conflicts = true
  
  superclass = Class.new do
    def self.park
    end
  end
  klass = Class.new(superclass)
  machine = StateMachine::Machine.new(klass)
  
  machine.define_helper(:class, :park) {true}
  assert_equal '', $stderr.string
  assert_equal true, klass.park
ensure
  StateMachine::Machine.ignore_method_conflicts = false
  $stderr = @original_stderr
end
test_should_define_nonexistent_methods() click to toggle source
# File test/unit/machine_test.rb, line 1397
def test_should_define_nonexistent_methods
  @machine.define_helper(:class, :states) {[]}
  assert_equal [], @klass.states
end
test_should_not_redefine_existing_private_methods() click to toggle source
# File test/unit/machine_test.rb, line 1287
def test_should_not_redefine_existing_private_methods
  class << @klass
    private
      def states
        []
      end
  end
  
  @machine.define_helper(:class, :states) {}
  assert_equal [], @klass.send(:states)
end
test_should_not_redefine_existing_protected_methods() click to toggle source
# File test/unit/machine_test.rb, line 1275
def test_should_not_redefine_existing_protected_methods
  class << @klass
    protected
      def states
        []
      end
  end
  
  @machine.define_helper(:class, :states) {}
  assert_equal [], @klass.send(:states)
end
test_should_not_redefine_existing_public_methods() click to toggle source
# File test/unit/machine_test.rb, line 1264
def test_should_not_redefine_existing_public_methods
  class << @klass
    def states
      []
    end
  end
  
  @machine.define_helper(:class, :states) {}
  assert_equal [], @klass.states
end
test_should_not_warn_if_defined_in_module_after_helper_module() click to toggle source
# File test/unit/machine_test.rb, line 1356
def test_should_not_warn_if_defined_in_module_after_helper_module
  require 'stringio'
  @original_stderr, $stderr = $stderr, StringIO.new
  
  klass = Class.new
  machine = StateMachine::Machine.new(klass)
  
  mod = Module.new do
    def park
    end
  end
  klass.class_eval do
    extend mod
  end
  
  machine.define_helper(:class, :park) {}
  assert_equal '', $stderr.string
ensure
  $stderr = @original_stderr
end
test_should_pass_context_as_arguments() click to toggle source
# File test/unit/machine_test.rb, line 1414
def test_should_pass_context_as_arguments
  helper_args = nil
  @machine.define_helper(:class, :states) {|*args| helper_args = args}
  @klass.states
  assert_equal 2, helper_args.length
  assert_equal [@machine, @klass], helper_args
end
test_should_pass_method_arguments_through() click to toggle source
# File test/unit/machine_test.rb, line 1422
def test_should_pass_method_arguments_through
  helper_args = nil
  @machine.define_helper(:class, :states) {|*args| helper_args = args}
  @klass.states(1, 2, 3)
  assert_equal 5, helper_args.length
  assert_equal [@machine, @klass, 1, 2, 3], helper_args
end
test_should_warn_if_defined_in_module_prior_to_helper_module() click to toggle source
# File test/unit/machine_test.rb, line 1337
def test_should_warn_if_defined_in_module_prior_to_helper_module
  require 'stringio'
  @original_stderr, $stderr = $stderr, StringIO.new
  
  mod = Module.new do
    def park
    end
  end
  klass = Class.new do
    extend mod
  end
  machine = StateMachine::Machine.new(klass)
  
  machine.define_helper(:class, :park) {}
  assert_equal "Class method \"park\" is already defined in #{mod.to_s}, use generic helper instead or set StateMachine::Machine.ignore_method_conflicts = true.\n", $stderr.string
ensure
  $stderr = @original_stderr
end
test_should_warn_if_defined_in_multiple_superclasses() click to toggle source
# File test/unit/machine_test.rb, line 1316
def test_should_warn_if_defined_in_multiple_superclasses
  require 'stringio'
  @original_stderr, $stderr = $stderr, StringIO.new
  
  superclass1 = Class.new do
    def self.park
    end
  end
  superclass2 = Class.new(superclass1) do
    def self.park
    end
  end
  klass = Class.new(superclass2)
  machine = StateMachine::Machine.new(klass)
  
  machine.define_helper(:class, :park) {}
  assert_equal "Class method \"park\" is already defined in #{superclass1.to_s}, use generic helper instead or set StateMachine::Machine.ignore_method_conflicts = true.\n", $stderr.string
ensure
  $stderr = @original_stderr
end
test_should_warn_if_defined_in_superclass() click to toggle source
# File test/unit/machine_test.rb, line 1299
def test_should_warn_if_defined_in_superclass
  require 'stringio'
  @original_stderr, $stderr = $stderr, StringIO.new
  
  superclass = Class.new do
    def self.park
    end
  end
  klass = Class.new(superclass)
  machine = StateMachine::Machine.new(klass)
  
  machine.define_helper(:class, :park) {}
  assert_equal "Class method \"park\" is already defined in #{superclass.to_s}, use generic helper instead or set StateMachine::Machine.ignore_method_conflicts = true.\n", $stderr.string
ensure
  $stderr = @original_stderr
end
test_should_warn_if_defined_multiple_times() click to toggle source
# File test/unit/machine_test.rb, line 1402
def test_should_warn_if_defined_multiple_times
  require 'stringio'
  @original_stderr, $stderr = $stderr, StringIO.new
  
  @machine.define_helper(:class, :states) {}
  @machine.define_helper(:class, :states) {}
  
  assert_equal "Class method \"states\" is already defined in #{@klass} :state class helpers, use generic helper instead or set StateMachine::Machine.ignore_method_conflicts = true.\n", $stderr.string
ensure
  $stderr = @original_stderr
end