state_machines 0.5.0 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (464) hide show
  1. checksums.yaml +5 -5
  2. data/LICENSE.txt +1 -1
  3. data/README.md +34 -15
  4. data/lib/state_machines/assertions.rb +2 -0
  5. data/lib/state_machines/branch.rb +85 -81
  6. data/lib/state_machines/callback.rb +24 -21
  7. data/lib/state_machines/core.rb +2 -0
  8. data/lib/state_machines/core_ext/class/state_machine.rb +2 -0
  9. data/lib/state_machines/core_ext.rb +2 -0
  10. data/lib/state_machines/error.rb +2 -0
  11. data/lib/state_machines/eval_helpers.rb +51 -22
  12. data/lib/state_machines/event.rb +35 -30
  13. data/lib/state_machines/event_collection.rb +28 -25
  14. data/lib/state_machines/extensions.rb +3 -1
  15. data/lib/state_machines/helper_module.rb +3 -1
  16. data/lib/state_machines/integrations/base.rb +2 -0
  17. data/lib/state_machines/integrations.rb +10 -8
  18. data/lib/state_machines/machine/class_methods.rb +79 -0
  19. data/lib/state_machines/machine.rb +381 -425
  20. data/lib/state_machines/machine_collection.rb +13 -10
  21. data/lib/state_machines/macro_methods.rb +102 -100
  22. data/lib/state_machines/matcher.rb +26 -23
  23. data/lib/state_machines/matcher_helpers.rb +13 -11
  24. data/lib/state_machines/node_collection.rb +17 -13
  25. data/lib/state_machines/path.rb +58 -55
  26. data/lib/state_machines/path_collection.rb +37 -35
  27. data/lib/state_machines/state.rb +50 -38
  28. data/lib/state_machines/state_collection.rb +22 -19
  29. data/lib/state_machines/state_context.rb +35 -35
  30. data/lib/state_machines/stdio_renderer.rb +74 -0
  31. data/lib/state_machines/transition.rb +182 -178
  32. data/lib/state_machines/transition_collection.rb +172 -168
  33. data/lib/state_machines/version.rb +3 -1
  34. data/lib/state_machines.rb +4 -1
  35. metadata +10 -439
  36. data/.gitignore +0 -21
  37. data/.rspec +0 -3
  38. data/.ruby-gemset +0 -1
  39. data/.ruby-version +0 -1
  40. data/.travis.yml +0 -16
  41. data/Changelog.md +0 -22
  42. data/Contributors.md +0 -39
  43. data/Gemfile +0 -8
  44. data/Rakefile +0 -12
  45. data/Testing.md +0 -0
  46. data/state_machines.gemspec +0 -22
  47. data/test/files/integrations/event_on_failure_integration.rb +0 -10
  48. data/test/files/integrations/vehicle.rb +0 -7
  49. data/test/files/models/auto_shop.rb +0 -31
  50. data/test/files/models/car.rb +0 -21
  51. data/test/files/models/driver.rb +0 -13
  52. data/test/files/models/model_base.rb +0 -6
  53. data/test/files/models/motorcycle.rb +0 -16
  54. data/test/files/models/traffic_light.rb +0 -47
  55. data/test/files/models/vehicle.rb +0 -127
  56. data/test/files/node.rb +0 -5
  57. data/test/files/switch.rb +0 -15
  58. data/test/functional/auto_shop_available_test.rb +0 -20
  59. data/test/functional/auto_shop_busy_test.rb +0 -25
  60. data/test/functional/car_backing_up_test.rb +0 -45
  61. data/test/functional/car_test.rb +0 -49
  62. data/test/functional/driver_default_nonstandard_test.rb +0 -13
  63. data/test/functional/motorcycle_test.rb +0 -52
  64. data/test/functional/traffic_light_caution_test.rb +0 -17
  65. data/test/functional/traffic_light_proceed_test.rb +0 -17
  66. data/test/functional/traffic_light_stop_test.rb +0 -26
  67. data/test/functional/vehicle_first_gear_test.rb +0 -42
  68. data/test/functional/vehicle_idling_test.rb +0 -59
  69. data/test/functional/vehicle_locked_test.rb +0 -29
  70. data/test/functional/vehicle_parked_test.rb +0 -53
  71. data/test/functional/vehicle_repaired_test.rb +0 -20
  72. data/test/functional/vehicle_second_gear_test.rb +0 -42
  73. data/test/functional/vehicle_stalled_test.rb +0 -65
  74. data/test/functional/vehicle_test.rb +0 -20
  75. data/test/functional/vehicle_third_gear_test.rb +0 -42
  76. data/test/functional/vehicle_unsaved_test.rb +0 -181
  77. data/test/functional/vehicle_with_event_attributes_test.rb +0 -30
  78. data/test/functional/vehicle_with_parallel_events_test.rb +0 -36
  79. data/test/test_helper.rb +0 -15
  80. data/test/unit/assertions/assert_exclusive_keys_test.rb +0 -22
  81. data/test/unit/assertions/assert_valid_key_test.rb +0 -12
  82. data/test/unit/branch/branch_test.rb +0 -28
  83. data/test/unit/branch/branch_with_conflicting_conditionals_test.rb +0 -27
  84. data/test/unit/branch/branch_with_conflicting_from_requirements_test.rb +0 -8
  85. data/test/unit/branch/branch_with_conflicting_on_requirements_test.rb +0 -8
  86. data/test/unit/branch/branch_with_conflicting_to_requirements_test.rb +0 -8
  87. data/test/unit/branch/branch_with_different_requirements_test.rb +0 -41
  88. data/test/unit/branch/branch_with_except_from_matcher_requirement_test.rb +0 -8
  89. data/test/unit/branch/branch_with_except_from_requirement_test.rb +0 -36
  90. data/test/unit/branch/branch_with_except_on_matcher_requirement_test.rb +0 -8
  91. data/test/unit/branch/branch_with_except_on_requirement_test.rb +0 -36
  92. data/test/unit/branch/branch_with_except_to_matcher_requirement_test.rb +0 -8
  93. data/test/unit/branch/branch_with_except_to_requirement_test.rb +0 -36
  94. data/test/unit/branch/branch_with_from_matcher_requirement_test.rb +0 -20
  95. data/test/unit/branch/branch_with_from_requirement_test.rb +0 -45
  96. data/test/unit/branch/branch_with_if_conditional_test.rb +0 -27
  97. data/test/unit/branch/branch_with_implicit_and_explicit_requirements_test.rb +0 -23
  98. data/test/unit/branch/branch_with_implicit_from_requirement_matcher_test.rb +0 -20
  99. data/test/unit/branch/branch_with_implicit_requirement_test.rb +0 -20
  100. data/test/unit/branch/branch_with_implicit_to_requirement_matcher_test.rb +0 -16
  101. data/test/unit/branch/branch_with_multiple_except_from_requirements_test.rb +0 -20
  102. data/test/unit/branch/branch_with_multiple_except_on_requirements_test.rb +0 -16
  103. data/test/unit/branch/branch_with_multiple_except_to_requirements_test.rb +0 -20
  104. data/test/unit/branch/branch_with_multiple_from_requirements_test.rb +0 -16
  105. data/test/unit/branch/branch_with_multiple_if_conditionals_test.rb +0 -20
  106. data/test/unit/branch/branch_with_multiple_implicit_requirements_test.rb +0 -53
  107. data/test/unit/branch/branch_with_multiple_to_requirements_test.rb +0 -20
  108. data/test/unit/branch/branch_with_multiple_unless_conditionals_test.rb +0 -20
  109. data/test/unit/branch/branch_with_nil_requirements_test.rb +0 -28
  110. data/test/unit/branch/branch_with_no_requirements_test.rb +0 -36
  111. data/test/unit/branch/branch_with_on_matcher_requirement_test.rb +0 -16
  112. data/test/unit/branch/branch_with_on_requirement_test.rb +0 -45
  113. data/test/unit/branch/branch_with_to_matcher_requirement_test.rb +0 -20
  114. data/test/unit/branch/branch_with_to_requirement_test.rb +0 -45
  115. data/test/unit/branch/branch_with_unless_conditional_test.rb +0 -27
  116. data/test/unit/branch/branch_without_guards_test.rb +0 -27
  117. data/test/unit/callback/callback_by_default_test.rb +0 -25
  118. data/test/unit/callback/callback_test.rb +0 -53
  119. data/test/unit/callback/callback_with_application_bound_object_test.rb +0 -23
  120. data/test/unit/callback/callback_with_application_terminator_test.rb +0 -24
  121. data/test/unit/callback/callback_with_arguments_test.rb +0 -14
  122. data/test/unit/callback/callback_with_around_type_and_arguments_test.rb +0 -25
  123. data/test/unit/callback/callback_with_around_type_and_block_test.rb +0 -44
  124. data/test/unit/callback/callback_with_around_type_and_bound_method_test.rb +0 -23
  125. data/test/unit/callback/callback_with_around_type_and_multiple_methods_test.rb +0 -93
  126. data/test/unit/callback/callback_with_around_type_and_terminator_test.rb +0 -17
  127. data/test/unit/callback/callback_with_block_test.rb +0 -20
  128. data/test/unit/callback/callback_with_bound_method_and_arguments_test.rb +0 -28
  129. data/test/unit/callback/callback_with_bound_method_test.rb +0 -35
  130. data/test/unit/callback/callback_with_do_method_test.rb +0 -18
  131. data/test/unit/callback/callback_with_explicit_requirements_test.rb +0 -32
  132. data/test/unit/callback/callback_with_if_condition_test.rb +0 -17
  133. data/test/unit/callback/callback_with_implicit_requirements_test.rb +0 -32
  134. data/test/unit/callback/callback_with_method_argument_test.rb +0 -18
  135. data/test/unit/callback/callback_with_mixed_methods_test.rb +0 -31
  136. data/test/unit/callback/callback_with_multiple_bound_methods_test.rb +0 -21
  137. data/test/unit/callback/callback_with_multiple_do_methods_test.rb +0 -29
  138. data/test/unit/callback/callback_with_multiple_method_arguments_test.rb +0 -29
  139. data/test/unit/callback/callback_with_terminator_test.rb +0 -22
  140. data/test/unit/callback/callback_with_unbound_method_test.rb +0 -14
  141. data/test/unit/callback/callback_with_unless_condition_test.rb +0 -17
  142. data/test/unit/callback/callback_without_arguments_test.rb +0 -14
  143. data/test/unit/callback/callback_without_terminator_test.rb +0 -12
  144. data/test/unit/error/error_by_default_test.rb +0 -21
  145. data/test/unit/error/error_with_message_test.rb +0 -23
  146. data/test/unit/eval_helper/eval_helpers_base_test.rb +0 -8
  147. data/test/unit/eval_helper/eval_helpers_proc_block_and_explicit_arguments_test.rb +0 -14
  148. data/test/unit/eval_helper/eval_helpers_proc_block_and_implicit_arguments_test.rb +0 -14
  149. data/test/unit/eval_helper/eval_helpers_proc_test.rb +0 -13
  150. data/test/unit/eval_helper/eval_helpers_proc_with_arguments_test.rb +0 -13
  151. data/test/unit/eval_helper/eval_helpers_proc_with_block_test.rb +0 -13
  152. data/test/unit/eval_helper/eval_helpers_proc_with_block_without_arguments_test.rb +0 -18
  153. data/test/unit/eval_helper/eval_helpers_proc_with_block_without_object_test.rb +0 -14
  154. data/test/unit/eval_helper/eval_helpers_proc_without_arguments_test.rb +0 -19
  155. data/test/unit/eval_helper/eval_helpers_string_test.rb +0 -25
  156. data/test/unit/eval_helper/eval_helpers_string_with_block_test.rb +0 -12
  157. data/test/unit/eval_helper/eval_helpers_symbol_method_missing_test.rb +0 -20
  158. data/test/unit/eval_helper/eval_helpers_symbol_private_test.rb +0 -17
  159. data/test/unit/eval_helper/eval_helpers_symbol_protected_test.rb +0 -17
  160. data/test/unit/eval_helper/eval_helpers_symbol_tainted_method_test.rb +0 -18
  161. data/test/unit/eval_helper/eval_helpers_symbol_test.rb +0 -16
  162. data/test/unit/eval_helper/eval_helpers_symbol_with_arguments_and_block_test.rb +0 -16
  163. data/test/unit/eval_helper/eval_helpers_symbol_with_arguments_test.rb +0 -16
  164. data/test/unit/eval_helper/eval_helpers_symbol_with_block_test.rb +0 -16
  165. data/test/unit/eval_helper/eval_helpers_test.rb +0 -13
  166. data/test/unit/event/event_after_being_copied_test.rb +0 -17
  167. data/test/unit/event/event_by_default_test.rb +0 -60
  168. data/test/unit/event/event_context_test.rb +0 -16
  169. data/test/unit/event/event_on_failure_test.rb +0 -44
  170. data/test/unit/event/event_test.rb +0 -34
  171. data/test/unit/event/event_transitions_test.rb +0 -62
  172. data/test/unit/event/event_with_conflicting_helpers_after_definition_test.rb +0 -79
  173. data/test/unit/event/event_with_conflicting_helpers_before_definition_test.rb +0 -58
  174. data/test/unit/event/event_with_conflicting_machine_test.rb +0 -48
  175. data/test/unit/event/event_with_dynamic_human_name_test.rb +0 -26
  176. data/test/unit/event/event_with_human_name_test.rb +0 -13
  177. data/test/unit/event/event_with_invalid_current_state_test.rb +0 -30
  178. data/test/unit/event/event_with_machine_action_test.rb +0 -33
  179. data/test/unit/event/event_with_marshalling_test.rb +0 -47
  180. data/test/unit/event/event_with_matching_disabled_transitions_test.rb +0 -115
  181. data/test/unit/event/event_with_matching_enabled_transitions_test.rb +0 -75
  182. data/test/unit/event/event_with_multiple_transitions_test.rb +0 -61
  183. data/test/unit/event/event_with_namespace_test.rb +0 -34
  184. data/test/unit/event/event_with_transition_with_blacklisted_to_state_test.rb +0 -60
  185. data/test/unit/event/event_with_transition_with_loopback_state_test.rb +0 -36
  186. data/test/unit/event/event_with_transition_with_nil_to_state_test.rb +0 -36
  187. data/test/unit/event/event_with_transition_with_whitelisted_to_state_test.rb +0 -51
  188. data/test/unit/event/event_with_transition_without_to_state_test.rb +0 -36
  189. data/test/unit/event/event_with_transitions_test.rb +0 -32
  190. data/test/unit/event/event_without_matching_transitions_test.rb +0 -41
  191. data/test/unit/event/event_without_transitions_test.rb +0 -28
  192. data/test/unit/event/invalid_event_test.rb +0 -20
  193. data/test/unit/event_collection/event_collection_attribute_with_machine_action_test.rb +0 -62
  194. data/test/unit/event_collection/event_collection_attribute_with_namespaced_machine_test.rb +0 -36
  195. data/test/unit/event_collection/event_collection_by_default_test.rb +0 -26
  196. data/test/unit/event_collection/event_collection_test.rb +0 -39
  197. data/test/unit/event_collection/event_collection_with_custom_machine_attribute_test.rb +0 -31
  198. data/test/unit/event_collection/event_collection_with_events_with_transitions_test.rb +0 -76
  199. data/test/unit/event_collection/event_collection_with_multiple_events_test.rb +0 -27
  200. data/test/unit/event_collection/event_collection_with_validations_test.rb +0 -74
  201. data/test/unit/event_collection/event_collection_without_machine_action_test.rb +0 -18
  202. data/test/unit/event_collection/event_string_collection_test.rb +0 -31
  203. data/test/unit/helper_module_test.rb +0 -17
  204. data/test/unit/integrations/integration_finder_test.rb +0 -16
  205. data/test/unit/integrations/integration_matcher_test.rb +0 -29
  206. data/test/unit/invalid_transition/invalid_parallel_transition_test.rb +0 -18
  207. data/test/unit/invalid_transition/invalid_transition_test.rb +0 -47
  208. data/test/unit/invalid_transition/invalid_transition_with_integration_test.rb +0 -45
  209. data/test/unit/invalid_transition/invalid_transition_with_namespace_test.rb +0 -32
  210. data/test/unit/machine/machine_after_being_copied_test.rb +0 -62
  211. data/test/unit/machine/machine_after_changing_initial_state.rb +0 -28
  212. data/test/unit/machine/machine_after_changing_owner_class_test.rb +0 -31
  213. data/test/unit/machine/machine_by_default_test.rb +0 -160
  214. data/test/unit/machine/machine_finder_custom_options_test.rb +0 -17
  215. data/test/unit/machine/machine_finder_with_existing_machine_on_superclass_test.rb +0 -85
  216. data/test/unit/machine/machine_finder_with_existing_on_same_class_test.rb +0 -23
  217. data/test/unit/machine/machine_finder_without_existing_machine_test.rb +0 -25
  218. data/test/unit/machine/machine_persistence_test.rb +0 -52
  219. data/test/unit/machine/machine_state_initialization_test.rb +0 -56
  220. data/test/unit/machine/machine_test.rb +0 -30
  221. data/test/unit/machine/machine_with_action_already_overridden_test.rb +0 -23
  222. data/test/unit/machine/machine_with_action_defined_in_class_test.rb +0 -37
  223. data/test/unit/machine/machine_with_action_defined_in_included_module_test.rb +0 -46
  224. data/test/unit/machine/machine_with_action_defined_in_superclass_test.rb +0 -43
  225. data/test/unit/machine/machine_with_action_undefined_test.rb +0 -33
  226. data/test/unit/machine/machine_with_cached_state_test.rb +0 -20
  227. data/test/unit/machine/machine_with_class_helpers_test.rb +0 -179
  228. data/test/unit/machine/machine_with_conflicting_helpers_after_definition_test.rb +0 -244
  229. data/test/unit/machine/machine_with_conflicting_helpers_before_definition_test.rb +0 -175
  230. data/test/unit/machine/machine_with_custom_action_test.rb +0 -11
  231. data/test/unit/machine/machine_with_custom_attribute_test.rb +0 -103
  232. data/test/unit/machine/machine_with_custom_initialize_test.rb +0 -24
  233. data/test/unit/machine/machine_with_custom_integration_test.rb +0 -72
  234. data/test/unit/machine/machine_with_custom_invalidation_test.rb +0 -39
  235. data/test/unit/machine/machine_with_custom_name_test.rb +0 -57
  236. data/test/unit/machine/machine_with_custom_plural_test.rb +0 -52
  237. data/test/unit/machine/machine_with_dynamic_initial_state_test.rb +0 -65
  238. data/test/unit/machine/machine_with_event_matchers_test.rb +0 -41
  239. data/test/unit/machine/machine_with_events_test.rb +0 -52
  240. data/test/unit/machine/machine_with_events_with_custom_human_names_test.rb +0 -18
  241. data/test/unit/machine/machine_with_events_with_transitions_test.rb +0 -37
  242. data/test/unit/machine/machine_with_existing_event_test.rb +0 -17
  243. data/test/unit/machine/machine_with_existing_machines_on_owner_class_test.rb +0 -20
  244. data/test/unit/machine/machine_with_existing_machines_with_same_attributes_on_owner_class_test.rb +0 -71
  245. data/test/unit/machine/machine_with_existing_machines_with_same_attributes_on_owner_subclass_test.rb +0 -31
  246. data/test/unit/machine/machine_with_existing_state_test.rb +0 -27
  247. data/test/unit/machine/machine_with_failure_callbacks_test.rb +0 -48
  248. data/test/unit/machine/machine_with_helpers_test.rb +0 -14
  249. data/test/unit/machine/machine_with_initial_state_with_value_and_owner_default.rb +0 -25
  250. data/test/unit/machine/machine_with_initialize_and_super_test.rb +0 -17
  251. data/test/unit/machine/machine_with_initialize_arguments_and_block_test.rb +0 -31
  252. data/test/unit/machine/machine_with_initialize_without_super_test.rb +0 -17
  253. data/test/unit/machine/machine_with_instance_helpers_test.rb +0 -179
  254. data/test/unit/machine/machine_with_integration_test.rb +0 -72
  255. data/test/unit/machine/machine_with_multiple_events_test.rb +0 -32
  256. data/test/unit/machine/machine_with_namespace_test.rb +0 -48
  257. data/test/unit/machine/machine_with_nil_action_test.rb +0 -27
  258. data/test/unit/machine/machine_with_other_states.rb +0 -22
  259. data/test/unit/machine/machine_with_owner_subclass_test.rb +0 -18
  260. data/test/unit/machine/machine_with_paths_test.rb +0 -25
  261. data/test/unit/machine/machine_with_private_action_test.rb +0 -43
  262. data/test/unit/machine/machine_with_state_matchers_test.rb +0 -41
  263. data/test/unit/machine/machine_with_state_with_matchers_test.rb +0 -19
  264. data/test/unit/machine/machine_with_states_test.rb +0 -55
  265. data/test/unit/machine/machine_with_states_with_behaviors_test.rb +0 -23
  266. data/test/unit/machine/machine_with_states_with_custom_human_names_test.rb +0 -18
  267. data/test/unit/machine/machine_with_states_with_custom_values_test.rb +0 -21
  268. data/test/unit/machine/machine_with_states_with_runtime_dependencies_test.rb +0 -19
  269. data/test/unit/machine/machine_with_static_initial_state_test.rb +0 -49
  270. data/test/unit/machine/machine_with_superclass_conflicting_helpers_after_definition_test.rb +0 -36
  271. data/test/unit/machine/machine_with_transition_callbacks_test.rb +0 -144
  272. data/test/unit/machine/machine_with_transitions_test.rb +0 -87
  273. data/test/unit/machine/machine_without_initialization_test.rb +0 -31
  274. data/test/unit/machine/machine_without_initialize_test.rb +0 -14
  275. data/test/unit/machine/machine_without_integration_test.rb +0 -31
  276. data/test/unit/machine_collection/machine_collection_by_default_test.rb +0 -11
  277. data/test/unit/machine_collection/machine_collection_fire_test.rb +0 -80
  278. data/test/unit/machine_collection/machine_collection_fire_with_transactions_test.rb +0 -54
  279. data/test/unit/machine_collection/machine_collection_fire_with_validations_test.rb +0 -76
  280. data/test/unit/machine_collection/machine_collection_state_initialization_test.rb +0 -111
  281. data/test/unit/machine_collection/machine_collection_transitions_with_blank_events_test.rb +0 -25
  282. data/test/unit/machine_collection/machine_collection_transitions_with_custom_options_test.rb +0 -20
  283. data/test/unit/machine_collection/machine_collection_transitions_with_different_actions_test.rb +0 -26
  284. data/test/unit/machine_collection/machine_collection_transitions_with_exisiting_transitions_test.rb +0 -25
  285. data/test/unit/machine_collection/machine_collection_transitions_with_invalid_events_test.rb +0 -25
  286. data/test/unit/machine_collection/machine_collection_transitions_with_same_actions_test.rb +0 -31
  287. data/test/unit/machine_collection/machine_collection_transitions_with_transition_test.rb +0 -26
  288. data/test/unit/machine_collection/machine_collection_transitions_without_events_test.rb +0 -25
  289. data/test/unit/machine_collection/machine_collection_transitions_without_transition_test.rb +0 -27
  290. data/test/unit/matcher/all_matcher_test.rb +0 -29
  291. data/test/unit/matcher/blacklist_matcher_test.rb +0 -30
  292. data/test/unit/matcher/loopback_matcher_test.rb +0 -27
  293. data/test/unit/matcher/matcher_by_default_test.rb +0 -15
  294. data/test/unit/matcher/matcher_with_multiple_values_test.rb +0 -15
  295. data/test/unit/matcher/matcher_with_value_test.rb +0 -15
  296. data/test/unit/matcher/whitelist_matcher_test.rb +0 -30
  297. data/test/unit/matcher_helpers/matcher_helpers_all_test.rb +0 -14
  298. data/test/unit/matcher_helpers/matcher_helpers_any_test.rb +0 -14
  299. data/test/unit/matcher_helpers/matcher_helpers_same_test.rb +0 -13
  300. data/test/unit/node_collection/node_collection_after_being_copied_test.rb +0 -46
  301. data/test/unit/node_collection/node_collection_after_update_test.rb +0 -36
  302. data/test/unit/node_collection/node_collection_by_default_test.rb +0 -22
  303. data/test/unit/node_collection/node_collection_test.rb +0 -23
  304. data/test/unit/node_collection/node_collection_with_indices_test.rb +0 -42
  305. data/test/unit/node_collection/node_collection_with_matcher_contexts_test.rb +0 -25
  306. data/test/unit/node_collection/node_collection_with_nodes_test.rb +0 -46
  307. data/test/unit/node_collection/node_collection_with_numeric_index_test.rb +0 -24
  308. data/test/unit/node_collection/node_collection_with_postdefined_contexts_test.rb +0 -22
  309. data/test/unit/node_collection/node_collection_with_predefined_contexts_test.rb +0 -23
  310. data/test/unit/node_collection/node_collection_with_string_index_test.rb +0 -20
  311. data/test/unit/node_collection/node_collection_with_symbol_index_test.rb +0 -20
  312. data/test/unit/node_collection/node_collection_without_indices_test.rb +0 -30
  313. data/test/unit/path/path_by_default_test.rb +0 -54
  314. data/test/unit/path/path_test.rb +0 -14
  315. data/test/unit/path/path_with_available_transitions_after_reaching_target_test.rb +0 -40
  316. data/test/unit/path/path_with_available_transitions_test.rb +0 -54
  317. data/test/unit/path/path_with_deep_target_reached_test.rb +0 -50
  318. data/test/unit/path/path_with_deep_target_test.rb +0 -40
  319. data/test/unit/path/path_with_duplicates_test.rb +0 -32
  320. data/test/unit/path/path_with_encountered_transitions_test.rb +0 -34
  321. data/test/unit/path/path_with_guarded_transitions_test.rb +0 -42
  322. data/test/unit/path/path_with_reached_target_test.rb +0 -35
  323. data/test/unit/path/path_with_transitions_test.rb +0 -54
  324. data/test/unit/path/path_with_unreached_target_test.rb +0 -31
  325. data/test/unit/path/path_without_transitions_test.rb +0 -24
  326. data/test/unit/path_collection/path_collection_by_default_test.rb +0 -46
  327. data/test/unit/path_collection/path_collection_test.rb +0 -24
  328. data/test/unit/path_collection/path_collection_with_deep_paths_test.rb +0 -43
  329. data/test/unit/path_collection/path_collection_with_duplicate_nodes_test.rb +0 -31
  330. data/test/unit/path_collection/path_collection_with_from_state_test.rb +0 -27
  331. data/test/unit/path_collection/path_collection_with_paths_test.rb +0 -47
  332. data/test/unit/path_collection/path_collection_with_to_state_test.rb +0 -29
  333. data/test/unit/path_collection/path_with_guarded_paths_test.rb +0 -25
  334. data/test/unit/state/state_after_being_copied_test.rb +0 -19
  335. data/test/unit/state/state_by_default_test.rb +0 -41
  336. data/test/unit/state/state_final_test.rb +0 -28
  337. data/test/unit/state/state_initial_test.rb +0 -13
  338. data/test/unit/state/state_not_final_test.rb +0 -32
  339. data/test/unit/state/state_not_initial_test.rb +0 -13
  340. data/test/unit/state/state_test.rb +0 -44
  341. data/test/unit/state/state_with_cached_lambda_value_test.rb +0 -29
  342. data/test/unit/state/state_with_conflicting_helpers_after_definition_test.rb +0 -38
  343. data/test/unit/state/state_with_conflicting_helpers_before_definition_test.rb +0 -29
  344. data/test/unit/state/state_with_conflicting_machine_name_test.rb +0 -20
  345. data/test/unit/state/state_with_conflicting_machine_test.rb +0 -37
  346. data/test/unit/state/state_with_context_test.rb +0 -60
  347. data/test/unit/state/state_with_dynamic_human_name_test.rb +0 -25
  348. data/test/unit/state/state_with_existing_context_method_test.rb +0 -24
  349. data/test/unit/state/state_with_human_name_test.rb +0 -13
  350. data/test/unit/state/state_with_integer_value_test.rb +0 -32
  351. data/test/unit/state/state_with_invalid_method_call_test.rb +0 -21
  352. data/test/unit/state/state_with_lambda_value_test.rb +0 -37
  353. data/test/unit/state/state_with_matcher_test.rb +0 -18
  354. data/test/unit/state/state_with_multiple_contexts_test.rb +0 -57
  355. data/test/unit/state/state_with_name_test.rb +0 -43
  356. data/test/unit/state/state_with_namespace_test.rb +0 -22
  357. data/test/unit/state/state_with_nil_value_test.rb +0 -35
  358. data/test/unit/state/state_with_redefined_context_method_test.rb +0 -45
  359. data/test/unit/state/state_with_symbolic_value_test.rb +0 -32
  360. data/test/unit/state/state_with_valid_inherited_method_call_for_current_state_test.rb +0 -40
  361. data/test/unit/state/state_with_valid_method_call_for_current_state_test.rb +0 -33
  362. data/test/unit/state/state_with_valid_method_call_for_different_state_test.rb +0 -41
  363. data/test/unit/state/state_without_cached_lambda_value_test.rb +0 -25
  364. data/test/unit/state/state_without_name_test.rb +0 -39
  365. data/test/unit/state_collection/state_collection_by_default_test.rb +0 -21
  366. data/test/unit/state_collection/state_collection_string_test.rb +0 -35
  367. data/test/unit/state_collection/state_collection_test.rb +0 -74
  368. data/test/unit/state_collection/state_collection_with_custom_state_values_test.rb +0 -29
  369. data/test/unit/state_collection/state_collection_with_event_transitions_test.rb +0 -39
  370. data/test/unit/state_collection/state_collection_with_initial_state_test.rb +0 -40
  371. data/test/unit/state_collection/state_collection_with_namespace_test.rb +0 -21
  372. data/test/unit/state_collection/state_collection_with_state_behaviors_test.rb +0 -40
  373. data/test/unit/state_collection/state_collection_with_state_matchers_test.rb +0 -29
  374. data/test/unit/state_collection/state_collection_with_transition_callbacks_test.rb +0 -40
  375. data/test/unit/state_context/state_context_proxy_test.rb +0 -26
  376. data/test/unit/state_context/state_context_proxy_with_if_and_unless_conditions_test.rb +0 -42
  377. data/test/unit/state_context/state_context_proxy_with_if_condition_test.rb +0 -64
  378. data/test/unit/state_context/state_context_proxy_with_multiple_if_conditions_test.rb +0 -32
  379. data/test/unit/state_context/state_context_proxy_with_multiple_unless_conditions_test.rb +0 -32
  380. data/test/unit/state_context/state_context_proxy_with_unless_condition_test.rb +0 -64
  381. data/test/unit/state_context/state_context_proxy_without_conditions_test.rb +0 -31
  382. data/test/unit/state_context/state_context_test.rb +0 -28
  383. data/test/unit/state_context/state_context_transition_test.rb +0 -104
  384. data/test/unit/state_context/state_context_with_matching_transition_test.rb +0 -27
  385. data/test/unit/state_machine/state_machine_by_default_test.rb +0 -12
  386. data/test/unit/state_machine/state_machine_test.rb +0 -20
  387. data/test/unit/transition/transition_after_being_performed_test.rb +0 -48
  388. data/test/unit/transition/transition_after_being_persisted_test.rb +0 -46
  389. data/test/unit/transition/transition_after_being_rolled_back_test.rb +0 -35
  390. data/test/unit/transition/transition_equality_test.rb +0 -52
  391. data/test/unit/transition/transition_loopback_test.rb +0 -18
  392. data/test/unit/transition/transition_test.rb +0 -96
  393. data/test/unit/transition/transition_transient_test.rb +0 -20
  394. data/test/unit/transition/transition_with_action_test.rb +0 -27
  395. data/test/unit/transition/transition_with_after_callbacks_skipped_test.rb +0 -127
  396. data/test/unit/transition/transition_with_after_callbacks_test.rb +0 -93
  397. data/test/unit/transition/transition_with_around_callbacks_test.rb +0 -141
  398. data/test/unit/transition/transition_with_before_callbacks_skipped_test.rb +0 -30
  399. data/test/unit/transition/transition_with_before_callbacks_test.rb +0 -104
  400. data/test/unit/transition/transition_with_custom_machine_attribute_test.rb +0 -28
  401. data/test/unit/transition/transition_with_different_states_test.rb +0 -18
  402. data/test/unit/transition/transition_with_dynamic_to_value_test.rb +0 -19
  403. data/test/unit/transition/transition_with_failure_callbacks_test.rb +0 -84
  404. data/test/unit/transition/transition_with_invalid_nodes_test.rb +0 -29
  405. data/test/unit/transition/transition_with_mixed_callbacks_test.rb +0 -105
  406. data/test/unit/transition/transition_with_multiple_after_callbacks_test.rb +0 -40
  407. data/test/unit/transition/transition_with_multiple_around_callbacks_test.rb +0 -114
  408. data/test/unit/transition/transition_with_multiple_before_callbacks_test.rb +0 -40
  409. data/test/unit/transition/transition_with_multiple_failure_callbacks_test.rb +0 -40
  410. data/test/unit/transition/transition_with_namespace_test.rb +0 -47
  411. data/test/unit/transition/transition_with_perform_arguments_test.rb +0 -35
  412. data/test/unit/transition/transition_with_transactions_test.rb +0 -42
  413. data/test/unit/transition/transition_without_callbacks_test.rb +0 -33
  414. data/test/unit/transition/transition_without_reading_state_test.rb +0 -22
  415. data/test/unit/transition/transition_without_running_action_test.rb +0 -47
  416. data/test/unit/transition_collection/attribute_transition_collection_by_default_test.rb +0 -23
  417. data/test/unit/transition_collection/attribute_transition_collection_marshalling_test.rb +0 -64
  418. data/test/unit/transition_collection/attribute_transition_collection_with_action_error_test.rb +0 -44
  419. data/test/unit/transition_collection/attribute_transition_collection_with_action_failed_test.rb +0 -44
  420. data/test/unit/transition_collection/attribute_transition_collection_with_after_callback_error_test.rb +0 -32
  421. data/test/unit/transition_collection/attribute_transition_collection_with_after_callback_halt_test.rb +0 -33
  422. data/test/unit/transition_collection/attribute_transition_collection_with_around_after_yield_callback_error_test.rb +0 -32
  423. data/test/unit/transition_collection/attribute_transition_collection_with_around_callback_after_yield_error_test.rb +0 -32
  424. data/test/unit/transition_collection/attribute_transition_collection_with_around_callback_after_yield_halt_test.rb +0 -33
  425. data/test/unit/transition_collection/attribute_transition_collection_with_around_callback_before_yield_halt_test.rb +0 -33
  426. data/test/unit/transition_collection/attribute_transition_collection_with_before_callback_error_test.rb +0 -32
  427. data/test/unit/transition_collection/attribute_transition_collection_with_before_callback_halt_test.rb +0 -33
  428. data/test/unit/transition_collection/attribute_transition_collection_with_callbacks_test.rb +0 -68
  429. data/test/unit/transition_collection/attribute_transition_collection_with_event_transitions_test.rb +0 -41
  430. data/test/unit/transition_collection/attribute_transition_collection_with_events_test.rb +0 -44
  431. data/test/unit/transition_collection/attribute_transition_collection_with_skipped_after_callbacks_test.rb +0 -42
  432. data/test/unit/transition_collection/transition_collection_by_default_test.rb +0 -23
  433. data/test/unit/transition_collection/transition_collection_empty_with_block_test.rb +0 -23
  434. data/test/unit/transition_collection/transition_collection_empty_without_block_test.rb +0 -12
  435. data/test/unit/transition_collection/transition_collection_invalid_test.rb +0 -21
  436. data/test/unit/transition_collection/transition_collection_partial_invalid_test.rb +0 -69
  437. data/test/unit/transition_collection/transition_collection_test.rb +0 -26
  438. data/test/unit/transition_collection/transition_collection_valid_test.rb +0 -57
  439. data/test/unit/transition_collection/transition_collection_with_action_error_test.rb +0 -66
  440. data/test/unit/transition_collection/transition_collection_with_action_failed_test.rb +0 -60
  441. data/test/unit/transition_collection/transition_collection_with_action_hook_and_block_test.rb +0 -17
  442. data/test/unit/transition_collection/transition_collection_with_action_hook_and_skipped_action_test.rb +0 -17
  443. data/test/unit/transition_collection/transition_collection_with_action_hook_and_skipped_after_callbacks_test.rb +0 -37
  444. data/test/unit/transition_collection/transition_collection_with_action_hook_base_test.rb +0 -34
  445. data/test/unit/transition_collection/transition_collection_with_action_hook_error_test.rb +0 -29
  446. data/test/unit/transition_collection/transition_collection_with_action_hook_invalid_test.rb +0 -17
  447. data/test/unit/transition_collection/transition_collection_with_action_hook_multiple_test.rb +0 -79
  448. data/test/unit/transition_collection/transition_collection_with_action_hook_test.rb +0 -45
  449. data/test/unit/transition_collection/transition_collection_with_action_hook_with_different_actions_test.rb +0 -48
  450. data/test/unit/transition_collection/transition_collection_with_action_hook_with_nil_action_test.rb +0 -42
  451. data/test/unit/transition_collection/transition_collection_with_after_callback_halt_test.rb +0 -47
  452. data/test/unit/transition_collection/transition_collection_with_before_callback_halt_test.rb +0 -51
  453. data/test/unit/transition_collection/transition_collection_with_block_test.rb +0 -46
  454. data/test/unit/transition_collection/transition_collection_with_callbacks_test.rb +0 -135
  455. data/test/unit/transition_collection/transition_collection_with_different_actions_test.rb +0 -189
  456. data/test/unit/transition_collection/transition_collection_with_duplicate_actions_test.rb +0 -48
  457. data/test/unit/transition_collection/transition_collection_with_empty_actions_test.rb +0 -41
  458. data/test/unit/transition_collection/transition_collection_with_mixed_actions_test.rb +0 -41
  459. data/test/unit/transition_collection/transition_collection_with_skipped_actions_and_block_test.rb +0 -34
  460. data/test/unit/transition_collection/transition_collection_with_skipped_actions_test.rb +0 -69
  461. data/test/unit/transition_collection/transition_collection_with_skipped_after_callbacks_and_around_callbacks_test.rb +0 -53
  462. data/test/unit/transition_collection/transition_collection_with_skipped_after_callbacks_test.rb +0 -34
  463. data/test/unit/transition_collection/transition_collection_with_transactions_test.rb +0 -65
  464. data/test/unit/transition_collection/transition_collection_without_transactions_test.rb +0 -29
@@ -1,60 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
-
4
- class EventByDefaultTest < StateMachinesTest
5
- def setup
6
- @klass = Class.new
7
- @machine = StateMachines::Machine.new(@klass)
8
- @machine.events << @event = StateMachines::Event.new(@machine, :ignite)
9
-
10
- @object = @klass.new
11
- end
12
-
13
- def test_should_have_a_machine
14
- assert_equal @machine, @event.machine
15
- end
16
-
17
- def test_should_have_a_name
18
- assert_equal :ignite, @event.name
19
- end
20
-
21
- def test_should_have_a_qualified_name
22
- assert_equal :ignite, @event.qualified_name
23
- end
24
-
25
- def test_should_have_a_human_name
26
- assert_equal 'ignite', @event.human_name
27
- end
28
-
29
- def test_should_not_have_any_branches
30
- assert @event.branches.empty?
31
- end
32
-
33
- def test_should_have_no_known_states
34
- assert @event.known_states.empty?
35
- end
36
-
37
- def test_should_not_be_able_to_fire
38
- refute @event.can_fire?(@object)
39
- end
40
-
41
- def test_should_not_have_a_transition
42
- assert_nil @event.transition_for(@object)
43
- end
44
-
45
- def test_should_define_a_predicate
46
- assert @object.respond_to?(:can_ignite?)
47
- end
48
-
49
- def test_should_define_a_transition_accessor
50
- assert @object.respond_to?(:ignite_transition)
51
- end
52
-
53
- def test_should_define_an_action
54
- assert @object.respond_to?(:ignite)
55
- end
56
-
57
- def test_should_define_a_bang_action
58
- assert @object.respond_to?(:ignite!)
59
- end
60
- end
@@ -1,16 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class EventContextTest < StateMachinesTest
4
- def setup
5
- @klass = Class.new
6
- @machine = StateMachines::Machine.new(@klass)
7
- @machine.events << @event = StateMachines::Event.new(@machine, :ignite, human_name: 'start')
8
- end
9
-
10
- def test_should_evaluate_within_the_event
11
- scope = nil
12
- @event.context { scope = self }
13
- assert_equal @event, scope
14
- end
15
- end
16
-
@@ -1,44 +0,0 @@
1
- require_relative '../../test_helper'
2
- require_relative '../../files/integrations/event_on_failure_integration'
3
-
4
- class EventOnFailureTest < StateMachinesTest
5
- def setup
6
- StateMachines::Integrations.reset
7
- StateMachines::Integrations.register(EventOnFailureIntegration)
8
- @klass = Class.new do
9
- attr_accessor :errors
10
- end
11
-
12
- @machine = StateMachines::Machine.new(@klass, integration: :event_on_failure_integration)
13
- @machine.state :parked
14
- @machine.events << @event = StateMachines::Event.new(@machine, :ignite)
15
-
16
- @object = @klass.new
17
- @object.state = 'parked'
18
- end
19
-
20
- def test_should_invalidate_the_state
21
- @event.fire(@object)
22
- assert_equal ['cannot transition via "ignite"'], @object.errors
23
- end
24
-
25
- def test_should_run_failure_callbacks
26
- callback_args = nil
27
- @machine.after_failure { |*args| callback_args = args }
28
-
29
- @event.fire(@object)
30
-
31
- object, transition = callback_args
32
- assert_equal @object, object
33
- refute_nil transition
34
- assert_equal @object, transition.object
35
- assert_equal @machine, transition.machine
36
- assert_equal :ignite, transition.event
37
- assert_equal :parked, transition.from_name
38
- assert_equal :parked, transition.to_name
39
- end
40
-
41
- def teardown
42
- StateMachines::Integrations.reset
43
- end
44
- end
@@ -1,34 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class EventTest < StateMachinesTest
4
- def setup
5
- @machine = StateMachines::Machine.new(Class.new)
6
- @machine.events << @event = StateMachines::Event.new(@machine, :ignite)
7
- @event.transition parked: :idling
8
- end
9
-
10
- def test_should_allow_changing_machine
11
- new_machine = StateMachines::Machine.new(Class.new)
12
- @event.machine = new_machine
13
- assert_equal new_machine, @event.machine
14
- end
15
-
16
- def test_should_allow_changing_human_name
17
- @event.human_name = 'Stop'
18
- assert_equal 'Stop', @event.human_name
19
- end
20
-
21
- def test_should_provide_matcher_helpers_during_initialization
22
- matchers = []
23
-
24
- @event.instance_eval do
25
- matchers = [all, any, same]
26
- end
27
-
28
- assert_equal [StateMachines::AllMatcher.instance, StateMachines::AllMatcher.instance, StateMachines::LoopbackMatcher.instance], matchers
29
- end
30
-
31
- def test_should_use_pretty_inspect
32
- assert_match '#<StateMachines::Event name=:ignite transitions=[:parked => :idling]>', @event.inspect
33
- end
34
- end
@@ -1,62 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class EventTransitionsTest < StateMachinesTest
4
- def setup
5
- @machine = StateMachines::Machine.new(Class.new)
6
- @machine.events << @event = StateMachines::Event.new(@machine, :ignite)
7
- end
8
-
9
- def test_should_not_raise_exception_if_implicit_option_specified
10
- @event.transition(invalid: :valid)
11
- end
12
-
13
- def test_should_not_allow_on_option
14
- exception = assert_raises(ArgumentError) { @event.transition(on: :ignite) }
15
- assert_equal 'Unknown key: :on. Valid keys are: :from, :to, :except_from, :except_to, :if, :unless', exception.message
16
- end
17
-
18
- def test_should_automatically_set_on_option
19
- branch = @event.transition(to: :idling)
20
- assert_instance_of StateMachines::WhitelistMatcher, branch.event_requirement
21
- assert_equal [:ignite], branch.event_requirement.values
22
- end
23
-
24
- def test_should_not_allow_except_on_option
25
- exception = assert_raises(ArgumentError) { @event.transition(except_on: :ignite) }
26
- assert_equal 'Unknown key: :except_on. Valid keys are: :from, :to, :except_from, :except_to, :if, :unless', exception.message
27
- end
28
-
29
- def test_should_allow_transitioning_without_a_to_state
30
- @event.transition(from: :parked)
31
- end
32
-
33
- def test_should_allow_transitioning_without_a_from_state
34
- @event.transition(to: :idling)
35
- end
36
-
37
- def test_should_allow_except_from_option
38
- @event.transition(except_from: :idling)
39
- end
40
-
41
- def test_should_allow_except_to_option
42
- @event.transition(except_to: :idling)
43
- end
44
-
45
- def test_should_allow_transitioning_from_a_single_state
46
- assert @event.transition(parked: :idling)
47
- end
48
-
49
- def test_should_allow_transitioning_from_multiple_states
50
- assert @event.transition([:parked, :idling] => :idling)
51
- end
52
-
53
- def test_should_allow_transitions_to_multiple_states
54
- assert @event.transition(parked: [:parked, :idling])
55
- end
56
-
57
- def test_should_have_transitions
58
- branch = @event.transition(to: :idling)
59
- assert_equal [branch], @event.branches
60
- end
61
- end
62
-
@@ -1,79 +0,0 @@
1
- require_relative '../../test_helper'
2
- require 'stringio'
3
-
4
- class EventWithConflictingHelpersAfterDefinitionTest < StateMachinesTest
5
- def setup
6
- @original_stderr, $stderr = $stderr, StringIO.new
7
-
8
- @klass = Class.new do
9
- def can_ignite?
10
- 0
11
- end
12
-
13
- def ignite_transition
14
- 0
15
- end
16
-
17
- def ignite
18
- 0
19
- end
20
-
21
- def ignite!
22
- 0
23
- end
24
- end
25
- @machine = StateMachines::Machine.new(@klass)
26
- @machine.events << @event = StateMachines::Event.new(@machine, :ignite)
27
- @object = @klass.new
28
- end
29
-
30
- def test_should_not_redefine_predicate
31
- assert_equal 0, @object.can_ignite?
32
- end
33
-
34
- def test_should_not_redefine_transition_accessor
35
- assert_equal 0, @object.ignite_transition
36
- end
37
-
38
- def test_should_not_redefine_action
39
- assert_equal 0, @object.ignite
40
- end
41
-
42
- def test_should_not_redefine_bang_action
43
- assert_equal 0, @object.ignite!
44
- end
45
-
46
- def test_should_allow_super_chaining
47
- @klass.class_eval do
48
- def can_ignite?
49
- super
50
- end
51
-
52
- def ignite_transition
53
- super
54
- end
55
-
56
- def ignite
57
- super
58
- end
59
-
60
- def ignite!
61
- super
62
- end
63
- end
64
-
65
- assert_equal false, @object.can_ignite?
66
- assert_equal nil, @object.ignite_transition
67
- assert_equal false, @object.ignite
68
- assert_raises(StateMachines::InvalidTransition) { @object.ignite! }
69
- end
70
-
71
- def test_should_not_output_warning
72
- assert_equal '', $stderr.string
73
- end
74
-
75
- def teardown
76
- $stderr = @original_stderr
77
- end
78
- end
79
-
@@ -1,58 +0,0 @@
1
- require_relative '../../test_helper'
2
- require 'stringio'
3
-
4
- class EventWithConflictingHelpersBeforeDefinitionTest < StateMachinesTest
5
- def setup
6
- @original_stderr, $stderr = $stderr, StringIO.new
7
-
8
- @superclass = Class.new do
9
- def can_ignite?
10
- 0
11
- end
12
-
13
- def ignite_transition
14
- 0
15
- end
16
-
17
- def ignite
18
- 0
19
- end
20
-
21
- def ignite!
22
- 0
23
- end
24
- end
25
- @klass = Class.new(@superclass)
26
- @machine = StateMachines::Machine.new(@klass)
27
- @machine.events << @event = StateMachines::Event.new(@machine, :ignite)
28
- @object = @klass.new
29
- end
30
-
31
- def test_should_not_redefine_predicate
32
- assert_equal 0, @object.can_ignite?
33
- end
34
-
35
- def test_should_not_redefine_transition_accessor
36
- assert_equal 0, @object.ignite_transition
37
- end
38
-
39
- def test_should_not_redefine_action
40
- assert_equal 0, @object.ignite
41
- end
42
-
43
- def test_should_not_redefine_bang_action
44
- assert_equal 0, @object.ignite!
45
- end
46
-
47
- def test_should_output_warning
48
- expected = %w(can_ignite? ignite_transition ignite ignite!).map do |method|
49
- "Instance method \"#{method}\" is already defined in #{@superclass}, use generic helper instead or set StateMachines::Machine.ignore_method_conflicts = true.\n"
50
- end.join
51
-
52
- assert_equal expected, $stderr.string
53
- end
54
-
55
- def teardown
56
- $stderr = @original_stderr
57
- end
58
- end
@@ -1,48 +0,0 @@
1
- require_relative '../../test_helper'
2
- require 'stringio'
3
-
4
- class EventWithConflictingMachineTest < StateMachinesTest
5
- def setup
6
- @original_stderr, $stderr = $stderr, StringIO.new
7
-
8
- @klass = Class.new
9
- @state_machine = StateMachines::Machine.new(@klass, :state)
10
- @state_machine.state :parked, :idling
11
- @state_machine.events << @state_event = StateMachines::Event.new(@state_machine, :ignite)
12
- end
13
-
14
- def test_should_not_overwrite_first_event
15
- @status_machine = StateMachines::Machine.new(@klass, :status)
16
- @status_machine.state :first_gear, :second_gear
17
- @status_machine.events << @status_event = StateMachines::Event.new(@status_machine, :ignite)
18
-
19
- @object = @klass.new
20
- @object.state = 'parked'
21
- @object.status = 'first_gear'
22
-
23
- @state_event.transition(parked: :idling)
24
- @status_event.transition(parked: :first_gear)
25
-
26
- @object.ignite
27
- assert_equal 'idling', @object.state
28
- assert_equal 'first_gear', @object.status
29
- end
30
-
31
- def test_should_output_warning
32
- @status_machine = StateMachines::Machine.new(@klass, :status)
33
- @status_machine.events << @status_event = StateMachines::Event.new(@status_machine, :ignite)
34
-
35
- assert_equal "Event :ignite for :status is already defined in :state\n", $stderr.string
36
- end
37
-
38
- def test_should_not_output_warning_if_using_different_namespace
39
- @status_machine = StateMachines::Machine.new(@klass, :status, namespace: 'alarm')
40
- @status_machine.events << @status_event = StateMachines::Event.new(@status_machine, :ignite)
41
-
42
- assert_equal '', $stderr.string
43
- end
44
-
45
- def teardown
46
- $stderr = @original_stderr
47
- end
48
- end
@@ -1,26 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class EventWithDynamicHumanNameTest < StateMachinesTest
4
- def setup
5
- @klass = Class.new
6
- @machine = StateMachines::Machine.new(@klass)
7
- @machine.events << @event = StateMachines::Event.new(@machine, :ignite, human_name: lambda { |_event, object| ['start', object] })
8
- end
9
-
10
- def test_should_use_custom_human_name
11
- human_name, klass = @event.human_name
12
- assert_equal 'start', human_name
13
- assert_equal @klass, klass
14
- end
15
-
16
- def test_should_allow_custom_class_to_be_passed_through
17
- human_name, klass = @event.human_name(1)
18
- assert_equal 'start', human_name
19
- assert_equal 1, klass
20
- end
21
-
22
- def test_should_not_cache_value
23
- refute_same @event.human_name, @event.human_name
24
- end
25
- end
26
-
@@ -1,13 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class EventWithHumanNameTest < StateMachinesTest
4
- def setup
5
- @klass = Class.new
6
- @machine = StateMachines::Machine.new(@klass)
7
- @machine.events << @event = StateMachines::Event.new(@machine, :ignite, human_name: 'start')
8
- end
9
-
10
- def test_should_use_custom_human_name
11
- assert_equal 'start', @event.human_name
12
- end
13
- end
@@ -1,30 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class EventWithInvalidCurrentStateTest < StateMachinesTest
4
- def setup
5
- @klass = Class.new
6
- @machine = StateMachines::Machine.new(@klass)
7
- @machine.state :parked, :idling
8
-
9
- @machine.events << @event = StateMachines::Event.new(@machine, :ignite)
10
- @event.transition(parked: :idling)
11
-
12
- @object = @klass.new
13
- @object.state = 'invalid'
14
- end
15
-
16
- def test_should_raise_exception_when_checking_availability
17
- exception = assert_raises(ArgumentError) { @event.can_fire?(@object) }
18
- assert_equal '"invalid" is not a known state value', exception.message
19
- end
20
-
21
- def test_should_raise_exception_when_finding_transition
22
- exception = assert_raises(ArgumentError) { @event.transition_for(@object) }
23
- assert_equal '"invalid" is not a known state value', exception.message
24
- end
25
-
26
- def test_should_raise_exception_when_firing
27
- exception = assert_raises(ArgumentError) { @event.fire(@object) }
28
- assert_equal '"invalid" is not a known state value', exception.message
29
- end
30
- end
@@ -1,33 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class EventWithMachineActionTest < StateMachinesTest
4
- def setup
5
- @klass = Class.new do
6
- attr_reader :saved
7
-
8
- def save
9
- @saved = true
10
- end
11
- end
12
-
13
- @machine = StateMachines::Machine.new(@klass, action: :save)
14
- @machine.state :parked, :idling
15
-
16
- @machine.events << @event = StateMachines::Event.new(@machine, :ignite)
17
- @event.transition(parked: :idling)
18
-
19
- @object = @klass.new
20
- @object.state = 'parked'
21
- end
22
-
23
- def test_should_run_action_on_fire
24
- @event.fire(@object)
25
- assert @object.saved
26
- end
27
-
28
- def test_should_not_run_action_if_configured_to_skip
29
- @event.fire(@object, false)
30
- refute @object.saved
31
- end
32
- end
33
-
@@ -1,47 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class EventWithMarshallingTest < StateMachinesTest
4
- def setup
5
- @klass = Class.new do
6
- def save
7
- true
8
- end
9
- end
10
- self.class.const_set('Example', @klass)
11
-
12
- @machine = StateMachines::Machine.new(@klass, action: :save)
13
- @machine.state :parked, :idling
14
-
15
- @machine.events << @event = StateMachines::Event.new(@machine, :ignite)
16
- @event.transition(parked: :idling)
17
-
18
- @object = @klass.new
19
- @object.state = 'parked'
20
- end
21
-
22
- def test_should_marshal_during_before_callbacks
23
- @machine.before_transition { |object, _transition| Marshal.dump(object) }
24
- @event.fire(@object)
25
- end
26
-
27
- def test_should_marshal_during_action
28
- @klass.class_eval do
29
- remove_method :save
30
-
31
- def save
32
- Marshal.dump(self)
33
- end
34
- end
35
-
36
- @event.fire(@object)
37
- end
38
-
39
- def test_should_marshal_during_after_callbacks
40
- @machine.after_transition { |object, _transition| Marshal.dump(object) }
41
- @event.fire(@object)
42
- end
43
-
44
- def teardown
45
- self.class.send(:remove_const, 'Example')
46
- end
47
- end
@@ -1,115 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class EventWithMatchingDisabledTransitionsTest < StateMachinesTest
4
- module Custom
5
- include StateMachines::Integrations::Base
6
-
7
- def invalidate(object, _attribute, message, values = [])
8
- (object.errors ||= []) << generate_message(message, values)
9
- end
10
-
11
- def reset(object)
12
- object.errors = []
13
- end
14
- end
15
-
16
- def setup
17
- StateMachines::Integrations.register(EventWithMatchingDisabledTransitionsTest::Custom)
18
-
19
- @klass = Class.new do
20
- attr_accessor :errors
21
- end
22
-
23
- @machine = StateMachines::Machine.new(@klass, integration: :custom)
24
- @machine.state :parked, :idling
25
-
26
- @machine.events << @event = StateMachines::Event.new(@machine, :ignite)
27
- @event.transition(parked: :idling, if: lambda { false })
28
-
29
- @object = @klass.new
30
- @object.state = 'parked'
31
- end
32
-
33
- def test_should_not_be_able_to_fire
34
- refute @event.can_fire?(@object)
35
- end
36
-
37
- def test_should_be_able_to_fire_with_disabled_guards
38
- assert @event.can_fire?(@object, guard: false)
39
- end
40
-
41
- def test_should_not_have_a_transition
42
- assert_nil @event.transition_for(@object)
43
- end
44
-
45
- def test_should_have_a_transition_with_disabled_guards
46
- refute_nil @event.transition_for(@object, guard: false)
47
- end
48
-
49
- def test_should_not_fire
50
- refute @event.fire(@object)
51
- end
52
-
53
- def test_should_not_change_the_current_state
54
- @event.fire(@object)
55
- assert_equal 'parked', @object.state
56
- end
57
-
58
- def test_should_invalidate_the_state
59
- @event.fire(@object)
60
- assert_equal ['cannot transition via "ignite"'], @object.errors
61
- end
62
-
63
- def test_should_invalidate_with_human_event_name
64
- @event.human_name = 'start'
65
- @event.fire(@object)
66
- assert_equal ['cannot transition via "start"'], @object.errors
67
- end
68
-
69
- def test_should_invalid_with_human_state_name_if_specified
70
- klass = Class.new do
71
- attr_accessor :errors
72
- end
73
-
74
- machine = StateMachines::Machine.new(klass, integration: :custom, messages: { invalid_transition: 'cannot transition via "%s" from "%s"' })
75
- parked, _idling = machine.state :parked, :idling
76
- parked.human_name = 'stopped'
77
-
78
- machine.events << event = StateMachines::Event.new(machine, :ignite)
79
- event.transition(parked: :idling, if: lambda { false })
80
-
81
- object = @klass.new
82
- object.state = 'parked'
83
-
84
- event.fire(object)
85
- assert_equal ['cannot transition via "ignite" from "stopped"'], object.errors
86
- end
87
-
88
- def test_should_reset_existing_error
89
- @object.errors = ['invalid']
90
-
91
- @event.fire(@object)
92
- assert_equal ['cannot transition via "ignite"'], @object.errors
93
- end
94
-
95
- def test_should_run_failure_callbacks
96
- callback_args = nil
97
- @machine.after_failure { |*args| callback_args = args }
98
-
99
- @event.fire(@object)
100
-
101
- object, transition = callback_args
102
- assert_equal @object, object
103
- refute_nil transition
104
- assert_equal @object, transition.object
105
- assert_equal @machine, transition.machine
106
- assert_equal :ignite, transition.event
107
- assert_equal :parked, transition.from_name
108
- assert_equal :parked, transition.to_name
109
- end
110
-
111
- def teardown
112
- StateMachines::Integrations.reset
113
- end
114
- end
115
-