state_machines 0.4.0 → 0.6.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 (454) hide show
  1. checksums.yaml +5 -5
  2. data/LICENSE.txt +1 -1
  3. data/README.md +18 -13
  4. data/lib/state_machines/branch.rb +81 -79
  5. data/lib/state_machines/callback.rb +22 -21
  6. data/lib/state_machines/eval_helpers.rb +15 -15
  7. data/lib/state_machines/event.rb +31 -28
  8. data/lib/state_machines/event_collection.rb +26 -25
  9. data/lib/state_machines/extensions.rb +2 -2
  10. data/lib/state_machines/helper_module.rb +1 -1
  11. data/lib/state_machines/integrations/base.rb +2 -5
  12. data/lib/state_machines/integrations.rb +9 -13
  13. data/lib/state_machines/machine.rb +386 -379
  14. data/lib/state_machines/machine_collection.rb +11 -10
  15. data/lib/state_machines/macro_methods.rb +100 -100
  16. data/lib/state_machines/matcher.rb +23 -23
  17. data/lib/state_machines/matcher_helpers.rb +11 -11
  18. data/lib/state_machines/node_collection.rb +15 -13
  19. data/lib/state_machines/path.rb +56 -55
  20. data/lib/state_machines/path_collection.rb +38 -38
  21. data/lib/state_machines/state.rb +28 -22
  22. data/lib/state_machines/state_collection.rb +21 -20
  23. data/lib/state_machines/state_context.rb +33 -35
  24. data/lib/state_machines/transition.rb +180 -178
  25. data/lib/state_machines/transition_collection.rb +170 -168
  26. data/lib/state_machines/version.rb +1 -1
  27. metadata +5 -852
  28. data/.gitignore +0 -21
  29. data/.rspec +0 -3
  30. data/.travis.yml +0 -14
  31. data/Changelog.md +0 -16
  32. data/Contributors.md +0 -39
  33. data/Gemfile +0 -8
  34. data/Rakefile +0 -12
  35. data/Testing.md +0 -0
  36. data/state_machines.gemspec +0 -23
  37. data/test/files/integrations/event_on_failure_integration.rb +0 -10
  38. data/test/files/integrations/vehicle.rb +0 -7
  39. data/test/files/models/auto_shop.rb +0 -31
  40. data/test/files/models/car.rb +0 -21
  41. data/test/files/models/model_base.rb +0 -6
  42. data/test/files/models/motorcycle.rb +0 -11
  43. data/test/files/models/traffic_light.rb +0 -47
  44. data/test/files/models/vehicle.rb +0 -127
  45. data/test/files/node.rb +0 -5
  46. data/test/files/switch.rb +0 -15
  47. data/test/functional/auto_shop_available_test.rb +0 -20
  48. data/test/functional/auto_shop_busy_test.rb +0 -25
  49. data/test/functional/car_backing_up_test.rb +0 -45
  50. data/test/functional/car_test.rb +0 -49
  51. data/test/functional/motorcycle_test.rb +0 -46
  52. data/test/functional/traffic_light_caution_test.rb +0 -17
  53. data/test/functional/traffic_light_proceed_test.rb +0 -17
  54. data/test/functional/traffic_light_stop_test.rb +0 -26
  55. data/test/functional/vehicle_first_gear_test.rb +0 -42
  56. data/test/functional/vehicle_idling_test.rb +0 -59
  57. data/test/functional/vehicle_locked_test.rb +0 -29
  58. data/test/functional/vehicle_parked_test.rb +0 -53
  59. data/test/functional/vehicle_repaired_test.rb +0 -20
  60. data/test/functional/vehicle_second_gear_test.rb +0 -42
  61. data/test/functional/vehicle_stalled_test.rb +0 -65
  62. data/test/functional/vehicle_test.rb +0 -20
  63. data/test/functional/vehicle_third_gear_test.rb +0 -42
  64. data/test/functional/vehicle_unsaved_test.rb +0 -181
  65. data/test/functional/vehicle_with_event_attributes_test.rb +0 -30
  66. data/test/functional/vehicle_with_parallel_events_test.rb +0 -36
  67. data/test/test_helper.rb +0 -15
  68. data/test/unit/assertions/assert_exclusive_keys_test.rb +0 -22
  69. data/test/unit/assertions/assert_valid_key_test.rb +0 -12
  70. data/test/unit/branch/branch_test.rb +0 -28
  71. data/test/unit/branch/branch_with_conflicting_conditionals_test.rb +0 -27
  72. data/test/unit/branch/branch_with_conflicting_from_requirements_test.rb +0 -8
  73. data/test/unit/branch/branch_with_conflicting_on_requirements_test.rb +0 -8
  74. data/test/unit/branch/branch_with_conflicting_to_requirements_test.rb +0 -8
  75. data/test/unit/branch/branch_with_different_requirements_test.rb +0 -41
  76. data/test/unit/branch/branch_with_except_from_matcher_requirement_test.rb +0 -8
  77. data/test/unit/branch/branch_with_except_from_requirement_test.rb +0 -36
  78. data/test/unit/branch/branch_with_except_on_matcher_requirement_test.rb +0 -8
  79. data/test/unit/branch/branch_with_except_on_requirement_test.rb +0 -36
  80. data/test/unit/branch/branch_with_except_to_matcher_requirement_test.rb +0 -8
  81. data/test/unit/branch/branch_with_except_to_requirement_test.rb +0 -36
  82. data/test/unit/branch/branch_with_from_matcher_requirement_test.rb +0 -20
  83. data/test/unit/branch/branch_with_from_requirement_test.rb +0 -45
  84. data/test/unit/branch/branch_with_if_conditional_test.rb +0 -27
  85. data/test/unit/branch/branch_with_implicit_and_explicit_requirements_test.rb +0 -23
  86. data/test/unit/branch/branch_with_implicit_from_requirement_matcher_test.rb +0 -20
  87. data/test/unit/branch/branch_with_implicit_requirement_test.rb +0 -20
  88. data/test/unit/branch/branch_with_implicit_to_requirement_matcher_test.rb +0 -16
  89. data/test/unit/branch/branch_with_multiple_except_from_requirements_test.rb +0 -20
  90. data/test/unit/branch/branch_with_multiple_except_on_requirements_test.rb +0 -16
  91. data/test/unit/branch/branch_with_multiple_except_to_requirements_test.rb +0 -20
  92. data/test/unit/branch/branch_with_multiple_from_requirements_test.rb +0 -16
  93. data/test/unit/branch/branch_with_multiple_if_conditionals_test.rb +0 -20
  94. data/test/unit/branch/branch_with_multiple_implicit_requirements_test.rb +0 -53
  95. data/test/unit/branch/branch_with_multiple_on_requirements_test.rb +0 -20
  96. data/test/unit/branch/branch_with_multiple_to_requirements_test.rb +0 -20
  97. data/test/unit/branch/branch_with_multiple_unless_conditionals_test.rb +0 -20
  98. data/test/unit/branch/branch_with_nil_requirements_test.rb +0 -28
  99. data/test/unit/branch/branch_with_no_requirements_test.rb +0 -36
  100. data/test/unit/branch/branch_with_on_matcher_requirement_test.rb +0 -16
  101. data/test/unit/branch/branch_with_on_requirement_test.rb +0 -45
  102. data/test/unit/branch/branch_with_to_matcher_requirement_test.rb +0 -20
  103. data/test/unit/branch/branch_with_to_requirement_test.rb +0 -45
  104. data/test/unit/branch/branch_with_unless_conditional_test.rb +0 -27
  105. data/test/unit/branch/branch_without_guards_test.rb +0 -27
  106. data/test/unit/callback/callback_by_default_test.rb +0 -25
  107. data/test/unit/callback/callback_test.rb +0 -53
  108. data/test/unit/callback/callback_with_application_bound_object_test.rb +0 -23
  109. data/test/unit/callback/callback_with_application_terminator_test.rb +0 -24
  110. data/test/unit/callback/callback_with_arguments_test.rb +0 -14
  111. data/test/unit/callback/callback_with_around_type_and_arguments_test.rb +0 -25
  112. data/test/unit/callback/callback_with_around_type_and_block_test.rb +0 -44
  113. data/test/unit/callback/callback_with_around_type_and_bound_method_test.rb +0 -23
  114. data/test/unit/callback/callback_with_around_type_and_multiple_methods_test.rb +0 -93
  115. data/test/unit/callback/callback_with_around_type_and_terminator_test.rb +0 -17
  116. data/test/unit/callback/callback_with_block_test.rb +0 -20
  117. data/test/unit/callback/callback_with_bound_method_and_arguments_test.rb +0 -28
  118. data/test/unit/callback/callback_with_bound_method_test.rb +0 -35
  119. data/test/unit/callback/callback_with_do_method_test.rb +0 -18
  120. data/test/unit/callback/callback_with_explicit_requirements_test.rb +0 -32
  121. data/test/unit/callback/callback_with_if_condition_test.rb +0 -17
  122. data/test/unit/callback/callback_with_implicit_requirements_test.rb +0 -32
  123. data/test/unit/callback/callback_with_method_argument_test.rb +0 -18
  124. data/test/unit/callback/callback_with_mixed_methods_test.rb +0 -31
  125. data/test/unit/callback/callback_with_multiple_bound_methods_test.rb +0 -21
  126. data/test/unit/callback/callback_with_multiple_do_methods_test.rb +0 -29
  127. data/test/unit/callback/callback_with_multiple_method_arguments_test.rb +0 -29
  128. data/test/unit/callback/callback_with_terminator_test.rb +0 -22
  129. data/test/unit/callback/callback_with_unbound_method_test.rb +0 -14
  130. data/test/unit/callback/callback_with_unless_condition_test.rb +0 -17
  131. data/test/unit/callback/callback_without_arguments_test.rb +0 -14
  132. data/test/unit/callback/callback_without_terminator_test.rb +0 -12
  133. data/test/unit/error/error_by_default_test.rb +0 -21
  134. data/test/unit/error/error_with_message_test.rb +0 -23
  135. data/test/unit/eval_helper/eval_helpers_base_test.rb +0 -8
  136. data/test/unit/eval_helper/eval_helpers_proc_block_and_explicit_arguments_test.rb +0 -14
  137. data/test/unit/eval_helper/eval_helpers_proc_block_and_implicit_arguments_test.rb +0 -14
  138. data/test/unit/eval_helper/eval_helpers_proc_test.rb +0 -13
  139. data/test/unit/eval_helper/eval_helpers_proc_with_arguments_test.rb +0 -13
  140. data/test/unit/eval_helper/eval_helpers_proc_with_block_test.rb +0 -13
  141. data/test/unit/eval_helper/eval_helpers_proc_with_block_without_arguments_test.rb +0 -18
  142. data/test/unit/eval_helper/eval_helpers_proc_with_block_without_object_test.rb +0 -14
  143. data/test/unit/eval_helper/eval_helpers_proc_without_arguments_test.rb +0 -19
  144. data/test/unit/eval_helper/eval_helpers_string_test.rb +0 -25
  145. data/test/unit/eval_helper/eval_helpers_string_with_block_test.rb +0 -12
  146. data/test/unit/eval_helper/eval_helpers_symbol_method_missing_test.rb +0 -20
  147. data/test/unit/eval_helper/eval_helpers_symbol_private_test.rb +0 -17
  148. data/test/unit/eval_helper/eval_helpers_symbol_protected_test.rb +0 -17
  149. data/test/unit/eval_helper/eval_helpers_symbol_tainted_method_test.rb +0 -18
  150. data/test/unit/eval_helper/eval_helpers_symbol_test.rb +0 -16
  151. data/test/unit/eval_helper/eval_helpers_symbol_with_arguments_and_block_test.rb +0 -16
  152. data/test/unit/eval_helper/eval_helpers_symbol_with_arguments_test.rb +0 -16
  153. data/test/unit/eval_helper/eval_helpers_symbol_with_block_test.rb +0 -16
  154. data/test/unit/eval_helper/eval_helpers_test.rb +0 -13
  155. data/test/unit/event/event_after_being_copied_test.rb +0 -17
  156. data/test/unit/event/event_by_default_test.rb +0 -60
  157. data/test/unit/event/event_context_test.rb +0 -16
  158. data/test/unit/event/event_on_failure_test.rb +0 -44
  159. data/test/unit/event/event_test.rb +0 -34
  160. data/test/unit/event/event_transitions_test.rb +0 -62
  161. data/test/unit/event/event_with_conflicting_helpers_after_definition_test.rb +0 -79
  162. data/test/unit/event/event_with_conflicting_helpers_before_definition_test.rb +0 -58
  163. data/test/unit/event/event_with_conflicting_machine_test.rb +0 -48
  164. data/test/unit/event/event_with_dynamic_human_name_test.rb +0 -26
  165. data/test/unit/event/event_with_human_name_test.rb +0 -13
  166. data/test/unit/event/event_with_invalid_current_state_test.rb +0 -30
  167. data/test/unit/event/event_with_machine_action_test.rb +0 -33
  168. data/test/unit/event/event_with_marshalling_test.rb +0 -47
  169. data/test/unit/event/event_with_matching_disabled_transitions_test.rb +0 -115
  170. data/test/unit/event/event_with_matching_enabled_transitions_test.rb +0 -75
  171. data/test/unit/event/event_with_multiple_transitions_test.rb +0 -61
  172. data/test/unit/event/event_with_namespace_test.rb +0 -34
  173. data/test/unit/event/event_with_transition_with_blacklisted_to_state_test.rb +0 -60
  174. data/test/unit/event/event_with_transition_with_loopback_state_test.rb +0 -36
  175. data/test/unit/event/event_with_transition_with_nil_to_state_test.rb +0 -36
  176. data/test/unit/event/event_with_transition_with_whitelisted_to_state_test.rb +0 -51
  177. data/test/unit/event/event_with_transition_without_to_state_test.rb +0 -36
  178. data/test/unit/event/event_with_transitions_test.rb +0 -32
  179. data/test/unit/event/event_without_matching_transitions_test.rb +0 -41
  180. data/test/unit/event/event_without_transitions_test.rb +0 -28
  181. data/test/unit/event/invalid_event_test.rb +0 -20
  182. data/test/unit/event_collection/event_collection_attribute_with_machine_action_test.rb +0 -62
  183. data/test/unit/event_collection/event_collection_attribute_with_namespaced_machine_test.rb +0 -36
  184. data/test/unit/event_collection/event_collection_by_default_test.rb +0 -26
  185. data/test/unit/event_collection/event_collection_test.rb +0 -39
  186. data/test/unit/event_collection/event_collection_with_custom_machine_attribute_test.rb +0 -31
  187. data/test/unit/event_collection/event_collection_with_events_with_transitions_test.rb +0 -76
  188. data/test/unit/event_collection/event_collection_with_multiple_events_test.rb +0 -27
  189. data/test/unit/event_collection/event_collection_with_validations_test.rb +0 -74
  190. data/test/unit/event_collection/event_collection_without_machine_action_test.rb +0 -18
  191. data/test/unit/event_collection/event_string_collection_test.rb +0 -31
  192. data/test/unit/helper_module_test.rb +0 -17
  193. data/test/unit/integrations/integration_finder_test.rb +0 -16
  194. data/test/unit/integrations/integration_matcher_test.rb +0 -27
  195. data/test/unit/invalid_transition/invalid_parallel_transition_test.rb +0 -18
  196. data/test/unit/invalid_transition/invalid_transition_test.rb +0 -47
  197. data/test/unit/invalid_transition/invalid_transition_with_integration_test.rb +0 -45
  198. data/test/unit/invalid_transition/invalid_transition_with_namespace_test.rb +0 -32
  199. data/test/unit/machine/machine_after_being_copied_test.rb +0 -62
  200. data/test/unit/machine/machine_after_changing_initial_state.rb +0 -28
  201. data/test/unit/machine/machine_after_changing_owner_class_test.rb +0 -31
  202. data/test/unit/machine/machine_by_default_test.rb +0 -160
  203. data/test/unit/machine/machine_finder_custom_options_test.rb +0 -17
  204. data/test/unit/machine/machine_finder_with_existing_machine_on_superclass_test.rb +0 -85
  205. data/test/unit/machine/machine_finder_with_existing_on_same_class_test.rb +0 -23
  206. data/test/unit/machine/machine_finder_without_existing_machine_test.rb +0 -25
  207. data/test/unit/machine/machine_persistence_test.rb +0 -52
  208. data/test/unit/machine/machine_state_initialization_test.rb +0 -56
  209. data/test/unit/machine/machine_test.rb +0 -30
  210. data/test/unit/machine/machine_with_action_already_overridden_test.rb +0 -23
  211. data/test/unit/machine/machine_with_action_defined_in_class_test.rb +0 -37
  212. data/test/unit/machine/machine_with_action_defined_in_included_module_test.rb +0 -46
  213. data/test/unit/machine/machine_with_action_defined_in_superclass_test.rb +0 -43
  214. data/test/unit/machine/machine_with_action_undefined_test.rb +0 -33
  215. data/test/unit/machine/machine_with_cached_state_test.rb +0 -20
  216. data/test/unit/machine/machine_with_class_helpers_test.rb +0 -179
  217. data/test/unit/machine/machine_with_conflicting_helpers_after_definition_test.rb +0 -244
  218. data/test/unit/machine/machine_with_conflicting_helpers_before_definition_test.rb +0 -175
  219. data/test/unit/machine/machine_with_custom_action_test.rb +0 -11
  220. data/test/unit/machine/machine_with_custom_attribute_test.rb +0 -103
  221. data/test/unit/machine/machine_with_custom_initialize_test.rb +0 -24
  222. data/test/unit/machine/machine_with_custom_integration_test.rb +0 -72
  223. data/test/unit/machine/machine_with_custom_invalidation_test.rb +0 -39
  224. data/test/unit/machine/machine_with_custom_name_test.rb +0 -57
  225. data/test/unit/machine/machine_with_custom_plural_test.rb +0 -52
  226. data/test/unit/machine/machine_with_dynamic_initial_state_test.rb +0 -65
  227. data/test/unit/machine/machine_with_event_matchers_test.rb +0 -41
  228. data/test/unit/machine/machine_with_events_test.rb +0 -52
  229. data/test/unit/machine/machine_with_events_with_custom_human_names_test.rb +0 -18
  230. data/test/unit/machine/machine_with_events_with_transitions_test.rb +0 -37
  231. data/test/unit/machine/machine_with_existing_event_test.rb +0 -17
  232. data/test/unit/machine/machine_with_existing_machines_on_owner_class_test.rb +0 -20
  233. data/test/unit/machine/machine_with_existing_machines_with_same_attributes_on_owner_class_test.rb +0 -71
  234. data/test/unit/machine/machine_with_existing_machines_with_same_attributes_on_owner_subclass_test.rb +0 -31
  235. data/test/unit/machine/machine_with_existing_state_test.rb +0 -27
  236. data/test/unit/machine/machine_with_failure_callbacks_test.rb +0 -48
  237. data/test/unit/machine/machine_with_helpers_test.rb +0 -14
  238. data/test/unit/machine/machine_with_initial_state_with_value_and_owner_default.rb +0 -25
  239. data/test/unit/machine/machine_with_initialize_and_super_test.rb +0 -17
  240. data/test/unit/machine/machine_with_initialize_arguments_and_block_test.rb +0 -31
  241. data/test/unit/machine/machine_with_initialize_without_super_test.rb +0 -17
  242. data/test/unit/machine/machine_with_instance_helpers_test.rb +0 -179
  243. data/test/unit/machine/machine_with_integration_test.rb +0 -72
  244. data/test/unit/machine/machine_with_multiple_events_test.rb +0 -32
  245. data/test/unit/machine/machine_with_namespace_test.rb +0 -48
  246. data/test/unit/machine/machine_with_nil_action_test.rb +0 -27
  247. data/test/unit/machine/machine_with_other_states.rb +0 -22
  248. data/test/unit/machine/machine_with_owner_subclass_test.rb +0 -18
  249. data/test/unit/machine/machine_with_paths_test.rb +0 -25
  250. data/test/unit/machine/machine_with_private_action_test.rb +0 -43
  251. data/test/unit/machine/machine_with_state_matchers_test.rb +0 -41
  252. data/test/unit/machine/machine_with_state_with_matchers_test.rb +0 -19
  253. data/test/unit/machine/machine_with_states_test.rb +0 -55
  254. data/test/unit/machine/machine_with_states_with_behaviors_test.rb +0 -23
  255. data/test/unit/machine/machine_with_states_with_custom_human_names_test.rb +0 -18
  256. data/test/unit/machine/machine_with_states_with_custom_values_test.rb +0 -21
  257. data/test/unit/machine/machine_with_states_with_runtime_dependencies_test.rb +0 -19
  258. data/test/unit/machine/machine_with_static_initial_state_test.rb +0 -49
  259. data/test/unit/machine/machine_with_superclass_conflicting_helpers_after_definition_test.rb +0 -36
  260. data/test/unit/machine/machine_with_transition_callbacks_test.rb +0 -144
  261. data/test/unit/machine/machine_with_transitions_test.rb +0 -87
  262. data/test/unit/machine/machine_without_initialization_test.rb +0 -31
  263. data/test/unit/machine/machine_without_initialize_test.rb +0 -14
  264. data/test/unit/machine/machine_without_integration_test.rb +0 -31
  265. data/test/unit/machine_collection/machine_collection_by_default_test.rb +0 -11
  266. data/test/unit/machine_collection/machine_collection_fire_attributes_with_validations_test.rb +0 -72
  267. data/test/unit/machine_collection/machine_collection_fire_test.rb +0 -80
  268. data/test/unit/machine_collection/machine_collection_fire_with_transactions_test.rb +0 -54
  269. data/test/unit/machine_collection/machine_collection_fire_with_validations_test.rb +0 -76
  270. data/test/unit/machine_collection/machine_collection_state_initialization_test.rb +0 -111
  271. data/test/unit/machine_collection/machine_collection_transitions_with_blank_events_test.rb +0 -25
  272. data/test/unit/machine_collection/machine_collection_transitions_with_custom_options_test.rb +0 -20
  273. data/test/unit/machine_collection/machine_collection_transitions_with_different_actions_test.rb +0 -26
  274. data/test/unit/machine_collection/machine_collection_transitions_with_exisiting_transitions_test.rb +0 -25
  275. data/test/unit/machine_collection/machine_collection_transitions_with_invalid_events_test.rb +0 -25
  276. data/test/unit/machine_collection/machine_collection_transitions_with_same_actions_test.rb +0 -31
  277. data/test/unit/machine_collection/machine_collection_transitions_with_transition_test.rb +0 -26
  278. data/test/unit/machine_collection/machine_collection_transitions_without_events_test.rb +0 -25
  279. data/test/unit/machine_collection/machine_collection_transitions_without_transition_test.rb +0 -27
  280. data/test/unit/matcher/all_matcher_test.rb +0 -29
  281. data/test/unit/matcher/blacklist_matcher_test.rb +0 -30
  282. data/test/unit/matcher/loopback_matcher_test.rb +0 -27
  283. data/test/unit/matcher/matcher_by_default_test.rb +0 -15
  284. data/test/unit/matcher/matcher_with_multiple_values_test.rb +0 -15
  285. data/test/unit/matcher/matcher_with_value_test.rb +0 -15
  286. data/test/unit/matcher/whitelist_matcher_test.rb +0 -30
  287. data/test/unit/matcher_helpers/matcher_helpers_all_test.rb +0 -14
  288. data/test/unit/matcher_helpers/matcher_helpers_any_test.rb +0 -14
  289. data/test/unit/matcher_helpers/matcher_helpers_same_test.rb +0 -13
  290. data/test/unit/node_collection/node_collection_after_being_copied_test.rb +0 -46
  291. data/test/unit/node_collection/node_collection_after_update_test.rb +0 -36
  292. data/test/unit/node_collection/node_collection_by_default_test.rb +0 -22
  293. data/test/unit/node_collection/node_collection_test.rb +0 -23
  294. data/test/unit/node_collection/node_collection_with_indices_test.rb +0 -42
  295. data/test/unit/node_collection/node_collection_with_matcher_contexts_test.rb +0 -25
  296. data/test/unit/node_collection/node_collection_with_nodes_test.rb +0 -46
  297. data/test/unit/node_collection/node_collection_with_numeric_index_test.rb +0 -24
  298. data/test/unit/node_collection/node_collection_with_postdefined_contexts_test.rb +0 -22
  299. data/test/unit/node_collection/node_collection_with_predefined_contexts_test.rb +0 -23
  300. data/test/unit/node_collection/node_collection_with_string_index_test.rb +0 -20
  301. data/test/unit/node_collection/node_collection_with_symbol_index_test.rb +0 -20
  302. data/test/unit/node_collection/node_collection_without_indices_test.rb +0 -30
  303. data/test/unit/path/path_by_default_test.rb +0 -54
  304. data/test/unit/path/path_test.rb +0 -14
  305. data/test/unit/path/path_with_available_transitions_after_reaching_target_test.rb +0 -40
  306. data/test/unit/path/path_with_available_transitions_test.rb +0 -54
  307. data/test/unit/path/path_with_deep_target_reached_test.rb +0 -50
  308. data/test/unit/path/path_with_deep_target_test.rb +0 -40
  309. data/test/unit/path/path_with_duplicates_test.rb +0 -32
  310. data/test/unit/path/path_with_encountered_transitions_test.rb +0 -34
  311. data/test/unit/path/path_with_guarded_transitions_test.rb +0 -42
  312. data/test/unit/path/path_with_reached_target_test.rb +0 -35
  313. data/test/unit/path/path_with_transitions_test.rb +0 -54
  314. data/test/unit/path/path_with_unreached_target_test.rb +0 -31
  315. data/test/unit/path/path_without_transitions_test.rb +0 -24
  316. data/test/unit/path_collection/path_collection_by_default_test.rb +0 -46
  317. data/test/unit/path_collection/path_collection_test.rb +0 -24
  318. data/test/unit/path_collection/path_collection_with_deep_paths_test.rb +0 -43
  319. data/test/unit/path_collection/path_collection_with_duplicate_nodes_test.rb +0 -31
  320. data/test/unit/path_collection/path_collection_with_from_state_test.rb +0 -27
  321. data/test/unit/path_collection/path_collection_with_paths_test.rb +0 -47
  322. data/test/unit/path_collection/path_collection_with_to_state_test.rb +0 -29
  323. data/test/unit/path_collection/path_with_guarded_paths_test.rb +0 -25
  324. data/test/unit/state/state_after_being_copied_test.rb +0 -19
  325. data/test/unit/state/state_by_default_test.rb +0 -41
  326. data/test/unit/state/state_final_test.rb +0 -28
  327. data/test/unit/state/state_initial_test.rb +0 -13
  328. data/test/unit/state/state_not_final_test.rb +0 -32
  329. data/test/unit/state/state_not_initial_test.rb +0 -13
  330. data/test/unit/state/state_test.rb +0 -44
  331. data/test/unit/state/state_with_cached_lambda_value_test.rb +0 -29
  332. data/test/unit/state/state_with_conflicting_helpers_after_definition_test.rb +0 -38
  333. data/test/unit/state/state_with_conflicting_helpers_before_definition_test.rb +0 -29
  334. data/test/unit/state/state_with_conflicting_machine_name_test.rb +0 -20
  335. data/test/unit/state/state_with_conflicting_machine_test.rb +0 -37
  336. data/test/unit/state/state_with_context_test.rb +0 -60
  337. data/test/unit/state/state_with_dynamic_human_name_test.rb +0 -25
  338. data/test/unit/state/state_with_existing_context_method_test.rb +0 -24
  339. data/test/unit/state/state_with_human_name_test.rb +0 -13
  340. data/test/unit/state/state_with_integer_value_test.rb +0 -32
  341. data/test/unit/state/state_with_invalid_method_call_test.rb +0 -21
  342. data/test/unit/state/state_with_lambda_value_test.rb +0 -37
  343. data/test/unit/state/state_with_matcher_test.rb +0 -18
  344. data/test/unit/state/state_with_multiple_contexts_test.rb +0 -57
  345. data/test/unit/state/state_with_name_test.rb +0 -43
  346. data/test/unit/state/state_with_namespace_test.rb +0 -22
  347. data/test/unit/state/state_with_nil_value_test.rb +0 -35
  348. data/test/unit/state/state_with_redefined_context_method_test.rb +0 -45
  349. data/test/unit/state/state_with_symbolic_value_test.rb +0 -32
  350. data/test/unit/state/state_with_valid_inherited_method_call_for_current_state_test.rb +0 -40
  351. data/test/unit/state/state_with_valid_method_call_for_current_state_test.rb +0 -33
  352. data/test/unit/state/state_with_valid_method_call_for_different_state_test.rb +0 -41
  353. data/test/unit/state/state_without_cached_lambda_value_test.rb +0 -25
  354. data/test/unit/state/state_without_name_test.rb +0 -39
  355. data/test/unit/state_collection/state_collection_by_default_test.rb +0 -21
  356. data/test/unit/state_collection/state_collection_string_test.rb +0 -35
  357. data/test/unit/state_collection/state_collection_test.rb +0 -74
  358. data/test/unit/state_collection/state_collection_with_custom_state_values_test.rb +0 -29
  359. data/test/unit/state_collection/state_collection_with_event_transitions_test.rb +0 -39
  360. data/test/unit/state_collection/state_collection_with_initial_state_test.rb +0 -40
  361. data/test/unit/state_collection/state_collection_with_namespace_test.rb +0 -21
  362. data/test/unit/state_collection/state_collection_with_state_behaviors_test.rb +0 -40
  363. data/test/unit/state_collection/state_collection_with_state_matchers_test.rb +0 -29
  364. data/test/unit/state_collection/state_collection_with_transition_callbacks_test.rb +0 -40
  365. data/test/unit/state_context/state_context_proxy_test.rb +0 -26
  366. data/test/unit/state_context/state_context_proxy_with_if_and_unless_conditions_test.rb +0 -42
  367. data/test/unit/state_context/state_context_proxy_with_if_condition_test.rb +0 -64
  368. data/test/unit/state_context/state_context_proxy_with_multiple_if_conditions_test.rb +0 -32
  369. data/test/unit/state_context/state_context_proxy_with_multiple_unless_conditions_test.rb +0 -32
  370. data/test/unit/state_context/state_context_proxy_with_unless_condition_test.rb +0 -64
  371. data/test/unit/state_context/state_context_proxy_without_conditions_test.rb +0 -31
  372. data/test/unit/state_context/state_context_test.rb +0 -28
  373. data/test/unit/state_context/state_context_transition_test.rb +0 -104
  374. data/test/unit/state_context/state_context_with_matching_transition_test.rb +0 -27
  375. data/test/unit/state_machine/state_machine_by_default_test.rb +0 -12
  376. data/test/unit/state_machine/state_machine_test.rb +0 -20
  377. data/test/unit/transition/transition_after_being_performed_test.rb +0 -48
  378. data/test/unit/transition/transition_after_being_persisted_test.rb +0 -46
  379. data/test/unit/transition/transition_after_being_rolled_back_test.rb +0 -35
  380. data/test/unit/transition/transition_equality_test.rb +0 -52
  381. data/test/unit/transition/transition_loopback_test.rb +0 -18
  382. data/test/unit/transition/transition_test.rb +0 -96
  383. data/test/unit/transition/transition_transient_test.rb +0 -20
  384. data/test/unit/transition/transition_with_action_test.rb +0 -27
  385. data/test/unit/transition/transition_with_after_callbacks_skipped_test.rb +0 -127
  386. data/test/unit/transition/transition_with_after_callbacks_test.rb +0 -93
  387. data/test/unit/transition/transition_with_around_callbacks_test.rb +0 -141
  388. data/test/unit/transition/transition_with_before_callbacks_skipped_test.rb +0 -30
  389. data/test/unit/transition/transition_with_before_callbacks_test.rb +0 -104
  390. data/test/unit/transition/transition_with_custom_machine_attribute_test.rb +0 -28
  391. data/test/unit/transition/transition_with_different_states_test.rb +0 -18
  392. data/test/unit/transition/transition_with_dynamic_to_value_test.rb +0 -19
  393. data/test/unit/transition/transition_with_failure_callbacks_test.rb +0 -84
  394. data/test/unit/transition/transition_with_invalid_nodes_test.rb +0 -29
  395. data/test/unit/transition/transition_with_mixed_callbacks_test.rb +0 -105
  396. data/test/unit/transition/transition_with_multiple_after_callbacks_test.rb +0 -40
  397. data/test/unit/transition/transition_with_multiple_around_callbacks_test.rb +0 -114
  398. data/test/unit/transition/transition_with_multiple_before_callbacks_test.rb +0 -40
  399. data/test/unit/transition/transition_with_multiple_failure_callbacks_test.rb +0 -40
  400. data/test/unit/transition/transition_with_namespace_test.rb +0 -47
  401. data/test/unit/transition/transition_with_perform_arguments_test.rb +0 -35
  402. data/test/unit/transition/transition_with_transactions_test.rb +0 -42
  403. data/test/unit/transition/transition_without_callbacks_test.rb +0 -33
  404. data/test/unit/transition/transition_without_reading_state_test.rb +0 -22
  405. data/test/unit/transition/transition_without_running_action_test.rb +0 -47
  406. data/test/unit/transition_collection/attribute_transition_collection_by_default_test.rb +0 -23
  407. data/test/unit/transition_collection/attribute_transition_collection_marshalling_test.rb +0 -64
  408. data/test/unit/transition_collection/attribute_transition_collection_with_action_error_test.rb +0 -44
  409. data/test/unit/transition_collection/attribute_transition_collection_with_action_failed_test.rb +0 -44
  410. data/test/unit/transition_collection/attribute_transition_collection_with_after_callback_error_test.rb +0 -32
  411. data/test/unit/transition_collection/attribute_transition_collection_with_after_callback_halt_test.rb +0 -33
  412. data/test/unit/transition_collection/attribute_transition_collection_with_around_after_yield_callback_error_test.rb +0 -32
  413. data/test/unit/transition_collection/attribute_transition_collection_with_around_callback_after_yield_error_test.rb +0 -32
  414. data/test/unit/transition_collection/attribute_transition_collection_with_around_callback_after_yield_halt_test.rb +0 -33
  415. data/test/unit/transition_collection/attribute_transition_collection_with_around_callback_before_yield_halt_test.rb +0 -33
  416. data/test/unit/transition_collection/attribute_transition_collection_with_before_callback_error_test.rb +0 -32
  417. data/test/unit/transition_collection/attribute_transition_collection_with_before_callback_halt_test.rb +0 -33
  418. data/test/unit/transition_collection/attribute_transition_collection_with_callbacks_test.rb +0 -68
  419. data/test/unit/transition_collection/attribute_transition_collection_with_event_transitions_test.rb +0 -41
  420. data/test/unit/transition_collection/attribute_transition_collection_with_events_test.rb +0 -44
  421. data/test/unit/transition_collection/attribute_transition_collection_with_skipped_after_callbacks_test.rb +0 -42
  422. data/test/unit/transition_collection/transition_collection_by_default_test.rb +0 -23
  423. data/test/unit/transition_collection/transition_collection_empty_with_block_test.rb +0 -23
  424. data/test/unit/transition_collection/transition_collection_empty_without_block_test.rb +0 -12
  425. data/test/unit/transition_collection/transition_collection_invalid_test.rb +0 -21
  426. data/test/unit/transition_collection/transition_collection_partial_invalid_test.rb +0 -69
  427. data/test/unit/transition_collection/transition_collection_test.rb +0 -26
  428. data/test/unit/transition_collection/transition_collection_valid_test.rb +0 -57
  429. data/test/unit/transition_collection/transition_collection_with_action_error_test.rb +0 -66
  430. data/test/unit/transition_collection/transition_collection_with_action_failed_test.rb +0 -60
  431. data/test/unit/transition_collection/transition_collection_with_action_hook_and_block_test.rb +0 -17
  432. data/test/unit/transition_collection/transition_collection_with_action_hook_and_skipped_action_test.rb +0 -17
  433. data/test/unit/transition_collection/transition_collection_with_action_hook_and_skipped_after_callbacks_test.rb +0 -37
  434. data/test/unit/transition_collection/transition_collection_with_action_hook_base_test.rb +0 -34
  435. data/test/unit/transition_collection/transition_collection_with_action_hook_error_test.rb +0 -29
  436. data/test/unit/transition_collection/transition_collection_with_action_hook_invalid_test.rb +0 -17
  437. data/test/unit/transition_collection/transition_collection_with_action_hook_multiple_test.rb +0 -79
  438. data/test/unit/transition_collection/transition_collection_with_action_hook_test.rb +0 -45
  439. data/test/unit/transition_collection/transition_collection_with_action_hook_with_different_actions_test.rb +0 -48
  440. data/test/unit/transition_collection/transition_collection_with_action_hook_with_nil_action_test.rb +0 -42
  441. data/test/unit/transition_collection/transition_collection_with_after_callback_halt_test.rb +0 -51
  442. data/test/unit/transition_collection/transition_collection_with_before_callback_halt_test.rb +0 -47
  443. data/test/unit/transition_collection/transition_collection_with_block_test.rb +0 -46
  444. data/test/unit/transition_collection/transition_collection_with_callbacks_test.rb +0 -135
  445. data/test/unit/transition_collection/transition_collection_with_different_actions_test.rb +0 -189
  446. data/test/unit/transition_collection/transition_collection_with_duplicate_actions_test.rb +0 -48
  447. data/test/unit/transition_collection/transition_collection_with_empty_actions_test.rb +0 -41
  448. data/test/unit/transition_collection/transition_collection_with_mixed_actions_test.rb +0 -41
  449. data/test/unit/transition_collection/transition_collection_with_skipped_actions_and_block_test.rb +0 -34
  450. data/test/unit/transition_collection/transition_collection_with_skipped_actions_test.rb +0 -69
  451. data/test/unit/transition_collection/transition_collection_with_skipped_after_callbacks_and_around_callbacks_test.rb +0 -53
  452. data/test/unit/transition_collection/transition_collection_with_skipped_after_callbacks_test.rb +0 -34
  453. data/test/unit/transition_collection/transition_collection_with_transactions_test.rb +0 -65
  454. data/test/unit/transition_collection/transition_collection_without_transactions_test.rb +0 -29
@@ -1,55 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class MachineWithStatesTest < StateMachinesTest
4
- def setup
5
- @klass = Class.new
6
- @machine = StateMachines::Machine.new(@klass)
7
- @parked, @idling = @machine.state :parked, :idling
8
-
9
- @object = @klass.new
10
- end
11
-
12
- def test_should_have_states
13
- assert_equal [nil, :parked, :idling], @machine.states.map { |state| state.name }
14
- end
15
-
16
- def test_should_allow_state_lookup_by_name
17
- assert_equal @parked, @machine.states[:parked]
18
- end
19
-
20
- def test_should_allow_state_lookup_by_value
21
- assert_equal @parked, @machine.states['parked', :value]
22
- end
23
-
24
- def test_should_allow_human_state_name_lookup
25
- assert_equal 'parked', @klass.human_state_name(:parked)
26
- end
27
-
28
- def test_should_raise_exception_on_invalid_human_state_name_lookup
29
- exception = assert_raises(IndexError) { @klass.human_state_name(:invalid) }
30
- assert_equal ':invalid is an invalid name', exception.message
31
- end
32
-
33
- def test_should_use_stringified_name_for_value
34
- assert_equal 'parked', @parked.value
35
- end
36
-
37
- def test_should_not_use_custom_matcher
38
- assert_nil @parked.matcher
39
- end
40
-
41
- def test_should_raise_exception_if_invalid_option_specified
42
- exception = assert_raises(ArgumentError) { @machine.state(:first_gear, invalid: true) }
43
- assert_equal 'Unknown key: :invalid. Valid keys are: :value, :cache, :if, :human_name', exception.message
44
- end
45
-
46
- def test_should_raise_exception_if_conflicting_type_used_for_name
47
- exception = assert_raises(ArgumentError) { @machine.state 'first_gear' }
48
- assert_equal '"first_gear" state defined as String, :parked defined as Symbol; all states must be consistent', exception.message
49
- end
50
-
51
- def test_should_not_raise_exception_if_conflicting_type_is_nil_for_name
52
- @machine.state nil
53
- end
54
- end
55
-
@@ -1,23 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class MachineWithStatesWithBehaviorsTest < StateMachinesTest
4
- def setup
5
- @klass = Class.new
6
- @machine = StateMachines::Machine.new(@klass)
7
-
8
- @parked, @idling = @machine.state :parked, :idling do
9
- def speed
10
- 0
11
- end
12
- end
13
- end
14
-
15
- def test_should_define_behaviors_for_each_state
16
- refute_nil @parked.context_methods[:speed]
17
- refute_nil @idling.context_methods[:speed]
18
- end
19
-
20
- def test_should_define_different_behaviors_for_each_state
21
- refute_equal @parked.context_methods[:speed], @idling.context_methods[:speed]
22
- end
23
- end
@@ -1,18 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class MachineWithStatesWithCustomHumanNamesTest < StateMachinesTest
4
- def setup
5
- @klass = Class.new
6
- @machine = StateMachines::Machine.new(@klass)
7
- @state = @machine.state :parked, human_name: 'stopped'
8
- end
9
-
10
- def test_should_use_custom_human_name
11
- assert_equal 'stopped', @state.human_name
12
- end
13
-
14
- def test_should_allow_human_state_name_lookup
15
- assert_equal 'stopped', @klass.human_state_name(:parked)
16
- end
17
- end
18
-
@@ -1,21 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class MachineWithStatesWithCustomValuesTest < StateMachinesTest
4
- def setup
5
- @klass = Class.new
6
- @machine = StateMachines::Machine.new(@klass)
7
- @state = @machine.state :parked, value: 1
8
-
9
- @object = @klass.new
10
- @object.state = 1
11
- end
12
-
13
- def test_should_use_custom_value
14
- assert_equal 1, @state.value
15
- end
16
-
17
- def test_should_allow_lookup_by_custom_value
18
- assert_equal @state, @machine.states[1, :value]
19
- end
20
- end
21
-
@@ -1,19 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class MachineWithStatesWithRuntimeDependenciesTest < StateMachinesTest
4
- def setup
5
- @klass = Class.new
6
- @machine = StateMachines::Machine.new(@klass)
7
- @machine.state :parked
8
- end
9
-
10
- def test_should_not_evaluate_value_during_definition
11
- @machine.state :parked, value: -> { fail ArgumentError }
12
- end
13
-
14
- def test_should_not_evaluate_if_not_initial_state
15
- @machine.state :parked, value: -> { fail ArgumentError }
16
- @klass.new
17
- end
18
- end
19
-
@@ -1,49 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class MachineWithStaticInitialStateTest < StateMachinesTest
4
- def setup
5
- @klass = Class.new
6
- @machine = StateMachines::Machine.new(@klass, initial: :parked)
7
- end
8
-
9
- def test_should_not_have_dynamic_initial_state
10
- refute @machine.dynamic_initial_state?
11
- end
12
-
13
- def test_should_have_an_initial_state
14
- object = @klass.new
15
- assert_equal 'parked', @machine.initial_state(object).value
16
- end
17
-
18
- def test_should_write_to_attribute_when_initializing_state
19
- object = @klass.allocate
20
- @machine.initialize_state(object)
21
- assert_equal 'parked', object.state
22
- end
23
-
24
- def test_should_set_initial_on_state_object
25
- assert @machine.state(:parked).initial
26
- end
27
-
28
- def test_should_set_initial_state_on_created_object
29
- assert_equal 'parked', @klass.new.state
30
- end
31
-
32
- def test_should_not_initial_state_prior_to_initialization
33
- base = Class.new do
34
- attr_accessor :state_on_init
35
-
36
- def initialize
37
- self.state_on_init = state
38
- end
39
- end
40
- klass = Class.new(base)
41
- StateMachines::Machine.new(klass, initial: :parked)
42
-
43
- assert_nil klass.new.state_on_init
44
- end
45
-
46
- def test_should_be_included_in_known_states
47
- assert_equal [:parked], @machine.states.keys
48
- end
49
- end
@@ -1,36 +0,0 @@
1
- require_relative '../../test_helper'
2
- require 'stringio'
3
-
4
- class MachineWithSuperclassConflictingHelpersAfterDefinitionTest < StateMachinesTest
5
- def setup
6
- @original_stderr, $stderr = $stderr, StringIO.new
7
-
8
- @superclass = Class.new
9
- @klass = Class.new(@superclass)
10
-
11
- @machine = StateMachines::Machine.new(@klass)
12
- @machine.state :parked, :idling
13
- @machine.event :ignite
14
-
15
- @superclass.class_eval do
16
- def state?
17
- true
18
- end
19
- end
20
-
21
- @object = @klass.new
22
- end
23
-
24
- def test_should_call_superclass_attribute_predicate_without_arguments
25
- assert @object.state?
26
- end
27
-
28
- def test_should_define_attribute_predicate_with_arguments
29
- refute @object.state?(:parked)
30
- end
31
-
32
- def teardown
33
- $stderr = @original_stderr
34
- end
35
- end
36
-
@@ -1,144 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class MachineWithTransitionCallbacksTest < StateMachinesTest
4
- def setup
5
- @klass = Class.new do
6
- attr_accessor :callbacks
7
- end
8
-
9
- @machine = StateMachines::Machine.new(@klass, initial: :parked)
10
- @event = @machine.event :ignite do
11
- transition parked: :idling
12
- end
13
-
14
- @object = @klass.new
15
- @object.callbacks = []
16
- end
17
-
18
- def test_should_not_raise_exception_if_implicit_option_specified
19
- @machine.before_transition invalid: :valid, do: -> {}
20
- end
21
-
22
- def test_should_raise_exception_if_method_not_specified
23
- exception = assert_raises(ArgumentError) { @machine.before_transition to: :idling }
24
- assert_equal 'Method(s) for callback must be specified', exception.message
25
- end
26
-
27
- def test_should_invoke_callbacks_during_transition
28
- @machine.before_transition lambda { |object| object.callbacks << 'before' }
29
- @machine.after_transition lambda { |object| object.callbacks << 'after' }
30
- @machine.around_transition lambda { |object, _transition, block| object.callbacks << 'before_around'; block.call; object.callbacks << 'after_around' }
31
-
32
- @event.fire(@object)
33
- assert_equal %w(before before_around after_around after), @object.callbacks
34
- end
35
-
36
- def test_should_allow_multiple_callbacks
37
- @machine.before_transition lambda { |object| object.callbacks << 'before1' }, lambda { |object| object.callbacks << 'before2' }
38
- @machine.after_transition lambda { |object| object.callbacks << 'after1' }, lambda { |object| object.callbacks << 'after2' }
39
- @machine.around_transition(
40
- lambda { |object, _transition, block| object.callbacks << 'before_around1'; block.call; object.callbacks << 'after_around1' },
41
- lambda { |object, _transition, block| object.callbacks << 'before_around2'; block.call; object.callbacks << 'after_around2' }
42
- )
43
-
44
- @event.fire(@object)
45
- assert_equal %w(before1 before2 before_around1 before_around2 after_around2 after_around1 after1 after2), @object.callbacks
46
- end
47
-
48
- def test_should_allow_multiple_callbacks_with_requirements
49
- @machine.before_transition lambda { |object| object.callbacks << 'before_parked1' }, lambda { |object| object.callbacks << 'before_parked2' }, from: :parked
50
- @machine.before_transition lambda { |object| object.callbacks << 'before_idling1' }, lambda { |object| object.callbacks << 'before_idling2' }, from: :idling
51
- @machine.after_transition lambda { |object| object.callbacks << 'after_parked1' }, lambda { |object| object.callbacks << 'after_parked2' }, from: :parked
52
- @machine.after_transition lambda { |object| object.callbacks << 'after_idling1' }, lambda { |object| object.callbacks << 'after_idling2' }, from: :idling
53
- @machine.around_transition(
54
- lambda { |object, _transition, block| object.callbacks << 'before_around_parked1'; block.call; object.callbacks << 'after_around_parked1' },
55
- lambda { |object, _transition, block| object.callbacks << 'before_around_parked2'; block.call; object.callbacks << 'after_around_parked2' },
56
- from: :parked
57
- )
58
- @machine.around_transition(
59
- lambda { |object, _transition, block| object.callbacks << 'before_around_idling1'; block.call; object.callbacks << 'after_around_idling1' },
60
- lambda { |object, _transition, block| object.callbacks << 'before_around_idling2'; block.call; object.callbacks << 'after_around_idling2' },
61
- from: :idling
62
- )
63
-
64
- @event.fire(@object)
65
- assert_equal %w(before_parked1 before_parked2 before_around_parked1 before_around_parked2 after_around_parked2 after_around_parked1 after_parked1 after_parked2), @object.callbacks
66
- end
67
-
68
- def test_should_support_from_requirement
69
- @machine.before_transition from: :parked, do: lambda { |object| object.callbacks << :parked }
70
- @machine.before_transition from: :idling, do: lambda { |object| object.callbacks << :idling }
71
-
72
- @event.fire(@object)
73
- assert_equal [:parked], @object.callbacks
74
- end
75
-
76
- def test_should_support_except_from_requirement
77
- @machine.before_transition except_from: :parked, do: lambda { |object| object.callbacks << :parked }
78
- @machine.before_transition except_from: :idling, do: lambda { |object| object.callbacks << :idling }
79
-
80
- @event.fire(@object)
81
- assert_equal [:idling], @object.callbacks
82
- end
83
-
84
- def test_should_support_to_requirement
85
- @machine.before_transition to: :parked, do: lambda { |object| object.callbacks << :parked }
86
- @machine.before_transition to: :idling, do: lambda { |object| object.callbacks << :idling }
87
-
88
- @event.fire(@object)
89
- assert_equal [:idling], @object.callbacks
90
- end
91
-
92
- def test_should_support_except_to_requirement
93
- @machine.before_transition except_to: :parked, do: lambda { |object| object.callbacks << :parked }
94
- @machine.before_transition except_to: :idling, do: lambda { |object| object.callbacks << :idling }
95
-
96
- @event.fire(@object)
97
- assert_equal [:parked], @object.callbacks
98
- end
99
-
100
- def test_should_support_on_requirement
101
- @machine.before_transition on: :park, do: lambda { |object| object.callbacks << :park }
102
- @machine.before_transition on: :ignite, do: lambda { |object| object.callbacks << :ignite }
103
-
104
- @event.fire(@object)
105
- assert_equal [:ignite], @object.callbacks
106
- end
107
-
108
- def test_should_support_except_on_requirement
109
- @machine.before_transition except_on: :park, do: lambda { |object| object.callbacks << :park }
110
- @machine.before_transition except_on: :ignite, do: lambda { |object| object.callbacks << :ignite }
111
-
112
- @event.fire(@object)
113
- assert_equal [:park], @object.callbacks
114
- end
115
-
116
- def test_should_support_implicit_requirement
117
- @machine.before_transition parked: :idling, do: lambda { |object| object.callbacks << :parked }
118
- @machine.before_transition idling: :parked, do: lambda { |object| object.callbacks << :idling }
119
-
120
- @event.fire(@object)
121
- assert_equal [:parked], @object.callbacks
122
- end
123
-
124
- def test_should_track_states_defined_in_transition_callbacks
125
- @machine.before_transition parked: :idling, do: lambda {}
126
- @machine.after_transition first_gear: :second_gear, do: lambda {}
127
- @machine.around_transition third_gear: :fourth_gear, do: lambda {}
128
-
129
- assert_equal [:parked, :idling, :first_gear, :second_gear, :third_gear, :fourth_gear], @machine.states.map { |state| state.name }
130
- end
131
-
132
- def test_should_not_duplicate_states_defined_in_multiple_event_transitions
133
- @machine.before_transition parked: :idling, do: lambda {}
134
- @machine.after_transition first_gear: :second_gear, do: lambda {}
135
- @machine.after_transition parked: :idling, do: lambda {}
136
- @machine.around_transition parked: :idling, do: lambda {}
137
-
138
- assert_equal [:parked, :idling, :first_gear, :second_gear], @machine.states.map { |state| state.name }
139
- end
140
-
141
- def test_should_define_predicates_for_each_state
142
- [:parked?, :idling?].each { |predicate| assert @object.respond_to?(predicate) }
143
- end
144
- end
@@ -1,87 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class MachineWithTransitionsTest < StateMachinesTest
4
- def setup
5
- @klass = Class.new
6
- @machine = StateMachines::Machine.new(@klass, initial: :parked)
7
- end
8
-
9
- def test_should_require_on_event
10
- exception = assert_raises(ArgumentError) { @machine.transition(parked: :idling) }
11
- assert_equal 'Must specify :on event', exception.message
12
- end
13
-
14
- def test_should_not_allow_except_on_option
15
- exception = assert_raises(ArgumentError) { @machine.transition(except_on: :ignite, on: :ignite) }
16
- assert_equal 'Unknown key: :except_on. Valid keys are: :from, :to, :except_from, :except_to, :if, :unless', exception.message
17
- end
18
-
19
- def test_should_allow_transitioning_without_a_to_state
20
- @machine.transition(from: :parked, on: :ignite)
21
- end
22
-
23
- def test_should_allow_transitioning_without_a_from_state
24
- @machine.transition(to: :idling, on: :ignite)
25
- end
26
-
27
- def test_should_allow_except_from_option
28
- @machine.transition(except_from: :idling, on: :ignite)
29
- end
30
-
31
- def test_should_allow_except_to_option
32
- @machine.transition(except_to: :parked, on: :ignite)
33
- end
34
-
35
- def test_should_allow_implicit_options
36
- branch = @machine.transition(first_gear: :second_gear, on: :shift_up)
37
- assert_instance_of StateMachines::Branch, branch
38
-
39
- state_requirements = branch.state_requirements
40
- assert_equal 1, state_requirements.length
41
-
42
- assert_instance_of StateMachines::WhitelistMatcher, state_requirements[0][:from]
43
- assert_equal [:first_gear], state_requirements[0][:from].values
44
- assert_instance_of StateMachines::WhitelistMatcher, state_requirements[0][:to]
45
- assert_equal [:second_gear], state_requirements[0][:to].values
46
- assert_instance_of StateMachines::WhitelistMatcher, branch.event_requirement
47
- assert_equal [:shift_up], branch.event_requirement.values
48
- end
49
-
50
- def test_should_allow_multiple_implicit_options
51
- branch = @machine.transition(first_gear: :second_gear, second_gear: :third_gear, on: :shift_up)
52
-
53
- state_requirements = branch.state_requirements
54
- assert_equal 2, state_requirements.length
55
- end
56
-
57
- def test_should_allow_verbose_options
58
- branch = @machine.transition(from: :parked, to: :idling, on: :ignite)
59
- assert_instance_of StateMachines::Branch, branch
60
- end
61
-
62
- def test_should_include_all_transition_states_in_machine_states
63
- @machine.transition(parked: :idling, on: :ignite)
64
-
65
- assert_equal [:parked, :idling], @machine.states.map { |state| state.name }
66
- end
67
-
68
- def test_should_include_all_transition_events_in_machine_events
69
- @machine.transition(parked: :idling, on: :ignite)
70
-
71
- assert_equal [:ignite], @machine.events.map { |event| event.name }
72
- end
73
-
74
- def test_should_allow_multiple_events
75
- branches = @machine.transition(parked: :ignite, on: [:ignite, :shift_up])
76
-
77
- assert_equal 2, branches.length
78
- assert_equal [:ignite, :shift_up], @machine.events.map { |event| event.name }
79
- end
80
-
81
- def test_should_not_modify_options
82
- options = { parked: :idling, on: :ignite }
83
- @machine.transition(options)
84
-
85
- assert_equal options, parked: :idling, on: :ignite
86
- end
87
- end
@@ -1,31 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class MachineWithoutInitializationTest < StateMachinesTest
4
- def setup
5
- @klass = Class.new do
6
- def initialize(attributes = {})
7
- attributes.each { |attr, value| send("#{attr}=", value) }
8
- super()
9
- end
10
- end
11
-
12
- @machine = StateMachines::Machine.new(@klass, initial: :parked, initialize: false)
13
- end
14
-
15
- def test_should_not_have_an_initial_state
16
- object = @klass.new
17
- assert_nil object.state
18
- end
19
-
20
- def test_should_still_allow_manual_initialization
21
- @klass.send(:include, Module.new do
22
- def initialize(_attributes = {})
23
- super()
24
- initialize_state_machines
25
- end
26
- end)
27
-
28
- object = @klass.new
29
- assert_equal 'parked', object.state
30
- end
31
- end
@@ -1,14 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class MachineWithoutInitializeTest < StateMachinesTest
4
- def setup
5
- klass = Class.new
6
- StateMachines::Machine.new(klass, initial: :parked)
7
- @object = klass.new
8
- end
9
-
10
- def test_should_initialize_state
11
- assert_equal 'parked', @object.state
12
- end
13
- end
14
-
@@ -1,31 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class MachineWithoutIntegrationTest < StateMachinesTest
4
- def setup
5
- @klass = Class.new
6
- @machine = StateMachines::Machine.new(@klass)
7
- @object = @klass.new
8
- end
9
-
10
- def test_transaction_should_yield
11
- @yielded = false
12
- @machine.within_transaction(@object) do
13
- @yielded = true
14
- end
15
-
16
- assert @yielded
17
- end
18
-
19
- def test_invalidation_should_do_nothing
20
- assert_nil @machine.invalidate(@object, :state, :invalid_transition, [[:event, 'park']])
21
- end
22
-
23
- def test_reset_should_do_nothing
24
- assert_nil @machine.reset(@object)
25
- end
26
-
27
- def test_errors_for_should_be_empty
28
- assert_equal '', @machine.errors_for(@object)
29
- end
30
- end
31
-
@@ -1,11 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class MachineCollectionByDefaultTest < StateMachinesTest
4
- def setup
5
- @machines = StateMachines::MachineCollection.new
6
- end
7
-
8
- def test_should_not_have_any_machines
9
- assert @machines.empty?
10
- end
11
- end
@@ -1,72 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class MachineCollectionFireWithValidationsTest < StateMachinesTest
4
- module Custom
5
- include StateMachines::Integrations::Base
6
-
7
- def invalidate(object, _attribute, message, values = [])
8
- (object.errors ||= []) << generate_message(message, values)
9
- end
10
-
11
- def reset(object)
12
- object.errors = []
13
- end
14
- end
15
-
16
- def setup
17
- StateMachines::Integrations.register(MachineCollectionFireWithValidationsTest::Custom)
18
-
19
- @klass = Class.new do
20
- attr_accessor :errors
21
-
22
- def initialize
23
- @errors = []
24
- super
25
- end
26
- end
27
-
28
- @machines = StateMachines::MachineCollection.new
29
- @machines[:state] = @state = StateMachines::Machine.new(@klass, :state, initial: :parked, integration: :custom)
30
- @state.event :ignite do
31
- transition parked: :idling
32
- end
33
-
34
- @machines[:alarm_state] = @alarm_state = StateMachines::Machine.new(@klass, :alarm_state, initial: :active, namespace: 'alarm', integration: :custom)
35
- @alarm_state.event :disable do
36
- transition active: :off
37
- end
38
-
39
- @object = @klass.new
40
- end
41
-
42
- def test_should_not_invalidate_if_transitions_exist
43
- assert @machines.fire_events(@object, :ignite, :disable_alarm)
44
- assert_equal [], @object.errors
45
- end
46
-
47
- def test_should_invalidate_if_no_transitions_exist
48
- @object.state = 'idling'
49
- @object.alarm_state = 'off'
50
-
51
- refute @machines.fire_events(@object, :ignite, :disable_alarm)
52
- assert_equal ['cannot transition via "ignite"', 'cannot transition via "disable"'], @object.errors
53
- end
54
-
55
- def test_should_run_failure_callbacks_if_no_transitions_exist
56
- @object.state = 'idling'
57
- @object.alarm_state = 'off'
58
- @state_failure_run = @alarm_state_failure_run = false
59
-
60
- @machines[:state].after_failure { @state_failure_run = true }
61
- @machines[:alarm_state].after_failure { @alarm_state_failure_run = true }
62
-
63
- refute @machines.fire_events(@object, :ignite, :disable_alarm)
64
- assert @state_failure_run
65
- assert @alarm_state_failure_run
66
- end
67
-
68
- def teardown
69
- StateMachines::Integrations.reset
70
- end
71
- end
72
-