PageRenderTime 46ms CodeModel.GetById 19ms RepoModel.GetById 0ms app.codeStats 0ms

/lib/gemcache/ruby/1.9.1/gems/state_machine-1.1.2/test/unit/invalid_transition_test.rb

https://bitbucket.org/technopunk2099/metasploit-framework
Ruby | 115 lines | 90 code | 25 blank | 0 comment | 0 complexity | 97db7d149da176fd850c709cec47c73a MD5 | raw file
Possible License(s): BSD-3-Clause, Apache-2.0, LGPL-2.1, GPL-2.0, MIT
  1. require File.expand_path(File.dirname(__FILE__) + '/../test_helper')
  2. class InvalidTransitionTest < Test::Unit::TestCase
  3. def setup
  4. @klass = Class.new
  5. @machine = StateMachine::Machine.new(@klass)
  6. @state = @machine.state :parked
  7. @machine.event :ignite
  8. @object = @klass.new
  9. @object.state = 'parked'
  10. @invalid_transition = StateMachine::InvalidTransition.new(@object, @machine, :ignite)
  11. end
  12. def test_should_have_an_object
  13. assert_equal @object, @invalid_transition.object
  14. end
  15. def test_should_have_a_machine
  16. assert_equal @machine, @invalid_transition.machine
  17. end
  18. def test_should_have_an_event
  19. assert_equal :ignite, @invalid_transition.event
  20. end
  21. def test_should_have_a_qualified_event
  22. assert_equal :ignite, @invalid_transition.qualified_event
  23. end
  24. def test_should_have_a_from_value
  25. assert_equal 'parked', @invalid_transition.from
  26. end
  27. def test_should_have_a_from_name
  28. assert_equal :parked, @invalid_transition.from_name
  29. end
  30. def test_should_have_a_qualified_from_name
  31. assert_equal :parked, @invalid_transition.qualified_from_name
  32. end
  33. def test_should_generate_a_message
  34. assert_equal 'Cannot transition state via :ignite from :parked', @invalid_transition.message
  35. end
  36. end
  37. class InvalidTransitionWithNamespaceTest < Test::Unit::TestCase
  38. def setup
  39. @klass = Class.new
  40. @machine = StateMachine::Machine.new(@klass, :namespace => 'alarm')
  41. @state = @machine.state :active
  42. @machine.event :disable
  43. @object = @klass.new
  44. @object.state = 'active'
  45. @invalid_transition = StateMachine::InvalidTransition.new(@object, @machine, :disable)
  46. end
  47. def test_should_have_an_event
  48. assert_equal :disable, @invalid_transition.event
  49. end
  50. def test_should_have_a_qualified_event
  51. assert_equal :disable_alarm, @invalid_transition.qualified_event
  52. end
  53. def test_should_have_a_from_name
  54. assert_equal :active, @invalid_transition.from_name
  55. end
  56. def test_should_have_a_qualified_from_name
  57. assert_equal :alarm_active, @invalid_transition.qualified_from_name
  58. end
  59. end
  60. class InvalidTransitionWithIntegrationTest < Test::Unit::TestCase
  61. def setup
  62. StateMachine::Integrations.const_set('Custom', Module.new do
  63. include StateMachine::Integrations::Base
  64. def errors_for(object)
  65. object.errors
  66. end
  67. end)
  68. @klass = Class.new do
  69. attr_accessor :errors
  70. end
  71. @machine = StateMachine::Machine.new(@klass, :integration => :custom)
  72. @machine.state :parked
  73. @machine.event :ignite
  74. @object = @klass.new
  75. @object.state = 'parked'
  76. end
  77. def test_should_generate_a_message_without_reasons_if_empty
  78. @object.errors = ''
  79. invalid_transition = StateMachine::InvalidTransition.new(@object, @machine, :ignite)
  80. assert_equal 'Cannot transition state via :ignite from :parked', invalid_transition.message
  81. end
  82. def test_should_generate_a_message_with_error_reasons_if_errors_found
  83. @object.errors = 'Id is invalid, Name is invalid'
  84. invalid_transition = StateMachine::InvalidTransition.new(@object, @machine, :ignite)
  85. assert_equal 'Cannot transition state via :ignite from :parked (Reason(s): Id is invalid, Name is invalid)', invalid_transition.message
  86. end
  87. def teardown
  88. StateMachine::Integrations.send(:remove_const, 'Custom')
  89. end
  90. end