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,64 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class StateContextProxyWithIfConditionTest < StateMachinesTest
4
- def setup
5
- @klass = Class.new(Validateable)
6
- machine = StateMachines::Machine.new(@klass, initial: :parked)
7
- state = machine.state :parked
8
-
9
- @state_context = StateMachines::StateContext.new(state)
10
- @object = @klass.new
11
-
12
- @condition_result = nil
13
- @options = @state_context.validate(if: lambda { @condition_result })[0]
14
- end
15
-
16
- def test_should_have_if_option
17
- refute_nil @options[:if]
18
- end
19
-
20
- def test_should_be_false_if_state_is_different
21
- @object.state = nil
22
- refute @options[:if].call(@object)
23
- end
24
-
25
- def test_should_be_false_if_original_condition_is_false
26
- @condition_result = false
27
- refute @options[:if].call(@object)
28
- end
29
-
30
- def test_should_be_true_if_state_matches_and_original_condition_is_true
31
- @condition_result = true
32
- assert @options[:if].call(@object)
33
- end
34
-
35
- def test_should_evaluate_symbol_condition
36
- @klass.class_eval do
37
- attr_accessor :callback
38
- end
39
-
40
- options = @state_context.validate(if: :callback)[0]
41
-
42
- object = @klass.new
43
- object.callback = false
44
- refute options[:if].call(object)
45
-
46
- object.callback = true
47
- assert options[:if].call(object)
48
- end
49
-
50
- def test_should_evaluate_string_condition
51
- @klass.class_eval do
52
- attr_accessor :callback
53
- end
54
-
55
- options = @state_context.validate(if: '@callback')[0]
56
-
57
- object = @klass.new
58
- object.callback = false
59
- refute options[:if].call(object)
60
-
61
- object.callback = true
62
- assert options[:if].call(object)
63
- end
64
- end
@@ -1,32 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class StateContextProxyWithMultipleIfConditionsTest < StateMachinesTest
4
- def setup
5
- @klass = Class.new(Validateable)
6
- machine = StateMachines::Machine.new(@klass, initial: :parked)
7
- state = machine.state :parked
8
-
9
- @state_context = StateMachines::StateContext.new(state)
10
- @object = @klass.new
11
-
12
- @first_condition_result = nil
13
- @second_condition_result = nil
14
- @options = @state_context.validate(if: [lambda { @first_condition_result }, lambda { @second_condition_result }])[0]
15
- end
16
-
17
- def test_should_be_true_if_all_conditions_are_true
18
- @first_condition_result = true
19
- @second_condition_result = true
20
- assert @options[:if].call(@object)
21
- end
22
-
23
- def test_should_be_false_if_any_condition_is_false
24
- @first_condition_result = true
25
- @second_condition_result = false
26
- refute @options[:if].call(@object)
27
-
28
- @first_condition_result = false
29
- @second_condition_result = true
30
- refute @options[:if].call(@object)
31
- end
32
- end
@@ -1,32 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class StateContextProxyWithMultipleUnlessConditionsTest < StateMachinesTest
4
- def setup
5
- @klass = Class.new(Validateable)
6
- machine = StateMachines::Machine.new(@klass, initial: :parked)
7
- state = machine.state :parked
8
-
9
- @state_context = StateMachines::StateContext.new(state)
10
- @object = @klass.new
11
-
12
- @first_condition_result = nil
13
- @second_condition_result = nil
14
- @options = @state_context.validate(unless: [-> { @first_condition_result }, lambda { @second_condition_result }])[0]
15
- end
16
-
17
- def test_should_be_true_if_all_conditions_are_false
18
- @first_condition_result = false
19
- @second_condition_result = false
20
- assert @options[:if].call(@object)
21
- end
22
-
23
- def test_should_be_false_if_any_condition_is_true
24
- @first_condition_result = true
25
- @second_condition_result = false
26
- refute @options[:if].call(@object)
27
-
28
- @first_condition_result = false
29
- @second_condition_result = true
30
- refute @options[:if].call(@object)
31
- end
32
- end
@@ -1,64 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class StateContextProxyWithUnlessConditionTest < StateMachinesTest
4
- def setup
5
- @klass = Class.new(Validateable)
6
- machine = StateMachines::Machine.new(@klass, initial: :parked)
7
- state = machine.state :parked
8
-
9
- @state_context = StateMachines::StateContext.new(state)
10
- @object = @klass.new
11
-
12
- @condition_result = nil
13
- @options = @state_context.validate(unless: lambda { @condition_result })[0]
14
- end
15
-
16
- def test_should_have_if_option
17
- refute_nil @options[:if]
18
- end
19
-
20
- def test_should_be_false_if_state_is_different
21
- @object.state = nil
22
- refute @options[:if].call(@object)
23
- end
24
-
25
- def test_should_be_false_if_original_condition_is_true
26
- @condition_result = true
27
- refute @options[:if].call(@object)
28
- end
29
-
30
- def test_should_be_true_if_state_matches_and_original_condition_is_false
31
- @condition_result = false
32
- assert @options[:if].call(@object)
33
- end
34
-
35
- def test_should_evaluate_symbol_condition
36
- @klass.class_eval do
37
- attr_accessor :callback
38
- end
39
-
40
- options = @state_context.validate(unless: :callback)[0]
41
-
42
- object = @klass.new
43
- object.callback = true
44
- refute options[:if].call(object)
45
-
46
- object.callback = false
47
- assert options[:if].call(object)
48
- end
49
-
50
- def test_should_evaluate_string_condition
51
- @klass.class_eval do
52
- attr_accessor :callback
53
- end
54
-
55
- options = @state_context.validate(unless: '@callback')[0]
56
-
57
- object = @klass.new
58
- object.callback = true
59
- refute options[:if].call(object)
60
-
61
- object.callback = false
62
- assert options[:if].call(object)
63
- end
64
- end
@@ -1,31 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class StateContextProxyWithoutConditionsTest < StateMachinesTest
4
- def setup
5
- @klass = Class.new(Validateable)
6
- machine = StateMachines::Machine.new(@klass, initial: :parked)
7
- state = machine.state :parked
8
-
9
- @state_context = StateMachines::StateContext.new(state)
10
- @object = @klass.new
11
-
12
- @options = @state_context.validate[0]
13
- end
14
-
15
- def test_should_have_options_configuration
16
- assert_instance_of Hash, @options
17
- end
18
-
19
- def test_should_have_if_option
20
- refute_nil @options[:if]
21
- end
22
-
23
- def test_should_be_false_if_state_is_different
24
- @object.state = nil
25
- refute @options[:if].call(@object)
26
- end
27
-
28
- def test_should_be_true_if_state_matches
29
- assert @options[:if].call(@object)
30
- end
31
- end
@@ -1,28 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class Validateable
4
- class << self
5
- def validate(*args, &block)
6
- args << block if block_given?
7
- args
8
- end
9
- end
10
- end
11
-
12
- class StateContextTest < StateMachinesTest
13
- def setup
14
- @klass = Class.new(Validateable)
15
- @machine = StateMachines::Machine.new(@klass, initial: :parked)
16
- @state = @machine.state :parked
17
-
18
- @state_context = StateMachines::StateContext.new(@state)
19
- end
20
-
21
- def test_should_have_a_machine
22
- assert_equal @machine, @state_context.machine
23
- end
24
-
25
- def test_should_have_a_state
26
- assert_equal @state, @state_context.state
27
- end
28
- end
@@ -1,104 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class StateContextTransitionTest < StateMachinesTest
4
- def setup
5
- @klass = Class.new
6
- @machine = StateMachines::Machine.new(@klass, initial: :parked)
7
- @state = @machine.state :parked
8
-
9
- @state_context = StateMachines::StateContext.new(@state)
10
- end
11
-
12
- def test_should_not_allow_except_to
13
- exception = assert_raises(ArgumentError) { @state_context.transition(except_to: :idling) }
14
- assert_equal 'Unknown key: :except_to. Valid keys are: :from, :to, :on, :if, :unless', exception.message
15
- end
16
-
17
- def test_should_not_allow_except_from
18
- exception = assert_raises(ArgumentError) { @state_context.transition(except_from: :idling) }
19
- assert_equal 'Unknown key: :except_from. Valid keys are: :from, :to, :on, :if, :unless', exception.message
20
- end
21
-
22
- def test_should_not_allow_implicit_transitions
23
- exception = assert_raises(ArgumentError) { @state_context.transition(parked: :idling) }
24
- assert_equal 'Unknown key: :parked. Valid keys are: :from, :to, :on, :if, :unless', exception.message
25
- end
26
-
27
- def test_should_not_allow_except_on
28
- exception = assert_raises(ArgumentError) { @state_context.transition(except_on: :park) }
29
- assert_equal 'Unknown key: :except_on. Valid keys are: :from, :to, :on, :if, :unless', exception.message
30
- end
31
-
32
- def test_should_require_on_event
33
- exception = assert_raises(ArgumentError) { @state_context.transition(to: :idling) }
34
- assert_equal 'Must specify :on event', exception.message
35
- end
36
-
37
- def test_should_not_allow_missing_from_and_to
38
- exception = assert_raises(ArgumentError) { @state_context.transition(on: :ignite) }
39
- assert_equal 'Must specify either :to or :from state', exception.message
40
- end
41
-
42
- def test_should_not_allow_from_and_to
43
- exception = assert_raises(ArgumentError) { @state_context.transition(on: :ignite, from: :parked, to: :idling) }
44
- assert_equal 'Must specify either :to or :from state', exception.message
45
- end
46
-
47
- def test_should_allow_to_state_if_missing_from_state
48
- @state_context.transition(on: :park, from: :parked)
49
- end
50
-
51
- def test_should_allow_from_state_if_missing_to_state
52
- @state_context.transition(on: :ignite, to: :idling)
53
- end
54
-
55
- def test_should_automatically_set_to_option_with_from_state
56
- branch = @state_context.transition(from: :idling, on: :park)
57
- assert_instance_of StateMachines::Branch, branch
58
-
59
- state_requirements = branch.state_requirements
60
- assert_equal 1, state_requirements.length
61
-
62
- from_requirement = state_requirements[0][:to]
63
- assert_instance_of StateMachines::WhitelistMatcher, from_requirement
64
- assert_equal [:parked], from_requirement.values
65
- end
66
-
67
- def test_should_automatically_set_from_option_with_to_state
68
- branch = @state_context.transition(to: :idling, on: :ignite)
69
- assert_instance_of StateMachines::Branch, branch
70
-
71
- state_requirements = branch.state_requirements
72
- assert_equal 1, state_requirements.length
73
-
74
- from_requirement = state_requirements[0][:from]
75
- assert_instance_of StateMachines::WhitelistMatcher, from_requirement
76
- assert_equal [:parked], from_requirement.values
77
- end
78
-
79
- def test_should_allow_if_condition
80
- @state_context.transition(to: :idling, on: :park, if: :seatbelt_on?)
81
- end
82
-
83
- def test_should_allow_unless_condition
84
- @state_context.transition(to: :idling, on: :park, unless: :seatbelt_off?)
85
- end
86
-
87
- def test_should_include_all_transition_states_in_machine_states
88
- @state_context.transition(to: :idling, on: :ignite)
89
-
90
- assert_equal [:parked, :idling], @machine.states.map { |state| state.name }
91
- end
92
-
93
- def test_should_include_all_transition_events_in_machine_events
94
- @state_context.transition(to: :idling, on: :ignite)
95
-
96
- assert_equal [:ignite], @machine.events.map { |event| event.name }
97
- end
98
-
99
- def test_should_allow_multiple_events
100
- @state_context.transition(to: :idling, on: [:ignite, :shift_up])
101
-
102
- assert_equal [:ignite, :shift_up], @machine.events.map { |event| event.name }
103
- end
104
- end
@@ -1,27 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class StateContextWithMatchingTransitionTest < StateMachinesTest
4
- def setup
5
- @klass = Class.new
6
- @machine = StateMachines::Machine.new(@klass, initial: :parked)
7
- @state = @machine.state :parked
8
-
9
- @state_context = StateMachines::StateContext.new(@state)
10
- @state_context.transition(to: :idling, on: :ignite)
11
-
12
- @event = @machine.event(:ignite)
13
- @object = @klass.new
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 'idling', transition.to
25
- assert_equal :ignite, transition.event
26
- end
27
- end
@@ -1,12 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class StateMachineByDefaultTest < StateMachinesTest
4
- def setup
5
- @klass = Class.new
6
- @machine = @klass.state_machine
7
- end
8
-
9
- def test_should_use_state_attribute
10
- assert_equal :state, @machine.attribute
11
- end
12
- end
@@ -1,20 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class StateMachineTest < StateMachinesTest
4
- def setup
5
- @klass = Class.new
6
- end
7
-
8
- def test_should_allow_state_machines_on_any_class
9
- assert @klass.respond_to?(:state_machine)
10
- end
11
-
12
- def test_should_evaluate_block_within_machine_context
13
- responded = false
14
- @klass.state_machine(:state) do
15
- responded = respond_to?(:event)
16
- end
17
-
18
- assert responded
19
- end
20
- end
@@ -1,48 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class TransitionAfterBeingPerformedTest < StateMachinesTest
4
- def setup
5
- @klass = Class.new do
6
- attr_reader :saved, :save_state
7
-
8
- def save
9
- @save_state = state
10
- @saved = true
11
- 1
12
- end
13
- end
14
-
15
- @machine = StateMachines::Machine.new(@klass, action: :save)
16
- @machine.state :parked, :idling
17
- @machine.event :ignite
18
-
19
- @object = @klass.new
20
- @object.state = 'parked'
21
- @transition = StateMachines::Transition.new(@object, @machine, :ignite, :parked, :idling)
22
- @result = @transition.perform
23
- end
24
-
25
- def test_should_have_empty_args
26
- assert_equal [], @transition.args
27
- end
28
-
29
- def test_should_have_a_result
30
- assert_equal 1, @transition.result
31
- end
32
-
33
- def test_should_be_successful
34
- assert_equal true, @result
35
- end
36
-
37
- def test_should_change_the_current_state
38
- assert_equal 'idling', @object.state
39
- end
40
-
41
- def test_should_run_the_action
42
- assert @object.saved
43
- end
44
-
45
- def test_should_run_the_action_after_saving_the_state
46
- assert_equal 'idling', @object.save_state
47
- end
48
- end
@@ -1,46 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class TransitionAfterBeingPersistedTest < StateMachinesTest
4
- def setup
5
- @klass = Class.new
6
- @machine = StateMachines::Machine.new(@klass, action: :save)
7
- @machine.state :parked, :idling
8
- @machine.event :ignite
9
-
10
- @object = @klass.new
11
- @object.state = 'parked'
12
-
13
- @transition = StateMachines::Transition.new(@object, @machine, :ignite, :parked, :idling)
14
- @transition.persist
15
- end
16
-
17
- def test_should_update_state_value
18
- assert_equal 'idling', @object.state
19
- end
20
-
21
- def test_should_not_change_from_state
22
- assert_equal 'parked', @transition.from
23
- end
24
-
25
- def test_should_not_change_to_state
26
- assert_equal 'idling', @transition.to
27
- end
28
-
29
- def test_should_not_be_able_to_persist_twice
30
- @object.state = 'parked'
31
- @transition.persist
32
- assert_equal 'parked', @object.state
33
- end
34
-
35
- def test_should_be_able_to_persist_again_after_resetting
36
- @object.state = 'parked'
37
- @transition.reset
38
- @transition.persist
39
- assert_equal 'idling', @object.state
40
- end
41
-
42
- def test_should_revert_to_from_state_on_rollback
43
- @transition.rollback
44
- assert_equal 'parked', @object.state
45
- end
46
- end
@@ -1,35 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class TransitionAfterBeingRolledBackTest < StateMachinesTest
4
- def setup
5
- @klass = Class.new
6
- @machine = StateMachines::Machine.new(@klass, action: :save)
7
- @machine.state :parked, :idling
8
- @machine.event :ignite
9
-
10
- @object = @klass.new
11
- @object.state = 'parked'
12
-
13
- @transition = StateMachines::Transition.new(@object, @machine, :ignite, :parked, :idling)
14
- @object.state = 'idling'
15
-
16
- @transition.rollback
17
- end
18
-
19
- def test_should_update_state_value_to_from_state
20
- assert_equal 'parked', @object.state
21
- end
22
-
23
- def test_should_not_change_from_state
24
- assert_equal 'parked', @transition.from
25
- end
26
-
27
- def test_should_not_change_to_state
28
- assert_equal 'idling', @transition.to
29
- end
30
-
31
- def test_should_still_be_able_to_persist
32
- @transition.persist
33
- assert_equal 'idling', @object.state
34
- end
35
- end
@@ -1,52 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class TransitionEqualityTest < StateMachinesTest
4
- def setup
5
- @klass = Class.new
6
-
7
- @machine = StateMachines::Machine.new(@klass)
8
- @machine.state :parked, :idling
9
- @machine.event :ignite
10
-
11
- @object = @klass.new
12
- @object.state = 'parked'
13
- @transition = StateMachines::Transition.new(@object, @machine, :ignite, :parked, :idling)
14
- end
15
-
16
- def test_should_be_equal_with_same_properties
17
- transition = StateMachines::Transition.new(@object, @machine, :ignite, :parked, :idling)
18
- assert_equal transition, @transition
19
- end
20
-
21
- def test_should_not_be_equal_with_different_machines
22
- machine = StateMachines::Machine.new(@klass, :status, namespace: :other)
23
- machine.state :parked, :idling
24
- machine.event :ignite
25
- transition = StateMachines::Transition.new(@object, machine, :ignite, :parked, :idling)
26
-
27
- refute_equal transition, @transition
28
- end
29
-
30
- def test_should_not_be_equal_with_different_objects
31
- transition = StateMachines::Transition.new(@klass.new, @machine, :ignite, :parked, :idling)
32
- refute_equal transition, @transition
33
- end
34
-
35
- def test_should_not_be_equal_with_different_event_names
36
- @machine.event :park
37
- transition = StateMachines::Transition.new(@object, @machine, :park, :parked, :idling)
38
- refute_equal transition, @transition
39
- end
40
-
41
- def test_should_not_be_equal_with_different_from_state_names
42
- @machine.state :first_gear
43
- transition = StateMachines::Transition.new(@object, @machine, :ignite, :first_gear, :idling)
44
- refute_equal transition, @transition
45
- end
46
-
47
- def test_should_not_be_equal_with_different_to_state_names
48
- @machine.state :first_gear
49
- transition = StateMachines::Transition.new(@object, @machine, :ignite, :idling, :first_gear)
50
- refute_equal transition, @transition
51
- end
52
- end
@@ -1,18 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class TransitionLoopbackTest < StateMachinesTest
4
- def setup
5
- @klass = Class.new
6
- @machine = StateMachines::Machine.new(@klass)
7
- @machine.state :parked
8
- @machine.event :park
9
-
10
- @object = @klass.new
11
- @object.state = 'parked'
12
- @transition = StateMachines::Transition.new(@object, @machine, :park, :parked, :parked)
13
- end
14
-
15
- def test_should_be_loopback
16
- assert @transition.loopback?
17
- end
18
- end