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,48 +0,0 @@
1
- require_relative '../../test_helper'
2
- require_relative 'transition_collection_with_action_hook_base_test.rb'
3
-
4
- class TransitionCollectionWithActionHookWithDifferentActionsTest < TransitionCollectionWithActionHookBaseTest
5
- def setup
6
- super
7
-
8
- @klass.class_eval do
9
- def save_status
10
- true
11
- end
12
- end
13
-
14
- @machine = StateMachines::Machine.new(@klass, :status, initial: :first_gear, action: :save_status)
15
- @machine.state :second_gear
16
- @machine.event :shift_up
17
-
18
- @result = StateMachines::TransitionCollection.new([@transition, StateMachines::Transition.new(@object, @machine, :shift_up, :first_gear, :second_gear)]).perform
19
- end
20
-
21
- def test_should_succeed
22
- assert_equal true, @result
23
- end
24
-
25
- def test_should_run_action
26
- assert @object.saved
27
- end
28
-
29
- def test_should_have_already_persisted_when_running_action
30
- assert_equal 'idling', @object.state_on_save
31
- end
32
-
33
- def test_should_not_have_event_during_action
34
- assert_nil @object.state_event_on_save
35
- end
36
-
37
- def test_should_not_write_event
38
- assert_nil @object.state_event
39
- end
40
-
41
- def test_should_not_have_event_transition_during_save
42
- assert_nil @object.state_event_transition_on_save
43
- end
44
-
45
- def test_should_not_write_event_attribute
46
- assert_nil @object.send(:state_event_transition)
47
- end
48
- end
@@ -1,42 +0,0 @@
1
- require_relative '../../test_helper'
2
- require_relative 'transition_collection_with_action_hook_base_test.rb'
3
-
4
- class TransitionCollectionWithActionHookWithNilActionTest < TransitionCollectionWithActionHookBaseTest
5
- def setup
6
- super
7
-
8
- @machine = StateMachines::Machine.new(@klass, :status, initial: :first_gear)
9
- @machine.state :second_gear
10
- @machine.event :shift_up
11
-
12
- @result = StateMachines::TransitionCollection.new([@transition, StateMachines::Transition.new(@object, @machine, :shift_up, :first_gear, :second_gear)]).perform
13
- end
14
-
15
- def test_should_succeed
16
- assert_equal true, @result
17
- end
18
-
19
- def test_should_run_action
20
- assert @object.saved
21
- end
22
-
23
- def test_should_have_already_persisted_when_running_action
24
- assert_equal 'idling', @object.state_on_save
25
- end
26
-
27
- def test_should_not_have_event_during_action
28
- assert_nil @object.state_event_on_save
29
- end
30
-
31
- def test_should_not_write_event
32
- assert_nil @object.state_event
33
- end
34
-
35
- def test_should_not_have_event_transition_during_save
36
- assert_nil @object.state_event_transition_on_save
37
- end
38
-
39
- def test_should_not_write_event_attribute
40
- assert_nil @object.send(:state_event_transition)
41
- end
42
- end
@@ -1,47 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class TransitionCollectionWithAfterCallbackHaltTest < 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
- @before_count = 0
13
- @after_count = 0
14
-
15
- @machine = StateMachines::Machine.new(@klass, initial: :parked, action: :save)
16
- @machine.state :idling
17
- @machine.event :ignite
18
-
19
- @machine.before_transition { @before_count += 1 }
20
- @machine.after_transition { @after_count += 1; throw :halt }
21
- @machine.after_transition { @after_count += 1 }
22
- @machine.around_transition { |block| @before_count += 1; block.call; @after_count += 1 }
23
-
24
- @object = @klass.new
25
-
26
- @transitions = StateMachines::TransitionCollection.new([
27
- StateMachines::Transition.new(@object, @machine, :ignite, :parked, :idling)
28
- ])
29
- @result = @transitions.perform
30
- end
31
-
32
- def test_should_succeed
33
- assert_equal true, @result
34
- end
35
-
36
- def test_should_persist_state
37
- assert_equal 'idling', @object.state
38
- end
39
-
40
- def test_should_run_before_callbacks
41
- assert_equal 2, @before_count
42
- end
43
-
44
- def test_should_not_run_further_after_callbacks
45
- assert_equal 2, @after_count
46
- end
47
- end
@@ -1,51 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class TransitionCollectionWithBeforeCallbackHaltTest < 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
- @before_count = 0
13
- @after_count = 0
14
-
15
- @machine = StateMachines::Machine.new(@klass, initial: :parked, action: :save)
16
- @machine.state :idling
17
- @machine.event :ignite
18
-
19
- @machine.before_transition { @before_count += 1; throw :halt }
20
- @machine.before_transition { @before_count += 1 }
21
- @machine.after_transition { @after_count += 1 }
22
- @machine.around_transition { |block| @before_count += 1; block.call; @after_count += 1 }
23
-
24
- @object = @klass.new
25
-
26
- @transitions = StateMachines::TransitionCollection.new([
27
- StateMachines::Transition.new(@object, @machine, :ignite, :parked, :idling)
28
- ])
29
- @result = @transitions.perform
30
- end
31
-
32
- def test_should_not_succeed
33
- assert_equal false, @result
34
- end
35
-
36
- def test_should_not_persist_state
37
- assert_equal 'parked', @object.state
38
- end
39
-
40
- def test_should_not_run_action
41
- refute @object.saved
42
- end
43
-
44
- def test_should_not_run_further_before_callbacks
45
- assert_equal 1, @before_count
46
- end
47
-
48
- def test_should_not_run_after_callbacks
49
- assert_equal 0, @after_count
50
- end
51
- end
@@ -1,46 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class TransitionCollectionWithBlockTest < StateMachinesTest
4
- def setup
5
- @klass = Class.new do
6
- attr_reader :actions
7
-
8
- def save
9
- (@actions ||= []) << :save
10
- end
11
- end
12
-
13
- @state = StateMachines::Machine.new(@klass, :state, initial: :parked, action: :save)
14
- @state.state :idling
15
- @state.event :ignite
16
-
17
- @status = StateMachines::Machine.new(@klass, :status, initial: :first_gear, action: :save)
18
- @status.state :second_gear
19
- @status.event :shift_up
20
-
21
- @object = @klass.new
22
- @transitions = StateMachines::TransitionCollection.new([
23
- @state_transition = StateMachines::Transition.new(@object, @state, :ignite, :parked, :idling),
24
- @status_transition = StateMachines::Transition.new(@object, @status, :shift_up, :first_gear, :second_gear)
25
- ])
26
- @result = @transitions.perform { 1 }
27
- end
28
-
29
- def test_should_succeed
30
- assert_equal 1, @result
31
- end
32
-
33
- def test_should_persist_states
34
- assert_equal 'idling', @object.state
35
- assert_equal 'second_gear', @object.status
36
- end
37
-
38
- def test_should_not_run_machine_actions
39
- assert_nil @object.actions
40
- end
41
-
42
- def test_should_use_result_as_transition_result
43
- assert_equal 1, @state_transition.result
44
- assert_equal 1, @status_transition.result
45
- end
46
- end
@@ -1,135 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class TransitionCollectionWithCallbacksTest < 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
- @before_callbacks = []
14
- @after_callbacks = []
15
-
16
- @state = StateMachines::Machine.new(@klass, initial: :parked, action: :save)
17
- @state.state :idling
18
- @state.event :ignite
19
- @state.before_transition { @before_callbacks << :state_before }
20
- @state.after_transition { @after_callbacks << :state_after }
21
- @state.around_transition { |block| @before_callbacks << :state_around; block.call; @after_callbacks << :state_around }
22
-
23
- @status = StateMachines::Machine.new(@klass, :status, initial: :first_gear, action: :save)
24
- @status.state :second_gear
25
- @status.event :shift_up
26
- @status.before_transition { @before_callbacks << :status_before }
27
- @status.after_transition { @after_callbacks << :status_after }
28
- @status.around_transition { |block| @before_callbacks << :status_around; block.call; @after_callbacks << :status_around }
29
-
30
- @object = @klass.new
31
- @transitions = StateMachines::TransitionCollection.new([
32
- StateMachines::Transition.new(@object, @state, :ignite, :parked, :idling),
33
- StateMachines::Transition.new(@object, @status, :shift_up, :first_gear, :second_gear)
34
- ])
35
- end
36
-
37
- def test_should_run_before_callbacks_in_order
38
- @transitions.perform
39
- assert_equal [:state_before, :state_around, :status_before, :status_around], @before_callbacks
40
- end
41
-
42
- def test_should_halt_if_before_callback_halted_for_first_transition
43
- @state.before_transition { throw :halt }
44
-
45
- assert_equal false, @transitions.perform
46
- assert_equal [:state_before, :state_around], @before_callbacks
47
- end
48
-
49
- def test_should_halt_if_before_callback_halted_for_second_transition
50
- @status.before_transition { throw :halt }
51
-
52
- assert_equal false, @transitions.perform
53
- assert_equal [:state_before, :state_around, :status_before, :status_around], @before_callbacks
54
- end
55
-
56
- def test_should_halt_if_around_callback_halted_before_yield_for_first_transition
57
- @state.around_transition { throw :halt }
58
-
59
- assert_equal false, @transitions.perform
60
- assert_equal [:state_before, :state_around], @before_callbacks
61
- end
62
-
63
- def test_should_halt_if_around_callback_halted_before_yield_for_second_transition
64
- @status.around_transition { throw :halt }
65
-
66
- assert_equal false, @transitions.perform
67
- assert_equal [:state_before, :state_around, :status_before, :status_around], @before_callbacks
68
- end
69
-
70
- def test_should_run_after_callbacks_in_reverse_order
71
- @transitions.perform
72
- assert_equal [:status_around, :status_after, :state_around, :state_after], @after_callbacks
73
- end
74
-
75
- def test_should_not_halt_if_after_callback_halted_for_first_transition
76
- @state.after_transition { throw :halt }
77
-
78
- assert_equal true, @transitions.perform
79
- assert_equal [:status_around, :status_after, :state_around, :state_after], @after_callbacks
80
- end
81
-
82
- def test_should_not_halt_if_around_callback_halted_for_second_transition
83
- @status.around_transition { |block| block.call; throw :halt }
84
-
85
- assert_equal true, @transitions.perform
86
- assert_equal [:state_around, :state_after], @after_callbacks
87
- end
88
-
89
- def test_should_run_before_callbacks_before_persisting_the_state
90
- @state.before_transition { |object| @before_state = object.state }
91
- @state.around_transition { |object, _transition, block| @around_state = object.state; block.call }
92
- @transitions.perform
93
-
94
- assert_equal 'parked', @before_state
95
- assert_equal 'parked', @around_state
96
- end
97
-
98
- def test_should_persist_state_before_running_action
99
- @klass.class_eval do
100
- attr_reader :saved_on_persist
101
-
102
- def state=(value)
103
- @state = value
104
- @saved_on_persist = saved
105
- end
106
- end
107
-
108
- @transitions.perform
109
- refute @object.saved_on_persist
110
- end
111
-
112
- def test_should_persist_state_before_running_action_block
113
- @klass.class_eval do
114
- attr_writer :saved
115
- attr_reader :saved_on_persist
116
-
117
- def state=(value)
118
- @state = value
119
- @saved_on_persist = saved
120
- end
121
- end
122
-
123
- @transitions.perform { @object.saved = true }
124
- refute @object.saved_on_persist
125
- end
126
-
127
- def test_should_run_after_callbacks_after_running_the_action
128
- @state.after_transition { |object| @after_saved = object.saved }
129
- @state.around_transition { |object, _transition, block| block.call; @around_saved = object.saved }
130
- @transitions.perform
131
-
132
- assert @after_saved
133
- assert @around_saved
134
- end
135
- end
@@ -1,189 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class TransitionCollectionWithDifferentActionsTest < StateMachinesTest
4
- def setup
5
- @klass = Class.new do
6
- attr_reader :actions
7
-
8
- def save_state
9
- (@actions ||= []) << :save_state
10
- :save_state
11
- end
12
-
13
- def save_status
14
- (@actions ||= []) << :save_status
15
- :save_status
16
- end
17
- end
18
-
19
- @state = StateMachines::Machine.new(@klass, initial: :parked, action: :save_state)
20
- @state.state :idling
21
- @state.event :ignite
22
-
23
- @status = StateMachines::Machine.new(@klass, :status, initial: :first_gear, action: :save_status)
24
- @status.state :second_gear
25
- @status.event :shift_up
26
-
27
- @object = @klass.new
28
-
29
- @transitions = StateMachines::TransitionCollection.new([
30
- @state_transition = StateMachines::Transition.new(@object, @state, :ignite, :parked, :idling),
31
- @status_transition = StateMachines::Transition.new(@object, @status, :shift_up, :first_gear, :second_gear)
32
- ])
33
- end
34
-
35
- def test_should_succeed
36
- assert_equal true, @transitions.perform
37
- end
38
-
39
- def test_should_persist_states
40
- @transitions.perform
41
- assert_equal 'idling', @object.state
42
- assert_equal 'second_gear', @object.status
43
- end
44
-
45
- def test_should_run_actions_in_order
46
- @transitions.perform
47
- assert_equal [:save_state, :save_status], @object.actions
48
- end
49
-
50
- def test_should_store_results_in_transitions
51
- @transitions.perform
52
- assert_equal :save_state, @state_transition.result
53
- assert_equal :save_status, @status_transition.result
54
- end
55
-
56
- def test_should_not_halt_if_action_fails_for_first_transition
57
- @klass.class_eval do
58
- remove_method :save_state
59
-
60
- def save_state
61
- (@actions ||= []) << :save_state
62
- false
63
- end
64
- end
65
-
66
- assert_equal false, @transitions.perform
67
- assert_equal [:save_state, :save_status], @object.actions
68
- end
69
-
70
- def test_should_halt_if_action_fails_for_second_transition
71
- @klass.class_eval do
72
- remove_method :save_status
73
-
74
- def save_status
75
- (@actions ||= []) << :save_status
76
- false
77
- end
78
- end
79
-
80
- assert_equal false, @transitions.perform
81
- assert_equal [:save_state, :save_status], @object.actions
82
- end
83
-
84
- def test_should_rollback_if_action_errors_for_first_transition
85
- @klass.class_eval do
86
- remove_method :save_state
87
-
88
- def save_state
89
- fail ArgumentError
90
- end
91
- end
92
-
93
- begin
94
- ; @transitions.perform
95
- rescue
96
- end
97
- assert_equal 'parked', @object.state
98
- assert_equal 'first_gear', @object.status
99
- end
100
-
101
- def test_should_rollback_if_action_errors_for_second_transition
102
- @klass.class_eval do
103
- remove_method :save_status
104
-
105
- def save_status
106
- fail ArgumentError
107
- end
108
- end
109
-
110
- begin
111
- ; @transitions.perform
112
- rescue
113
- end
114
- assert_equal 'parked', @object.state
115
- assert_equal 'first_gear', @object.status
116
- end
117
-
118
- def test_should_not_run_after_callbacks_if_action_fails_for_first_transition
119
- @klass.class_eval do
120
- remove_method :save_state
121
-
122
- def save_state
123
- false
124
- end
125
- end
126
-
127
- @callbacks = []
128
- @state.after_transition { @callbacks << :state_after }
129
- @state.around_transition { |block| block.call; @callbacks << :state_around }
130
- @status.after_transition { @callbacks << :status_after }
131
- @status.around_transition { |block| block.call; @callbacks << :status_around }
132
-
133
- @transitions.perform
134
- assert_equal [], @callbacks
135
- end
136
-
137
- def test_should_not_run_after_callbacks_if_action_fails_for_second_transition
138
- @klass.class_eval do
139
- remove_method :save_status
140
-
141
- def save_status
142
- false
143
- end
144
- end
145
-
146
- @callbacks = []
147
- @state.after_transition { @callbacks << :state_after }
148
- @state.around_transition { |block| block.call; @callbacks << :state_around }
149
- @status.after_transition { @callbacks << :status_after }
150
- @status.around_transition { |block| block.call; @callbacks << :status_around }
151
-
152
- @transitions.perform
153
- assert_equal [], @callbacks
154
- end
155
-
156
- def test_should_run_after_failure_callbacks_if_action_fails_for_first_transition
157
- @klass.class_eval do
158
- remove_method :save_state
159
-
160
- def save_state
161
- false
162
- end
163
- end
164
-
165
- @callbacks = []
166
- @state.after_failure { @callbacks << :state_after }
167
- @status.after_failure { @callbacks << :status_after }
168
-
169
- @transitions.perform
170
- assert_equal [:status_after, :state_after], @callbacks
171
- end
172
-
173
- def test_should_run_after_failure_callbacks_if_action_fails_for_second_transition
174
- @klass.class_eval do
175
- remove_method :save_status
176
-
177
- def save_status
178
- false
179
- end
180
- end
181
-
182
- @callbacks = []
183
- @state.after_failure { @callbacks << :state_after }
184
- @status.after_failure { @callbacks << :status_after }
185
-
186
- @transitions.perform
187
- assert_equal [:status_after, :state_after], @callbacks
188
- end
189
- end
@@ -1,48 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class TransitionCollectionWithDuplicateActionsTest < StateMachinesTest
4
- def setup
5
- @klass = Class.new do
6
- attr_reader :actions
7
-
8
- def save
9
- (@actions ||= []) << :save
10
- :save
11
- end
12
- end
13
-
14
- @state = StateMachines::Machine.new(@klass, initial: :parked, action: :save)
15
- @state.state :idling
16
- @state.event :ignite
17
-
18
- @status = StateMachines::Machine.new(@klass, :status, initial: :first_gear, action: :save)
19
- @status.state :second_gear
20
- @status.event :shift_up
21
-
22
- @object = @klass.new
23
-
24
- @transitions = StateMachines::TransitionCollection.new([
25
- @state_transition = StateMachines::Transition.new(@object, @state, :ignite, :parked, :idling),
26
- @status_transition = StateMachines::Transition.new(@object, @status, :shift_up, :first_gear, :second_gear)
27
- ])
28
- @result = @transitions.perform
29
- end
30
-
31
- def test_should_succeed
32
- assert_equal :save, @result
33
- end
34
-
35
- def test_should_persist_states
36
- assert_equal 'idling', @object.state
37
- assert_equal 'second_gear', @object.status
38
- end
39
-
40
- def test_should_run_action_once
41
- assert_equal [:save], @object.actions
42
- end
43
-
44
- def test_should_store_results_in_transitions
45
- assert_equal :save, @state_transition.result
46
- assert_equal :save, @status_transition.result
47
- end
48
- end
@@ -1,41 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class TransitionCollectionWithEmptyActionsTest < StateMachinesTest
4
- def setup
5
- @klass = Class.new
6
-
7
- @state = StateMachines::Machine.new(@klass, initial: :parked)
8
- @state.state :idling
9
- @state.event :ignite
10
-
11
- @status = StateMachines::Machine.new(@klass, :status, initial: :first_gear)
12
- @status.state :second_gear
13
- @status.event :shift_up
14
-
15
- @object = @klass.new
16
-
17
- @transitions = StateMachines::TransitionCollection.new([
18
- @state_transition = StateMachines::Transition.new(@object, @state, :ignite, :parked, :idling),
19
- @status_transition = StateMachines::Transition.new(@object, @status, :shift_up, :first_gear, :second_gear)
20
- ])
21
-
22
- @object.state = 'idling'
23
- @object.status = 'second_gear'
24
-
25
- @result = @transitions.perform
26
- end
27
-
28
- def test_should_succeed
29
- assert_equal true, @result
30
- end
31
-
32
- def test_should_persist_states
33
- assert_equal 'idling', @object.state
34
- assert_equal 'second_gear', @object.status
35
- end
36
-
37
- def test_should_store_results_in_transitions
38
- assert_nil @state_transition.result
39
- assert_nil @status_transition.result
40
- end
41
- end
@@ -1,41 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class TransitionCollectionWithMixedActionsTest < StateMachinesTest
4
- def setup
5
- @klass = Class.new do
6
- def save
7
- true
8
- end
9
- end
10
-
11
- @state = StateMachines::Machine.new(@klass, initial: :parked, action: :save)
12
- @state.state :idling
13
- @state.event :ignite
14
-
15
- @status = StateMachines::Machine.new(@klass, :status, initial: :first_gear)
16
- @status.state :second_gear
17
- @status.event :shift_up
18
-
19
- @object = @klass.new
20
-
21
- @transitions = StateMachines::TransitionCollection.new([
22
- @state_transition = StateMachines::Transition.new(@object, @state, :ignite, :parked, :idling),
23
- @status_transition = StateMachines::Transition.new(@object, @status, :shift_up, :first_gear, :second_gear)
24
- ])
25
- @result = @transitions.perform
26
- end
27
-
28
- def test_should_succeed
29
- assert_equal true, @result
30
- end
31
-
32
- def test_should_persist_states
33
- assert_equal 'idling', @object.state
34
- assert_equal 'second_gear', @object.status
35
- end
36
-
37
- def test_should_store_results_in_transitions
38
- assert_equal true, @state_transition.result
39
- assert_nil @status_transition.result
40
- end
41
- end