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,19 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class TransitionWithDynamicToValueTest < StateMachinesTest
4
- def setup
5
- @klass = Class.new
6
- @machine = StateMachines::Machine.new(@klass)
7
- @machine.state :parked
8
- @machine.state :idling, value: lambda { 1 }
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_evaluate_to_value
17
- assert_equal 1, @transition.to
18
- end
19
- end
@@ -1,84 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class TransitionWithFailureCallbacksTest < 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_only_run_those_that_match_transition_context
17
- @count = 0
18
- callback = lambda { @count += 1 }
19
-
20
- @machine.after_failure do: callback
21
- @machine.after_failure on: :park, do: callback
22
- @machine.after_failure on: :ignite, do: callback
23
- @transition.run_callbacks { { success: false } }
24
-
25
- assert_equal 2, @count
26
- end
27
-
28
- def test_should_run_if_not_successful
29
- @machine.after_failure { |_object| @run = true }
30
- @transition.run_callbacks { { success: false } }
31
- assert @run
32
- end
33
-
34
- def test_should_not_run_if_successful
35
- @run = false
36
- @machine.after_failure { |_object| @run = true }
37
- @transition.run_callbacks { { success: true } }
38
- refute @run
39
- end
40
-
41
- def test_should_pass_transition_as_argument
42
- @machine.after_failure { |*args| @args = args }
43
-
44
- @transition.run_callbacks { { success: false } }
45
- assert_equal [@object, @transition], @args
46
- end
47
-
48
- def test_should_catch_halts
49
- @machine.after_failure { throw :halt }
50
-
51
- result = @transition.run_callbacks { { success: false } }
52
- assert_equal true, result
53
- end
54
-
55
- def test_should_not_catch_exceptions
56
- @machine.after_failure { fail ArgumentError }
57
- assert_raises(ArgumentError) { @transition.run_callbacks { { success: false } } }
58
- end
59
-
60
- def test_should_not_be_able_to_run_twice
61
- @count = 0
62
- @machine.after_failure { @count += 1 }
63
- @transition.run_callbacks { { success: false } }
64
- @transition.run_callbacks { { success: false } }
65
- assert_equal 1, @count
66
- end
67
-
68
- def test_should_not_be_able_to_run_twice_if_halted
69
- @count = 0
70
- @machine.after_failure { @count += 1; throw :halt }
71
- @transition.run_callbacks { { success: false } }
72
- @transition.run_callbacks { { success: false } }
73
- assert_equal 1, @count
74
- end
75
-
76
- def test_should_be_able_to_run_again_after_resetting
77
- @count = 0
78
- @machine.after_failure { @count += 1 }
79
- @transition.run_callbacks { { success: false } }
80
- @transition.reset
81
- @transition.run_callbacks { { success: false } }
82
- assert_equal 2, @count
83
- end
84
- end
@@ -1,29 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class TransitionWithInvalidNodesTest < 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
- end
13
-
14
- def test_should_raise_exception_without_event
15
- assert_raises(IndexError) { StateMachines::Transition.new(@object, @machine, nil, :parked, :idling) }
16
- end
17
-
18
- def test_should_raise_exception_with_invalid_event
19
- assert_raises(IndexError) { StateMachines::Transition.new(@object, @machine, :invalid, :parked, :idling) }
20
- end
21
-
22
- def test_should_raise_exception_with_invalid_from_state
23
- assert_raises(IndexError) { StateMachines::Transition.new(@object, @machine, :ignite, :invalid, :idling) }
24
- end
25
-
26
- def test_should_raise_exception_with_invalid_to_state
27
- assert_raises(IndexError) { StateMachines::Transition.new(@object, @machine, :ignite, :parked, :invalid) }
28
- end
29
- end
@@ -1,105 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class TransitionWithMixedCallbacksTest < 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_before_and_around_callbacks_in_order_defined
17
- @callbacks = []
18
- @machine.before_transition { @callbacks << :before_1 }
19
- @machine.around_transition { |block| @callbacks << :around; block.call }
20
- @machine.before_transition { @callbacks << :before_2 }
21
-
22
- assert_equal true, @transition.run_callbacks
23
- assert_equal [:before_1, :around, :before_2], @callbacks
24
- end
25
-
26
- def test_should_run_around_callbacks_before_after_callbacks
27
- @callbacks = []
28
- @machine.after_transition { @callbacks << :after_1 }
29
- @machine.around_transition { |block| block.call; @callbacks << :after_2 }
30
- @machine.after_transition { @callbacks << :after_3 }
31
-
32
- assert_equal true, @transition.run_callbacks
33
- assert_equal [:after_2, :after_1, :after_3], @callbacks
34
- end
35
-
36
- def test_should_have_access_to_result_for_both_after_and_around_callbacks
37
- @machine.after_transition { @after_result = @transition.result }
38
- @machine.around_transition { |block| block.call; @around_result = @transition.result }
39
-
40
- @transition.run_callbacks { { result: 1, success: true } }
41
- assert_equal 1, @after_result
42
- assert_equal 1, @around_result
43
- end
44
-
45
- def test_should_not_run_further_callbacks_if_before_callback_halts
46
- @callbacks = []
47
- @machine.before_transition { @callbacks << :before_1 }
48
- @machine.around_transition { |block| @callbacks << :before_around_1; block.call; @callbacks << :after_around_1 }
49
- @machine.before_transition { @callbacks << :before_2; throw :halt }
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 false, @transition.run_callbacks
54
- assert_equal [:before_1, :before_around_1, :before_2], @callbacks
55
- end
56
-
57
- def test_should_not_run_further_callbacks_if_before_yield_halts
58
- @callbacks = []
59
- @machine.before_transition { @callbacks << :before_1 }
60
- @machine.around_transition { |_block| @callbacks << :before_around_1; throw :halt }
61
- @machine.before_transition { @callbacks << :before_2; throw :halt }
62
- @machine.around_transition { |block| @callbacks << :before_around_2; block.call; @callbacks << :after_around_2 }
63
- @machine.after_transition { @callbacks << :after }
64
-
65
- assert_equal false, @transition.run_callbacks
66
- assert_equal [:before_1, :before_around_1], @callbacks
67
- end
68
-
69
- def test_should_not_run_further_callbacks_if_around_callback_fails_to_yield
70
- @callbacks = []
71
- @machine.before_transition { @callbacks << :before_1 }
72
- @machine.around_transition { |_block| @callbacks << :before_around_1 }
73
- @machine.before_transition { @callbacks << :before_2; throw :halt }
74
- @machine.around_transition { |block| @callbacks << :before_around_2; block.call; @callbacks << :after_around_2 }
75
- @machine.after_transition { @callbacks << :after }
76
-
77
- assert_equal false, @transition.run_callbacks
78
- assert_equal [:before_1, :before_around_1], @callbacks
79
- end
80
-
81
- def test_should_not_run_further_callbacks_if_after_yield_halts
82
- @callbacks = []
83
- @machine.before_transition { @callbacks << :before_1 }
84
- @machine.around_transition { |block| @callbacks << :before_around_1; block.call; @callbacks << :after_around_1; throw :halt }
85
- @machine.before_transition { @callbacks << :before_2 }
86
- @machine.around_transition { |block| @callbacks << :before_around_2; block.call; @callbacks << :after_around_2 }
87
- @machine.after_transition { @callbacks << :after }
88
-
89
- assert_equal true, @transition.run_callbacks
90
- assert_equal [:before_1, :before_around_1, :before_2, :before_around_2, :after_around_2, :after_around_1], @callbacks
91
- end
92
-
93
- def test_should_not_run_further_callbacks_if_after_callback_halts
94
- @callbacks = []
95
- @machine.before_transition { @callbacks << :before_1 }
96
- @machine.around_transition { |block| @callbacks << :before_around_1; block.call; @callbacks << :after_around_1 }
97
- @machine.before_transition { @callbacks << :before_2 }
98
- @machine.around_transition { |block| @callbacks << :before_around_2; block.call; @callbacks << :after_around_2 }
99
- @machine.after_transition { @callbacks << :after_1; throw :halt }
100
- @machine.after_transition { @callbacks << :after_2 }
101
-
102
- assert_equal true, @transition.run_callbacks
103
- assert_equal [:before_1, :before_around_1, :before_2, :before_around_2, :after_around_2, :after_around_1, :after_1], @callbacks
104
- end
105
- end
@@ -1,40 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class TransitionWithMultipleAfterCallbacksTest < 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_in_the_order_they_were_defined
17
- @callbacks = []
18
- @machine.after_transition { @callbacks << 1 }
19
- @machine.after_transition { @callbacks << 2 }
20
- @transition.run_callbacks
21
-
22
- assert_equal [1, 2], @callbacks
23
- end
24
-
25
- def test_should_not_run_further_callbacks_if_halted
26
- @callbacks = []
27
- @machine.after_transition { @callbacks << 1; throw :halt }
28
- @machine.after_transition { @callbacks << 2 }
29
-
30
- assert_equal true, @transition.run_callbacks
31
- assert_equal [1], @callbacks
32
- end
33
-
34
- def test_should_fail_if_any_callback_halted
35
- @machine.after_transition { true }
36
- @machine.after_transition { throw :halt }
37
-
38
- assert_equal true, @transition.run_callbacks
39
- end
40
- end
@@ -1,114 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class TransitionWithMultipleAroundCallbacksTest < 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_before_yield_in_the_order_they_were_defined
17
- @callbacks = []
18
- @machine.around_transition { |block| @callbacks << 1; block.call }
19
- @machine.around_transition { |block| @callbacks << 2; block.call }
20
- @transition.run_callbacks
21
-
22
- assert_equal [1, 2], @callbacks
23
- end
24
-
25
- def test_should_before_yield_multiple_methods_in_the_order_they_were_defined
26
- @callbacks = []
27
- @machine.around_transition(lambda { |block| @callbacks << 1; block.call }, lambda { |block| @callbacks << 2; block.call })
28
- @machine.around_transition(lambda { |block| @callbacks << 3; block.call }, lambda { |block| @callbacks << 4; block.call })
29
- @transition.run_callbacks
30
-
31
- assert_equal [1, 2, 3, 4], @callbacks
32
- end
33
-
34
- def test_should_after_yield_in_the_reverse_order_they_were_defined
35
- @callbacks = []
36
- @machine.around_transition { |block| block.call; @callbacks << 1 }
37
- @machine.around_transition { |block| block.call; @callbacks << 2 }
38
- @transition.run_callbacks
39
-
40
- assert_equal [2, 1], @callbacks
41
- end
42
-
43
- def test_should_after_yield_multiple_methods_in_the_reverse_order_they_were_defined
44
- @callbacks = []
45
- @machine.around_transition(lambda { |block| block.call; @callbacks << 1 }) { |block| block.call; @callbacks << 2 }
46
- @machine.around_transition(lambda { |block| block.call; @callbacks << 3 }) { |block| block.call; @callbacks << 4 }
47
- @transition.run_callbacks
48
-
49
- assert_equal [4, 3, 2, 1], @callbacks
50
- end
51
-
52
- def test_should_run_block_between_callback
53
- @callbacks = []
54
- @machine.around_transition { |block| @callbacks << :before_1; block.call; @callbacks << :after_1 }
55
- @machine.around_transition { |block| @callbacks << :before_2; block.call; @callbacks << :after_2 }
56
- @transition.run_callbacks { @callbacks << :within; { success: true } }
57
-
58
- assert_equal [:before_1, :before_2, :within, :after_2, :after_1], @callbacks
59
- end
60
-
61
- def test_should_have_access_to_result_after_yield
62
- @machine.around_transition { |block| @before_result_1 = @transition.result; block.call; @after_result_1 = @transition.result }
63
- @machine.around_transition { |block| @before_result_2 = @transition.result; block.call; @after_result_2 = @transition.result }
64
- @transition.run_callbacks { { result: 1, success: true } }
65
-
66
- assert_nil @before_result_1
67
- assert_nil @before_result_2
68
- assert_equal 1, @after_result_1
69
- assert_equal 1, @after_result_2
70
- end
71
-
72
- def test_should_fail_if_any_before_yield_halted
73
- @machine.around_transition { |block| block.call }
74
- @machine.around_transition { throw :halt }
75
-
76
- assert_equal false, @transition.run_callbacks
77
- end
78
-
79
- def test_should_not_continue_around_callbacks_if_before_yield_halted
80
- @callbacks = []
81
- @machine.around_transition { @callbacks << 1; throw :halt }
82
- @machine.around_transition { |block| @callbacks << 2; block.call; @callbacks << 3 }
83
-
84
- assert_equal false, @transition.run_callbacks
85
- assert_equal [1], @callbacks
86
- end
87
-
88
- def test_should_not_continue_around_callbacks_if_later_before_yield_halted
89
- @callbacks = []
90
- @machine.around_transition { |block| block.call; @callbacks << 1 }
91
- @machine.around_transition { throw :halt }
92
-
93
- @transition.run_callbacks
94
- assert_equal [], @callbacks
95
- end
96
-
97
- def test_should_not_run_further_callbacks_if_after_yield_halted
98
- @callbacks = []
99
- @machine.around_transition { |block| block.call; @callbacks << 1 }
100
- @machine.around_transition { |block| block.call; throw :halt }
101
-
102
- assert_equal true, @transition.run_callbacks
103
- assert_equal [], @callbacks
104
- end
105
-
106
- def test_should_fail_if_any_fail_to_yield
107
- @callbacks = []
108
- @machine.around_transition { @callbacks << 1 }
109
- @machine.around_transition { |block| @callbacks << 2; block.call; @callbacks << 3 }
110
-
111
- assert_equal false, @transition.run_callbacks
112
- assert_equal [1], @callbacks
113
- end
114
- end
@@ -1,40 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class TransitionWithMultipleBeforeCallbacksTest < 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_in_the_order_they_were_defined
17
- @callbacks = []
18
- @machine.before_transition { @callbacks << 1 }
19
- @machine.before_transition { @callbacks << 2 }
20
- @transition.run_callbacks
21
-
22
- assert_equal [1, 2], @callbacks
23
- end
24
-
25
- def test_should_not_run_further_callbacks_if_halted
26
- @callbacks = []
27
- @machine.before_transition { @callbacks << 1; throw :halt }
28
- @machine.before_transition { @callbacks << 2 }
29
-
30
- assert_equal false, @transition.run_callbacks
31
- assert_equal [1], @callbacks
32
- end
33
-
34
- def test_should_fail_if_any_callback_halted
35
- @machine.before_transition { true }
36
- @machine.before_transition { throw :halt }
37
-
38
- assert_equal false, @transition.run_callbacks
39
- end
40
- end
@@ -1,40 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class TransitionWithMultipleFailureCallbacksTest < 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_in_the_order_they_were_defined
17
- @callbacks = []
18
- @machine.after_failure { @callbacks << 1 }
19
- @machine.after_failure { @callbacks << 2 }
20
- @transition.run_callbacks { { success: false } }
21
-
22
- assert_equal [1, 2], @callbacks
23
- end
24
-
25
- def test_should_not_run_further_callbacks_if_halted
26
- @callbacks = []
27
- @machine.after_failure { @callbacks << 1; throw :halt }
28
- @machine.after_failure { @callbacks << 2 }
29
-
30
- assert_equal true, @transition.run_callbacks { { success: false } }
31
- assert_equal [1], @callbacks
32
- end
33
-
34
- def test_should_fail_if_any_callback_halted
35
- @machine.after_failure { true }
36
- @machine.after_failure { throw :halt }
37
-
38
- assert_equal true, @transition.run_callbacks { { success: false } }
39
- end
40
- end
@@ -1,47 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class TransitionWithNamespaceTest < StateMachinesTest
4
- def setup
5
- @klass = Class.new
6
- @machine = StateMachines::Machine.new(@klass, namespace: 'alarm')
7
- @machine.state :off, :active
8
- @machine.event :activate
9
-
10
- @object = @klass.new
11
- @object.state = 'off'
12
-
13
- @transition = StateMachines::Transition.new(@object, @machine, :activate, :off, :active)
14
- end
15
-
16
- def test_should_have_an_event
17
- assert_equal :activate, @transition.event
18
- end
19
-
20
- def test_should_have_a_qualified_event
21
- assert_equal :activate_alarm, @transition.qualified_event
22
- end
23
-
24
- def test_should_have_a_from_name
25
- assert_equal :off, @transition.from_name
26
- end
27
-
28
- def test_should_have_a_qualified_from_name
29
- assert_equal :alarm_off, @transition.qualified_from_name
30
- end
31
-
32
- def test_should_have_a_human_from_name
33
- assert_equal 'off', @transition.human_from_name
34
- end
35
-
36
- def test_should_have_a_to_name
37
- assert_equal :active, @transition.to_name
38
- end
39
-
40
- def test_should_have_a_qualified_to_name
41
- assert_equal :alarm_active, @transition.qualified_to_name
42
- end
43
-
44
- def test_should_have_a_human_to_name
45
- assert_equal 'active', @transition.human_to_name
46
- end
47
- end
@@ -1,35 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class TransitionWithPerformArgumentsTest < 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
- @machine.event :ignite
16
-
17
- @object = @klass.new
18
- @object.state = 'parked'
19
- @transition = StateMachines::Transition.new(@object, @machine, :ignite, :parked, :idling)
20
- end
21
-
22
- def test_should_have_arguments
23
- @transition.perform(1, 2)
24
-
25
- assert_equal [1, 2], @transition.args
26
- assert @object.saved
27
- end
28
-
29
- def test_should_not_include_run_action_in_arguments
30
- @transition.perform(1, 2, false)
31
-
32
- assert_equal [1, 2], @transition.args
33
- refute @object.saved
34
- end
35
- end
@@ -1,42 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class TransitionWithTransactionsTest < StateMachinesTest
4
- def setup
5
- @klass = Class.new do
6
- class << self
7
- attr_accessor :running_transaction
8
- end
9
-
10
- attr_accessor :result
11
-
12
- def save
13
- @result = self.class.running_transaction
14
- true
15
- end
16
- end
17
-
18
- @machine = StateMachines::Machine.new(@klass, action: :save)
19
- @machine.state :parked, :idling
20
- @machine.event :ignite
21
-
22
- @object = @klass.new
23
- @object.state = 'parked'
24
- @transition = StateMachines::Transition.new(@object, @machine, :ignite, :parked, :idling)
25
-
26
- class << @machine
27
- def within_transaction(object)
28
- owner_class.running_transaction = object
29
- yield
30
- owner_class.running_transaction = false
31
- end
32
- end
33
- end
34
-
35
- def test_should_run_blocks_within_transaction_for_object
36
- @transition.within_transaction do
37
- @result = @klass.running_transaction
38
- end
39
-
40
- assert_equal @object, @result
41
- end
42
- end
@@ -1,33 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class TransitionWithoutCallbacksTest < 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_succeed
17
- assert_equal true, @transition.run_callbacks
18
- end
19
-
20
- def test_should_succeed_if_after_callbacks_skipped
21
- assert_equal true, @transition.run_callbacks(after: false)
22
- end
23
-
24
- def test_should_call_block_if_provided
25
- @transition.run_callbacks { @ran_block = true; {} }
26
- assert @ran_block
27
- end
28
-
29
- def test_should_track_block_result
30
- @transition.run_callbacks { { result: 1 } }
31
- assert_equal 1, @transition.result
32
- end
33
- end
@@ -1,22 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class TransitionWithoutReadingStateTest < 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 = 'idling'
12
- @transition = StateMachines::Transition.new(@object, @machine, :ignite, :parked, :idling, false)
13
- end
14
-
15
- def test_should_not_read_from_value_from_object
16
- assert_equal 'parked', @transition.from
17
- end
18
-
19
- def test_should_have_to_value
20
- assert_equal 'idling', @transition.to
21
- end
22
- end