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,96 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class TransitionTest < StateMachinesTest
4
- def setup
5
- @klass = Class.new
6
- @machine = StateMachines::Machine.new(@klass)
7
- @machine.state :parked, :idling
8
- @machine.event :ignite
9
-
10
- @object = @klass.new
11
- @object.state = 'parked'
12
-
13
- @transition = StateMachines::Transition.new(@object, @machine, :ignite, :parked, :idling)
14
- end
15
-
16
- def test_should_have_an_object
17
- assert_equal @object, @transition.object
18
- end
19
-
20
- def test_should_have_a_machine
21
- assert_equal @machine, @transition.machine
22
- end
23
-
24
- def test_should_have_an_event
25
- assert_equal :ignite, @transition.event
26
- end
27
-
28
- def test_should_have_a_qualified_event
29
- assert_equal :ignite, @transition.qualified_event
30
- end
31
-
32
- def test_should_have_a_human_event
33
- assert_equal 'ignite', @transition.human_event
34
- end
35
-
36
- def test_should_have_a_from_value
37
- assert_equal 'parked', @transition.from
38
- end
39
-
40
- def test_should_have_a_from_name
41
- assert_equal :parked, @transition.from_name
42
- end
43
-
44
- def test_should_have_a_qualified_from_name
45
- assert_equal :parked, @transition.qualified_from_name
46
- end
47
-
48
- def test_should_have_a_human_from_name
49
- assert_equal 'parked', @transition.human_from_name
50
- end
51
-
52
- def test_should_have_a_to_value
53
- assert_equal 'idling', @transition.to
54
- end
55
-
56
- def test_should_have_a_to_name
57
- assert_equal :idling, @transition.to_name
58
- end
59
-
60
- def test_should_have_a_qualified_to_name
61
- assert_equal :idling, @transition.qualified_to_name
62
- end
63
-
64
- def test_should_have_a_human_to_name
65
- assert_equal 'idling', @transition.human_to_name
66
- end
67
-
68
- def test_should_have_an_attribute
69
- assert_equal :state, @transition.attribute
70
- end
71
-
72
- def test_should_not_have_an_action
73
- assert_nil @transition.action
74
- end
75
-
76
- def test_should_not_be_transient
77
- assert_equal false, @transition.transient?
78
- end
79
-
80
- def test_should_generate_attributes
81
- expected = { object: @object, attribute: :state, event: :ignite, from: 'parked', to: 'idling' }
82
- assert_equal expected, @transition.attributes
83
- end
84
-
85
- def test_should_have_empty_args
86
- assert_equal [], @transition.args
87
- end
88
-
89
- def test_should_not_have_a_result
90
- assert_nil @transition.result
91
- end
92
-
93
- def test_should_use_pretty_inspect
94
- assert_equal '#<StateMachines::Transition attribute=:state event=:ignite from="parked" from_name=:parked to="idling" to_name=:idling>', @transition.inspect
95
- end
96
- end
@@ -1,20 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class TransitionTransientTest < StateMachinesTest
4
- def setup
5
- @klass = Class.new
6
-
7
- @machine = StateMachines::Machine.new(@klass)
8
- @machine.state :parked, :idling
9
- @machine.event :ignite
10
-
11
- @object = @klass.new
12
- @object.state = 'parked'
13
- @transition = StateMachines::Transition.new(@object, @machine, :ignite, :parked, :idling)
14
- @transition.transient = true
15
- end
16
-
17
- def test_should_be_transient
18
- assert @transition.transient?
19
- end
20
- end
@@ -1,27 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class TransitionWithActionTest < StateMachinesTest
4
- def setup
5
- @klass = Class.new do
6
- def save
7
- end
8
- end
9
-
10
- @machine = StateMachines::Machine.new(@klass, action: :save)
11
- @machine.state :parked, :idling
12
- @machine.event :ignite
13
-
14
- @object = @klass.new
15
- @object.state = 'parked'
16
-
17
- @transition = StateMachines::Transition.new(@object, @machine, :ignite, :parked, :idling)
18
- end
19
-
20
- def test_should_have_an_action
21
- assert_equal :save, @transition.action
22
- end
23
-
24
- def test_should_not_have_a_result
25
- assert_nil @transition.result
26
- end
27
- end
@@ -1,127 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class TransitionWithAfterCallbacksSkippedTest < StateMachinesTest
4
- def setup
5
- @klass = Class.new
6
-
7
- @machine = StateMachines::Machine.new(@klass)
8
- @machine.state :parked, :idling
9
- @machine.event :ignite
10
-
11
- @object = @klass.new
12
- @object.state = 'parked'
13
- @transition = StateMachines::Transition.new(@object, @machine, :ignite, :parked, :idling)
14
- end
15
-
16
- def test_should_run_before_callbacks
17
- @machine.before_transition { @run = true }
18
-
19
- assert_equal true, @transition.run_callbacks(after: false)
20
- assert @run
21
- end
22
-
23
- def test_should_not_run_after_callbacks
24
- @run = false
25
- @machine.after_transition { @run = true }
26
-
27
- assert_equal true, @transition.run_callbacks(after: false)
28
- refute @run
29
- end
30
-
31
- if StateMachines::Transition.pause_supported?
32
- def test_should_run_around_callbacks_before_yield
33
- @machine.around_transition { |block| @run = true; block.call }
34
-
35
- assert_equal true, @transition.run_callbacks(after: false)
36
- assert @run
37
- end
38
-
39
- def test_should_not_run_around_callbacks_after_yield
40
- @run = false
41
- @machine.around_transition { |block| block.call; @run = true }
42
-
43
- assert_equal true, @transition.run_callbacks(after: false)
44
- refute @run
45
- end
46
-
47
- def test_should_continue_around_transition_execution_on_second_call
48
- @callbacks = []
49
- @machine.around_transition { |block| @callbacks << :before_around_1; block.call; @callbacks << :after_around_1 }
50
- @machine.around_transition { |block| @callbacks << :before_around_2; block.call; @callbacks << :after_around_2 }
51
- @machine.after_transition { @callbacks << :after }
52
-
53
- assert_equal true, @transition.run_callbacks(after: false)
54
- assert_equal [:before_around_1, :before_around_2], @callbacks
55
-
56
- assert_equal true, @transition.run_callbacks
57
- assert_equal [:before_around_1, :before_around_2, :after_around_2, :after_around_1, :after], @callbacks
58
- end
59
-
60
- def test_should_not_run_further_callbacks_if_halted_during_continue_around_transition
61
- @callbacks = []
62
- @machine.around_transition { |block| @callbacks << :before_around_1; block.call; @callbacks << :after_around_1 }
63
- @machine.around_transition { |block| @callbacks << :before_around_2; block.call; @callbacks << :after_around_2; throw :halt }
64
- @machine.after_transition { @callbacks << :after }
65
-
66
- assert_equal true, @transition.run_callbacks(after: false)
67
- assert_equal [:before_around_1, :before_around_2], @callbacks
68
-
69
- assert_equal true, @transition.run_callbacks
70
- assert_equal [:before_around_1, :before_around_2, :after_around_2], @callbacks
71
- end
72
-
73
- def test_should_not_be_able_to_continue_twice
74
- @count = 0
75
- @machine.around_transition { |block| block.call; @count += 1 }
76
- @machine.after_transition { @count += 1 }
77
-
78
- @transition.run_callbacks(after: false)
79
-
80
- 2.times do
81
- assert_equal true, @transition.run_callbacks
82
- assert_equal 2, @count
83
- end
84
- end
85
-
86
- def test_should_not_be_able_to_continue_again_after_halted
87
- @count = 0
88
- @machine.around_transition { |block| block.call; @count += 1; throw :halt }
89
- @machine.after_transition { @count += 1 }
90
-
91
- @transition.run_callbacks(after: false)
92
-
93
- 2.times do
94
- assert_equal true, @transition.run_callbacks
95
- assert_equal 1, @count
96
- end
97
- end
98
-
99
- def test_should_have_access_to_result_after_continued
100
- @machine.around_transition { |block| @around_before_result = @transition.result; block.call; @around_after_result = @transition.result }
101
- @machine.after_transition { @after_result = @transition.result }
102
-
103
- @transition.run_callbacks(after: false)
104
- @transition.run_callbacks { { result: 1 } }
105
-
106
- assert_nil @around_before_result
107
- assert_equal 1, @around_after_result
108
- assert_equal 1, @after_result
109
- end
110
-
111
- def test_should_raise_exceptions_during_around_callbacks_after_yield_in_second_execution
112
- @machine.around_transition { |block| block.call; fail ArgumentError }
113
-
114
- @transition.run_callbacks(after: false)
115
- assert_raises(ArgumentError) { @transition.run_callbacks }
116
- end
117
- else
118
- def test_should_raise_exception_on_second_call
119
- @callbacks = []
120
- @machine.around_transition { |block| @callbacks << :before_around_1; block.call; @callbacks << :after_around_1 }
121
- @machine.around_transition { |block| @callbacks << :before_around_2; block.call; @callbacks << :after_around_2 }
122
- @machine.after_transition { @callbacks << :after }
123
-
124
- assert_raises(ArgumentError) { @transition.run_callbacks(after: false) }
125
- end
126
- end
127
- end
@@ -1,93 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class TransitionWithAfterCallbacksTest < StateMachinesTest
4
- def setup
5
- @klass = Class.new
6
-
7
- @machine = StateMachines::Machine.new(@klass)
8
- @machine.state :parked, :idling
9
- @machine.event :ignite
10
-
11
- @object = @klass.new
12
- @object.state = 'parked'
13
- @transition = StateMachines::Transition.new(@object, @machine, :ignite, :parked, :idling)
14
- end
15
-
16
- def test_should_run_after_callbacks
17
- @machine.after_transition { |_object| @run = true }
18
- result = @transition.run_callbacks
19
-
20
- assert_equal true, result
21
- assert_equal true, @run
22
- end
23
-
24
- def test_should_only_run_those_that_match_transition_context
25
- @count = 0
26
- callback = lambda { @count += 1 }
27
-
28
- @machine.after_transition from: :parked, to: :idling, on: :park, do: callback
29
- @machine.after_transition from: :parked, to: :parked, on: :park, do: callback
30
- @machine.after_transition from: :parked, to: :idling, on: :ignite, do: callback
31
- @machine.after_transition from: :idling, to: :idling, on: :park, do: callback
32
- @transition.run_callbacks
33
-
34
- assert_equal 1, @count
35
- end
36
-
37
- def test_should_not_run_if_not_successful
38
- @run = false
39
- @machine.after_transition { |_object| @run = true }
40
- @transition.run_callbacks { { success: false } }
41
- refute @run
42
- end
43
-
44
- def test_should_run_if_successful
45
- @machine.after_transition { |_object| @run = true }
46
- @transition.run_callbacks { { success: true } }
47
- assert @run
48
- end
49
-
50
- def test_should_pass_transition_as_argument
51
- @machine.after_transition { |*args| @args = args }
52
-
53
- @transition.run_callbacks
54
- assert_equal [@object, @transition], @args
55
- end
56
-
57
- def test_should_catch_halts
58
- @machine.after_transition { throw :halt }
59
-
60
- result = @transition.run_callbacks
61
- assert_equal true, result
62
- end
63
-
64
- def test_should_not_catch_exceptions
65
- @machine.after_transition { fail ArgumentError }
66
- assert_raises(ArgumentError) { @transition.run_callbacks }
67
- end
68
-
69
- def test_should_not_be_able_to_run_twice
70
- @count = 0
71
- @machine.after_transition { @count += 1 }
72
- @transition.run_callbacks
73
- @transition.run_callbacks
74
- assert_equal 1, @count
75
- end
76
-
77
- def test_should_not_be_able_to_run_twice_if_halted
78
- @count = 0
79
- @machine.after_transition { @count += 1; throw :halt }
80
- @transition.run_callbacks
81
- @transition.run_callbacks
82
- assert_equal 1, @count
83
- end
84
-
85
- def test_should_be_able_to_run_again_after_resetting
86
- @count = 0
87
- @machine.after_transition { @count += 1 }
88
- @transition.run_callbacks
89
- @transition.reset
90
- @transition.run_callbacks
91
- assert_equal 2, @count
92
- end
93
- end
@@ -1,141 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class TransitionWithAroundCallbacksTest < StateMachinesTest
4
- def setup
5
- @klass = Class.new
6
-
7
- @machine = StateMachines::Machine.new(@klass)
8
- @machine.state :parked, :idling
9
- @machine.event :ignite
10
-
11
- @object = @klass.new
12
- @object.state = 'parked'
13
- @transition = StateMachines::Transition.new(@object, @machine, :ignite, :parked, :idling)
14
- end
15
-
16
- def test_should_run_around_callbacks
17
- @machine.around_transition { |_object, _transition, block| @run_before = true; block.call; @run_after = true }
18
- result = @transition.run_callbacks
19
-
20
- assert_equal true, result
21
- assert_equal true, @run_before
22
- assert_equal true, @run_after
23
- end
24
-
25
- def test_should_only_run_those_that_match_transition_context
26
- @count = 0
27
- callback = lambda { |_object, _transition, block| @count += 1; block.call }
28
-
29
- @machine.around_transition from: :parked, to: :idling, on: :park, do: callback
30
- @machine.around_transition from: :parked, to: :parked, on: :park, do: callback
31
- @machine.around_transition from: :parked, to: :idling, on: :ignite, do: callback
32
- @machine.around_transition from: :idling, to: :idling, on: :park, do: callback
33
- @transition.run_callbacks
34
-
35
- assert_equal 1, @count
36
- end
37
-
38
- def test_should_pass_transition_as_argument
39
- @machine.around_transition { |*args| block = args.pop; @args = args; block.call }
40
- @transition.run_callbacks
41
-
42
- assert_equal [@object, @transition], @args
43
- end
44
-
45
- def test_should_run_block_between_callback
46
- @callbacks = []
47
- @machine.around_transition { |block| @callbacks << :before; block.call; @callbacks << :after }
48
- @transition.run_callbacks { @callbacks << :within; { success: true } }
49
-
50
- assert_equal [:before, :within, :after], @callbacks
51
- end
52
-
53
- def test_should_have_access_to_result_after_yield
54
- @machine.around_transition { |block| @before_result = @transition.result; block.call; @after_result = @transition.result }
55
- @transition.run_callbacks { { result: 1, success: true } }
56
-
57
- assert_nil @before_result
58
- assert_equal 1, @after_result
59
- end
60
-
61
- def test_should_catch_before_yield_halts
62
- @machine.around_transition { throw :halt }
63
-
64
- result = @transition.run_callbacks
65
- assert_equal false, result
66
- end
67
-
68
- def test_should_catch_after_yield_halts
69
- @machine.around_transition { |block| block.call; throw :halt }
70
-
71
- result = @transition.run_callbacks
72
- assert_equal true, result
73
- end
74
-
75
- def test_should_not_catch_before_yield
76
- @machine.around_transition { fail ArgumentError }
77
- assert_raises(ArgumentError) { @transition.run_callbacks }
78
- end
79
-
80
- def test_should_not_catch_after_yield
81
- @machine.around_transition { |block| block.call; fail ArgumentError }
82
- assert_raises(ArgumentError) { @transition.run_callbacks }
83
- end
84
-
85
- def test_should_fail_if_not_yielded
86
- @machine.around_transition {}
87
-
88
- result = @transition.run_callbacks
89
- assert_equal false, result
90
- end
91
-
92
- def test_should_not_be_able_to_run_twice
93
- @before_count = 0
94
- @after_count = 0
95
- @machine.around_transition { |block| @before_count += 1; block.call; @after_count += 1 }
96
- @transition.run_callbacks
97
- @transition.run_callbacks
98
- assert_equal 1, @before_count
99
- assert_equal 1, @after_count
100
- end
101
-
102
- def test_should_be_able_to_run_again_after_resetting
103
- @before_count = 0
104
- @after_count = 0
105
- @machine.around_transition { |block| @before_count += 1; block.call; @after_count += 1 }
106
- @transition.run_callbacks
107
- @transition.reset
108
- @transition.run_callbacks
109
- assert_equal 2, @before_count
110
- assert_equal 2, @after_count
111
- end
112
-
113
- def test_should_succeed_if_block_result_is_false
114
- @machine.around_transition { |block| @before_run = true; block.call; @after_run = true }
115
- assert_equal true, @transition.run_callbacks { { success: true, result: false } }
116
- assert @before_run
117
- assert @after_run
118
- end
119
-
120
- def test_should_succeed_if_block_result_is_true
121
- @machine.around_transition { |block| @before_run = true; block.call; @after_run = true }
122
- assert_equal true, @transition.run_callbacks { { success: true, result: true } }
123
- assert @before_run
124
- assert @after_run
125
- end
126
-
127
- def test_should_only_run_before_if_block_success_is_false
128
- @after_run = false
129
- @machine.around_transition { |block| @before_run = true; block.call; @after_run = true }
130
- assert_equal true, @transition.run_callbacks { { success: false } }
131
- assert @before_run
132
- refute @after_run
133
- end
134
-
135
- def test_should_succeed_if_block_success_is_false
136
- @machine.around_transition { |block| @before_run = true; block.call; @after_run = true }
137
- assert_equal true, @transition.run_callbacks { { success: true } }
138
- assert @before_run
139
- assert @after_run
140
- end
141
- end
@@ -1,30 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class TransitionWithBeforeCallbacksSkippedTest < StateMachinesTest
4
- def setup
5
- @klass = Class.new
6
-
7
- @machine = StateMachines::Machine.new(@klass)
8
- @machine.state :parked, :idling
9
- @machine.event :ignite
10
-
11
- @object = @klass.new
12
- @object.state = 'parked'
13
- @transition = StateMachines::Transition.new(@object, @machine, :ignite, :parked, :idling)
14
- end
15
-
16
- def test_should_not_run_before_callbacks
17
- @run = false
18
- @machine.before_transition { @run = true }
19
-
20
- assert_equal false, @transition.run_callbacks(before: false)
21
- refute @run
22
- end
23
-
24
- def test_should_run_failure_callbacks
25
- @machine.after_failure { @run = true }
26
-
27
- assert_equal false, @transition.run_callbacks(before: false)
28
- assert @run
29
- end
30
- end
@@ -1,104 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class TransitionWithBeforeCallbacksTest < StateMachinesTest
4
- def setup
5
- @klass = Class.new
6
-
7
- @machine = StateMachines::Machine.new(@klass)
8
- @machine.state :parked, :idling
9
- @machine.event :ignite
10
-
11
- @object = @klass.new
12
- @object.state = 'parked'
13
- @transition = StateMachines::Transition.new(@object, @machine, :ignite, :parked, :idling)
14
- end
15
-
16
- def test_should_run_before_callbacks
17
- @machine.before_transition { @run = true }
18
- result = @transition.run_callbacks
19
-
20
- assert_equal true, result
21
- assert_equal true, @run
22
- end
23
-
24
- def test_should_only_run_those_that_match_transition_context
25
- @count = 0
26
- callback = lambda { @count += 1 }
27
-
28
- @machine.before_transition from: :parked, to: :idling, on: :park, do: callback
29
- @machine.before_transition from: :parked, to: :parked, on: :park, do: callback
30
- @machine.before_transition from: :parked, to: :idling, on: :ignite, do: callback
31
- @machine.before_transition from: :idling, to: :idling, on: :park, do: callback
32
- @transition.run_callbacks
33
-
34
- assert_equal 1, @count
35
- end
36
-
37
- def test_should_pass_transition_as_argument
38
- @machine.before_transition { |*args| @args = args }
39
- @transition.run_callbacks
40
-
41
- assert_equal [@object, @transition], @args
42
- end
43
-
44
- def test_should_catch_halts
45
- @machine.before_transition { throw :halt }
46
-
47
- result = @transition.run_callbacks
48
- assert_equal false, result
49
- end
50
-
51
- def test_should_not_catch_exceptions
52
- @machine.before_transition { fail ArgumentError }
53
- assert_raises(ArgumentError) { @transition.run_callbacks }
54
- end
55
-
56
- def test_should_not_be_able_to_run_twice
57
- @count = 0
58
- @machine.before_transition { @count += 1 }
59
- @transition.run_callbacks
60
- @transition.run_callbacks
61
- assert_equal 1, @count
62
- end
63
-
64
- def test_should_be_able_to_run_again_after_halt
65
- @count = 0
66
- @machine.before_transition { @count += 1; throw :halt }
67
- @transition.run_callbacks
68
- @transition.run_callbacks
69
- assert_equal 2, @count
70
- end
71
-
72
- def test_should_be_able_to_run_again_after_resetting
73
- @count = 0
74
- @machine.before_transition { @count += 1 }
75
- @transition.run_callbacks
76
- @transition.reset
77
- @transition.run_callbacks
78
- assert_equal 2, @count
79
- end
80
-
81
- def test_should_succeed_if_block_result_is_false
82
- @machine.before_transition { @run = true }
83
- assert_equal true, @transition.run_callbacks { { result: false } }
84
- assert @run
85
- end
86
-
87
- def test_should_succeed_if_block_result_is_true
88
- @machine.before_transition { @run = true }
89
- assert_equal true, @transition.run_callbacks { { result: true } }
90
- assert @run
91
- end
92
-
93
- def test_should_succeed_if_block_success_is_false
94
- @machine.before_transition { @run = true }
95
- assert_equal true, @transition.run_callbacks { { success: false } }
96
- assert @run
97
- end
98
-
99
- def test_should_succeed_if_block_success_is_true
100
- @machine.before_transition { @run = true }
101
- assert_equal true, @transition.run_callbacks { { success: true } }
102
- assert @run
103
- end
104
- end
@@ -1,28 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class TransitionWithCustomMachineAttributeTest < StateMachinesTest
4
- def setup
5
- @klass = Class.new
6
- @machine = StateMachines::Machine.new(@klass, :state, attribute: :state_id)
7
- @machine.state :off, value: 1
8
- @machine.state :active, value: 2
9
- @machine.event :activate
10
-
11
- @object = @klass.new
12
- @object.state_id = 1
13
-
14
- @transition = StateMachines::Transition.new(@object, @machine, :activate, :off, :active)
15
- end
16
-
17
- def test_should_persist
18
- @transition.persist
19
- assert_equal 2, @object.state_id
20
- end
21
-
22
- def test_should_rollback
23
- @object.state_id = 2
24
- @transition.rollback
25
-
26
- assert_equal 1, @object.state_id
27
- end
28
- end
@@ -1,18 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class TransitionWithDifferentStatesTest < StateMachinesTest
4
- def setup
5
- @klass = Class.new
6
- @machine = StateMachines::Machine.new(@klass)
7
- @machine.state :parked, :idling
8
- @machine.event :ignite
9
-
10
- @object = @klass.new
11
- @object.state = 'parked'
12
- @transition = StateMachines::Transition.new(@object, @machine, :ignite, :parked, :idling)
13
- end
14
-
15
- def test_should_not_be_loopback
16
- refute @transition.loopback?
17
- end
18
- end