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,75 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class EventWithMatchingEnabledTransitionsTest < 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(EventWithMatchingEnabledTransitionsTest::Custom)
18
-
19
- @klass = Class.new do
20
- attr_accessor :errors
21
- end
22
-
23
- @machine = StateMachines::Machine.new(@klass, integration: :custom)
24
- @machine.state :parked, :idling
25
-
26
- @machine.events << @event = StateMachines::Event.new(@machine, :ignite)
27
- @event.transition(parked: :idling)
28
-
29
- @object = @klass.new
30
- @object.state = 'parked'
31
- end
32
-
33
- def test_should_be_able_to_fire
34
- assert @event.can_fire?(@object)
35
- end
36
-
37
- def test_should_have_a_transition
38
- transition = @event.transition_for(@object)
39
- refute_nil transition
40
- assert_equal 'parked', transition.from
41
- assert_equal 'idling', transition.to
42
- assert_equal :ignite, transition.event
43
- end
44
-
45
- def test_should_fire
46
- assert @event.fire(@object)
47
- end
48
-
49
- def test_should_change_the_current_state
50
- @event.fire(@object)
51
- assert_equal 'idling', @object.state
52
- end
53
-
54
- def test_should_reset_existing_error
55
- @object.errors = ['invalid']
56
-
57
- @event.fire(@object)
58
- assert_equal [], @object.errors
59
- end
60
-
61
- def test_should_not_invalidate_the_state
62
- @event.fire(@object)
63
- assert_equal [], @object.errors
64
- end
65
-
66
- def test_should_not_be_able_to_fire_on_reset
67
- @event.reset
68
- refute @event.can_fire?(@object)
69
- end
70
-
71
- def teardown
72
- StateMachines::Integrations.reset
73
- end
74
- end
75
-
@@ -1,61 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class EventWithMultipleTransitionsTest < StateMachinesTest
4
- def setup
5
- @klass = Class.new
6
- @machine = StateMachines::Machine.new(@klass)
7
- @machine.state :parked, :idling
8
-
9
- @machine.events << @event = StateMachines::Event.new(@machine, :ignite)
10
- @event.transition(idling: :idling)
11
- @event.transition(parked: :idling)
12
- @event.transition(parked: :parked)
13
-
14
- @object = @klass.new
15
- @object.state = 'parked'
16
- end
17
-
18
- def test_should_be_able_to_fire
19
- assert @event.can_fire?(@object)
20
- end
21
-
22
- def test_should_have_a_transition
23
- transition = @event.transition_for(@object)
24
- refute_nil transition
25
- assert_equal 'parked', transition.from
26
- assert_equal 'idling', transition.to
27
- assert_equal :ignite, transition.event
28
- end
29
-
30
- def test_should_allow_specific_transition_selection_using_from
31
- transition = @event.transition_for(@object, from: :idling)
32
-
33
- refute_nil transition
34
- assert_equal 'idling', transition.from
35
- assert_equal 'idling', transition.to
36
- assert_equal :ignite, transition.event
37
- end
38
-
39
- def test_should_allow_specific_transition_selection_using_to
40
- transition = @event.transition_for(@object, from: :parked, to: :parked)
41
-
42
- refute_nil transition
43
- assert_equal 'parked', transition.from
44
- assert_equal 'parked', transition.to
45
- assert_equal :ignite, transition.event
46
- end
47
-
48
- def test_should_not_allow_specific_transition_selection_using_on
49
- exception = assert_raises(ArgumentError) { @event.transition_for(@object, on: :park) }
50
- assert_equal 'Unknown key: :on. Valid keys are: :from, :to, :guard', exception.message
51
- end
52
-
53
- def test_should_fire
54
- assert @event.fire(@object)
55
- end
56
-
57
- def test_should_change_the_current_state
58
- @event.fire(@object)
59
- assert_equal 'idling', @object.state
60
- end
61
- end
@@ -1,34 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class EventWithNamespaceTest < StateMachinesTest
4
- def setup
5
- @klass = Class.new
6
- @machine = StateMachines::Machine.new(@klass, namespace: 'alarm')
7
- @machine.events << @event = StateMachines::Event.new(@machine, :enable)
8
- @object = @klass.new
9
- end
10
-
11
- def test_should_have_a_name
12
- assert_equal :enable, @event.name
13
- end
14
-
15
- def test_should_have_a_qualified_name
16
- assert_equal :enable_alarm, @event.qualified_name
17
- end
18
-
19
- def test_should_namespace_predicate
20
- assert @object.respond_to?(:can_enable_alarm?)
21
- end
22
-
23
- def test_should_namespace_transition_accessor
24
- assert @object.respond_to?(:enable_alarm_transition)
25
- end
26
-
27
- def test_should_namespace_action
28
- assert @object.respond_to?(:enable_alarm)
29
- end
30
-
31
- def test_should_namespace_bang_action
32
- assert @object.respond_to?(:enable_alarm!)
33
- end
34
- end
@@ -1,60 +0,0 @@
1
- require_relative '../../test_helper'
2
- class EventWithTransitionWithBlacklistedToStateTest < StateMachinesTest
3
- def setup
4
- @klass = Class.new
5
- @machine = StateMachines::Machine.new(@klass, initial: :parked)
6
- @machine.state :parked, :idling, :first_gear, :second_gear
7
-
8
- @machine.events << @event = StateMachines::Event.new(@machine, :ignite)
9
- @event.transition(from: :parked, to: StateMachines::BlacklistMatcher.new([:parked, :idling]))
10
-
11
- @object = @klass.new
12
- @object.state = 'parked'
13
- end
14
-
15
- def test_should_be_able_to_fire
16
- assert @event.can_fire?(@object)
17
- end
18
-
19
- def test_should_have_a_transition
20
- transition = @event.transition_for(@object)
21
- refute_nil transition
22
- assert_equal 'parked', transition.from
23
- assert_equal 'first_gear', transition.to
24
- assert_equal :ignite, transition.event
25
- end
26
-
27
- def test_should_allow_loopback_first_when_possible
28
- @event.transition(from: :second_gear, to: StateMachines::BlacklistMatcher.new([:parked, :idling]))
29
- @object.state = 'second_gear'
30
-
31
- transition = @event.transition_for(@object)
32
- refute_nil transition
33
- assert_equal 'second_gear', transition.from
34
- assert_equal 'second_gear', transition.to
35
- assert_equal :ignite, transition.event
36
- end
37
-
38
- def test_should_allow_specific_transition_selection_using_to
39
- transition = @event.transition_for(@object, from: :parked, to: :second_gear)
40
-
41
- refute_nil transition
42
- assert_equal 'parked', transition.from
43
- assert_equal 'second_gear', transition.to
44
- assert_equal :ignite, transition.event
45
- end
46
-
47
- def test_should_not_allow_transition_selection_if_not_matching
48
- transition = @event.transition_for(@object, from: :parked, to: :parked)
49
- assert_nil transition
50
- end
51
-
52
- def test_should_fire
53
- assert @event.fire(@object)
54
- end
55
-
56
- def test_should_change_the_current_state
57
- @event.fire(@object)
58
- assert_equal 'first_gear', @object.state
59
- end
60
- end
@@ -1,36 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class EventWithTransitionWithLoopbackStateTest < StateMachinesTest
4
- def setup
5
- @klass = Class.new
6
- @machine = StateMachines::Machine.new(@klass)
7
- @machine.state :parked
8
-
9
- @machine.events << @event = StateMachines::Event.new(@machine, :park)
10
- @event.transition(from: :parked, to: StateMachines::LoopbackMatcher.instance)
11
-
12
- @object = @klass.new
13
- @object.state = 'parked'
14
- end
15
-
16
- def test_should_be_able_to_fire
17
- assert @event.can_fire?(@object)
18
- end
19
-
20
- def test_should_have_a_transition
21
- transition = @event.transition_for(@object)
22
- refute_nil transition
23
- assert_equal 'parked', transition.from
24
- assert_equal 'parked', transition.to
25
- assert_equal :park, transition.event
26
- end
27
-
28
- def test_should_fire
29
- assert @event.fire(@object)
30
- end
31
-
32
- def test_should_not_change_the_current_state
33
- @event.fire(@object)
34
- assert_equal 'parked', @object.state
35
- end
36
- end
@@ -1,36 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class EventWithTransitionWithNilToStateTest < StateMachinesTest
4
- def setup
5
- @klass = Class.new
6
- @machine = StateMachines::Machine.new(@klass)
7
- @machine.state nil, :idling
8
-
9
- @machine.events << @event = StateMachines::Event.new(@machine, :park)
10
- @event.transition(idling: nil)
11
-
12
- @object = @klass.new
13
- @object.state = 'idling'
14
- end
15
-
16
- def test_should_be_able_to_fire
17
- assert @event.can_fire?(@object)
18
- end
19
-
20
- def test_should_have_a_transition
21
- transition = @event.transition_for(@object)
22
- refute_nil transition
23
- assert_equal 'idling', transition.from
24
- assert_nil transition.to
25
- assert_equal :park, transition.event
26
- end
27
-
28
- def test_should_fire
29
- assert @event.fire(@object)
30
- end
31
-
32
- def test_should_not_change_the_current_state
33
- @event.fire(@object)
34
- assert_nil @object.state
35
- end
36
- end
@@ -1,51 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class EventWithTransitionWithWhitelistedToStateTest < StateMachinesTest
4
- def setup
5
- @klass = Class.new
6
- @machine = StateMachines::Machine.new(@klass, initial: :parked)
7
- @machine.state :parked, :idling, :first_gear, :second_gear
8
-
9
- @machine.events << @event = StateMachines::Event.new(@machine, :ignite)
10
- @event.transition(from: :parked, to: StateMachines::WhitelistMatcher.new([:first_gear, :second_gear]))
11
-
12
- @object = @klass.new
13
- @object.state = 'parked'
14
- end
15
-
16
- def test_should_be_able_to_fire
17
- assert @event.can_fire?(@object)
18
- end
19
-
20
- def test_should_have_a_transition
21
- transition = @event.transition_for(@object)
22
- refute_nil transition
23
- assert_equal 'parked', transition.from
24
- assert_equal 'first_gear', transition.to
25
- assert_equal :ignite, transition.event
26
- end
27
-
28
- def test_should_allow_specific_transition_selection_using_to
29
- transition = @event.transition_for(@object, from: :parked, to: :second_gear)
30
-
31
- refute_nil transition
32
- assert_equal 'parked', transition.from
33
- assert_equal 'second_gear', transition.to
34
- assert_equal :ignite, transition.event
35
- end
36
-
37
- def test_should_not_allow_transition_selection_if_not_matching
38
- transition = @event.transition_for(@object, from: :parked, to: :parked)
39
- assert_nil transition
40
- end
41
-
42
- def test_should_fire
43
- assert @event.fire(@object)
44
- end
45
-
46
- def test_should_change_the_current_state
47
- @event.fire(@object)
48
- assert_equal 'first_gear', @object.state
49
- end
50
- end
51
-
@@ -1,36 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class EventWithTransitionWithoutToStateTest < StateMachinesTest
4
- def setup
5
- @klass = Class.new
6
- @machine = StateMachines::Machine.new(@klass)
7
- @machine.state :parked
8
-
9
- @machine.events << @event = StateMachines::Event.new(@machine, :park)
10
- @event.transition(from: :parked)
11
-
12
- @object = @klass.new
13
- @object.state = 'parked'
14
- end
15
-
16
- def test_should_be_able_to_fire
17
- assert @event.can_fire?(@object)
18
- end
19
-
20
- def test_should_have_a_transition
21
- transition = @event.transition_for(@object)
22
- refute_nil transition
23
- assert_equal 'parked', transition.from
24
- assert_equal 'parked', transition.to
25
- assert_equal :park, transition.event
26
- end
27
-
28
- def test_should_fire
29
- assert @event.fire(@object)
30
- end
31
-
32
- def test_should_not_change_the_current_state
33
- @event.fire(@object)
34
- assert_equal 'parked', @object.state
35
- end
36
- end
@@ -1,32 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class EventWithTransitionsTest < StateMachinesTest
4
- def setup
5
- @klass = Class.new
6
- @machine = StateMachines::Machine.new(@klass)
7
- @machine.events << @event = StateMachines::Event.new(@machine, :ignite)
8
- @event.transition(parked: :idling)
9
- @event.transition(first_gear: :idling)
10
- end
11
-
12
- def test_should_include_all_transition_states_in_known_states
13
- assert_equal [:parked, :idling, :first_gear], @event.known_states
14
- end
15
-
16
- def test_should_include_new_transition_states_after_calling_known_states
17
- @event.known_states
18
- @event.transition(stalled: :idling)
19
-
20
- assert_equal [:parked, :idling, :first_gear, :stalled], @event.known_states
21
- end
22
-
23
- def test_should_clear_known_states_on_reset
24
- @event.reset
25
- assert_equal [], @event.known_states
26
- end
27
-
28
- def test_should_use_pretty_inspect
29
- assert_match '#<StateMachines::Event name=:ignite transitions=[:parked => :idling, :first_gear => :idling]>', @event.inspect
30
- end
31
- end
32
-
@@ -1,41 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class EventWithoutMatchingTransitionsTest < StateMachinesTest
4
- def setup
5
- @klass = Class.new
6
- @machine = StateMachines::Machine.new(@klass)
7
- @machine.state :parked, :idling
8
-
9
- @machine.events << @event = StateMachines::Event.new(@machine, :ignite)
10
- @event.transition(parked: :idling)
11
-
12
- @object = @klass.new
13
- @object.state = 'idling'
14
- end
15
-
16
- def test_should_not_be_able_to_fire
17
- refute @event.can_fire?(@object)
18
- end
19
-
20
- def test_should_be_able_to_fire_with_custom_from_state
21
- assert @event.can_fire?(@object, from: :parked)
22
- end
23
-
24
- def test_should_not_have_a_transition
25
- assert_nil @event.transition_for(@object)
26
- end
27
-
28
- def test_should_have_a_transition_with_custom_from_state
29
- refute_nil @event.transition_for(@object, from: :parked)
30
- end
31
-
32
- def test_should_not_fire
33
- refute @event.fire(@object)
34
- end
35
-
36
- def test_should_not_change_the_current_state
37
- @event.fire(@object)
38
- assert_equal 'idling', @object.state
39
- end
40
- end
41
-
@@ -1,28 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class EventWithoutTransitionsTest < StateMachinesTest
4
- def setup
5
- @klass = Class.new
6
- @machine = StateMachines::Machine.new(@klass)
7
- @machine.events << @event = StateMachines::Event.new(@machine, :ignite)
8
- @object = @klass.new
9
- end
10
-
11
- def test_should_not_be_able_to_fire
12
- refute @event.can_fire?(@object)
13
- end
14
-
15
- def test_should_not_have_a_transition
16
- assert_nil @event.transition_for(@object)
17
- end
18
-
19
- def test_should_not_fire
20
- refute @event.fire(@object)
21
- end
22
-
23
- def test_should_not_change_the_current_state
24
- @event.fire(@object)
25
- assert_nil @object.state
26
- end
27
- end
28
-
@@ -1,20 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class InvalidEventTest < StateMachinesTest
4
- def setup
5
- @object = Object.new
6
- @invalid_event = StateMachines::InvalidEvent.new(@object, :invalid)
7
- end
8
-
9
- def test_should_have_an_object
10
- assert_equal @object, @invalid_event.object
11
- end
12
-
13
- def test_should_have_an_event
14
- assert_equal :invalid, @invalid_event.event
15
- end
16
-
17
- def test_should_generate_a_message
18
- assert_equal ':invalid is an unknown state machine event', @invalid_event.message
19
- end
20
- end
@@ -1,62 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class EventCollectionAttributeWithMachineActionTest < StateMachinesTest
4
- def setup
5
- @klass = Class.new do
6
- def save
7
- end
8
- end
9
-
10
- @machine = StateMachines::Machine.new(@klass, initial: :parked, action: :save)
11
- @events = StateMachines::EventCollection.new(@machine)
12
-
13
- @machine.state :parked, :idling
14
- @events << @ignite = StateMachines::Event.new(@machine, :ignite)
15
- @machine.events.concat(@events)
16
-
17
- @object = @klass.new
18
- end
19
-
20
- def test_should_not_have_transition_if_nil
21
- @object.state_event = nil
22
- assert_nil @events.attribute_transition_for(@object)
23
- end
24
-
25
- def test_should_not_have_transition_if_empty
26
- @object.state_event = ''
27
- assert_nil @events.attribute_transition_for(@object)
28
- end
29
-
30
- def test_should_have_invalid_transition_if_invalid_event_specified
31
- @object.state_event = 'invalid'
32
- assert_equal false, @events.attribute_transition_for(@object)
33
- end
34
-
35
- def test_should_have_invalid_transition_if_event_cannot_be_fired
36
- @object.state_event = 'ignite'
37
- assert_equal false, @events.attribute_transition_for(@object)
38
- end
39
-
40
- def test_should_have_valid_transition_if_event_can_be_fired
41
- @ignite.transition parked: :idling
42
- @object.state_event = 'ignite'
43
-
44
- assert_instance_of StateMachines::Transition, @events.attribute_transition_for(@object)
45
- end
46
-
47
- def test_should_have_valid_transition_if_already_defined_in_transition_cache
48
- @ignite.transition parked: :idling
49
- @object.state_event = nil
50
- @object.send(:state_event_transition=, transition = @ignite.transition_for(@object))
51
-
52
- assert_equal transition, @events.attribute_transition_for(@object)
53
- end
54
-
55
- def test_should_use_transition_cache_if_both_event_and_transition_are_present
56
- @ignite.transition parked: :idling
57
- @object.state_event = 'ignite'
58
- @object.send(:state_event_transition=, transition = @ignite.transition_for(@object))
59
-
60
- assert_equal transition, @events.attribute_transition_for(@object)
61
- end
62
- end
@@ -1,36 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class EventCollectionAttributeWithNamespacedMachineTest < StateMachinesTest
4
- def setup
5
- @klass = Class.new do
6
- def save
7
- end
8
- end
9
-
10
- @machine = StateMachines::Machine.new(@klass, namespace: 'alarm', initial: :active, action: :save)
11
- @events = StateMachines::EventCollection.new(@machine)
12
-
13
- @machine.state :active, :off
14
- @events << @disable = StateMachines::Event.new(@machine, :disable)
15
- @machine.events.concat(@events)
16
-
17
- @object = @klass.new
18
- end
19
-
20
- def test_should_not_have_transition_if_nil
21
- @object.state_event = nil
22
- assert_nil @events.attribute_transition_for(@object)
23
- end
24
-
25
- def test_should_have_invalid_transition_if_event_cannot_be_fired
26
- @object.state_event = 'disable'
27
- assert_equal false, @events.attribute_transition_for(@object)
28
- end
29
-
30
- def test_should_have_valid_transition_if_event_can_be_fired
31
- @disable.transition active: :off
32
- @object.state_event = 'disable'
33
-
34
- assert_instance_of StateMachines::Transition, @events.attribute_transition_for(@object)
35
- end
36
- end
@@ -1,26 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class EventCollectionByDefaultTest < StateMachinesTest
4
- def setup
5
- @klass = Class.new
6
- @machine = StateMachines::Machine.new(@klass)
7
- @events = StateMachines::EventCollection.new(@machine)
8
- @object = @klass.new
9
- end
10
-
11
- def test_should_not_have_any_nodes
12
- assert_equal 0, @events.length
13
- end
14
-
15
- def test_should_have_a_machine
16
- assert_equal @machine, @events.machine
17
- end
18
-
19
- def test_should_not_have_any_valid_events_for_an_object
20
- assert @events.valid_for(@object).empty?
21
- end
22
-
23
- def test_should_not_have_any_transitions_for_an_object
24
- assert @events.transitions_for(@object).empty?
25
- end
26
- end
@@ -1,39 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class EventCollectionTest < StateMachinesTest
4
- def setup
5
- machine = StateMachines::Machine.new(Class.new, namespace: 'alarm')
6
- @events = StateMachines::EventCollection.new(machine)
7
-
8
- @events << @open = StateMachines::Event.new(machine, :enable)
9
- machine.events.concat(@events)
10
- end
11
-
12
- def test_should_index_by_name
13
- assert_equal @open, @events[:enable, :name]
14
- end
15
-
16
- def test_should_index_by_name_by_default
17
- assert_equal @open, @events[:enable]
18
- end
19
-
20
- def test_should_index_by_string_name
21
- assert_equal @open, @events['enable']
22
- end
23
-
24
- def test_should_index_by_qualified_name
25
- assert_equal @open, @events[:enable_alarm, :qualified_name]
26
- end
27
-
28
- def test_should_index_by_string_qualified_name
29
- assert_equal @open, @events['enable_alarm', :qualified_name]
30
- end
31
- end
32
-
33
-
34
-
35
-
36
-
37
-
38
-
39
-