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,24 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class MachineWithCustomInitializeTest < StateMachinesTest
4
- def setup
5
- @klass = Class.new do
6
- def initialize(state = nil, options = {})
7
- @state = state
8
- initialize_state_machines(options)
9
- end
10
- end
11
- @machine = StateMachines::Machine.new(@klass, initial: :parked)
12
- @object = @klass.new
13
- end
14
-
15
- def test_should_initialize_state
16
- assert_equal 'parked', @object.state
17
- end
18
-
19
- def test_should_allow_custom_options
20
- @machine.state :idling
21
- @object = @klass.new('idling', static: :force)
22
- assert_equal 'parked', @object.state
23
- end
24
- end
@@ -1,72 +0,0 @@
1
- require_relative '../../test_helper'
2
- require_relative '../../../test/files/models/vehicle'
3
-
4
- class MachineWithCustomIntegrationTest < StateMachinesTest
5
- module Custom
6
- include StateMachines::Integrations::Base
7
-
8
- def self.matching_ancestors
9
- [Vehicle]
10
- end
11
- end
12
-
13
- def setup
14
- StateMachines::Integrations.register(MachineWithCustomIntegrationTest::Custom)
15
-
16
- @klass = Vehicle
17
- end
18
-
19
- def test_should_be_extended_by_the_integration_if_explicit
20
- machine = StateMachines::Machine.new(@klass, integration: :custom)
21
- assert((class << machine; ancestors; end).include?(MachineWithCustomIntegrationTest::Custom))
22
- end
23
-
24
- def test_should_not_be_extended_by_the_integration_if_implicit_but_not_available
25
- MachineWithCustomIntegrationTest::Custom.class_eval do
26
- class << self; remove_method :matching_ancestors; end
27
- def self.matching_ancestors
28
- []
29
- end
30
- end
31
-
32
- machine = StateMachines::Machine.new(@klass)
33
- assert(!(class << machine; ancestors; end).include?(MachineWithCustomIntegrationTest::Custom))
34
- end
35
-
36
- def test_should_not_be_extended_by_the_integration_if_implicit_but_not_matched
37
- MachineWithCustomIntegrationTest::Custom.class_eval do
38
- class << self; remove_method :matching_ancestors; end
39
- def self.matching_ancestors
40
- []
41
- end
42
- end
43
-
44
- machine = StateMachines::Machine.new(@klass)
45
- assert(!(class << machine; ancestors; end).include?(MachineWithCustomIntegrationTest::Custom))
46
- end
47
-
48
- def test_should_be_extended_by_the_integration_if_implicit_and_available_and_matches
49
- machine = StateMachines::Machine.new(@klass)
50
- assert((class << machine; ancestors; end).include?(MachineWithCustomIntegrationTest::Custom))
51
- end
52
-
53
- def test_should_not_be_extended_by_the_integration_if_nil
54
- machine = StateMachines::Machine.new(@klass, integration: nil)
55
- assert(!(class << machine; ancestors; end).include?(MachineWithCustomIntegrationTest::Custom))
56
- end
57
-
58
- def test_should_not_be_extended_by_the_integration_if_false
59
- machine = StateMachines::Machine.new(@klass, integration: false)
60
- assert(!(class << machine; ancestors; end).include?(MachineWithCustomIntegrationTest::Custom))
61
- end
62
-
63
- def teardown
64
- StateMachines::Integrations.reset
65
- MachineWithCustomIntegrationTest::Custom.class_eval do
66
- class << self; remove_method :matching_ancestors; end
67
- def self.matching_ancestors
68
- [Vehicle]
69
- end
70
- end
71
- end
72
- end
@@ -1,39 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class MachineWithCustomInvalidationTest < StateMachinesTest
4
- module Custom
5
- include StateMachines::Integrations::Base
6
-
7
- def invalidate(object, _attribute, message, values = [])
8
- object.error = generate_message(message, values)
9
- end
10
- end
11
-
12
- def setup
13
- StateMachines::Integrations.register(MachineWithCustomInvalidationTest::Custom)
14
-
15
- @klass = Class.new do
16
- attr_accessor :error
17
- end
18
-
19
- @machine = StateMachines::Machine.new(@klass, integration: :custom, messages: {invalid_transition: 'cannot %s'})
20
- @machine.state :parked
21
-
22
- @object = @klass.new
23
- @object.state = 'parked'
24
- end
25
-
26
- def test_generate_custom_message
27
- assert_equal 'cannot park', @machine.generate_message(:invalid_transition, [[:event, :park]])
28
- end
29
-
30
- def test_use_custom_message
31
- @machine.invalidate(@object, :state, :invalid_transition, [[:event, 'park']])
32
- assert_equal 'cannot park', @object.error
33
- end
34
-
35
- def teardown
36
- StateMachines::Integrations.reset
37
- end
38
- end
39
-
@@ -1,57 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class MachineWithCustomNameTest < StateMachinesTest
4
- def setup
5
- @klass = Class.new
6
- @machine = StateMachines::Machine.new(@klass, :status)
7
- @object = @klass.new
8
- end
9
-
10
- def test_should_use_custom_name
11
- assert_equal :status, @machine.name
12
- end
13
-
14
- def test_should_use_custom_name_for_attribute
15
- assert_equal :status, @machine.attribute
16
- end
17
-
18
- def test_should_prefix_custom_attributes_with_custom_name
19
- assert_equal :status_event, @machine.attribute(:event)
20
- end
21
-
22
- def test_should_define_a_reader_attribute_for_the_attribute
23
- assert @object.respond_to?(:status)
24
- end
25
-
26
- def test_should_define_a_writer_attribute_for_the_attribute
27
- assert @object.respond_to?(:status=)
28
- end
29
-
30
- def test_should_define_a_predicate_for_the_attribute
31
- assert @object.respond_to?(:status?)
32
- end
33
-
34
- def test_should_define_a_name_reader_for_the_attribute
35
- assert @object.respond_to?(:status_name)
36
- end
37
-
38
- def test_should_define_an_event_reader_for_the_attribute
39
- assert @object.respond_to?(:status_events)
40
- end
41
-
42
- def test_should_define_a_transition_reader_for_the_attribute
43
- assert @object.respond_to?(:status_transitions)
44
- end
45
-
46
- def test_should_define_an_event_runner_for_the_attribute
47
- assert @object.respond_to?(:fire_status_event)
48
- end
49
-
50
- def test_should_define_a_human_attribute_name_reader_for_the_attribute
51
- assert @klass.respond_to?(:human_status_name)
52
- end
53
-
54
- def test_should_define_a_human_event_name_reader_for_the_attribute
55
- assert @klass.respond_to?(:human_status_event_name)
56
- end
57
- end
@@ -1,52 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class MachineWithCustomPluralTest < StateMachinesTest
4
- def setup
5
- @integration = Module.new do
6
- include StateMachines::Integrations::Base
7
-
8
- class << self; attr_accessor :with_scopes, :without_scopes; end
9
- @with_scopes = []
10
- @without_scopes = []
11
-
12
- def create_with_scope(name)
13
- MachineWithCustomPluralTest::Custom.with_scopes << name
14
- lambda {}
15
- end
16
-
17
- def create_without_scope(name)
18
- MachineWithCustomPluralTest::Custom.without_scopes << name
19
- lambda {}
20
- end
21
- end
22
-
23
- MachineWithCustomPluralTest.const_set('Custom', @integration)
24
- StateMachines::Integrations.register(MachineWithCustomPluralTest::Custom)
25
- end
26
-
27
- def test_should_define_a_singular_and_plural_with_scope
28
- StateMachines::Machine.new(Class.new, integration: :custom, plural: 'staties')
29
- assert_equal %w(with_state with_staties), @integration.with_scopes
30
- end
31
-
32
- def test_should_define_a_singular_and_plural_without_scope
33
- StateMachines::Machine.new(Class.new, integration: :custom, plural: 'staties')
34
- assert_equal %w(without_state without_staties), @integration.without_scopes
35
- end
36
-
37
- def test_should_define_single_with_scope_if_singular_same_as_plural
38
- StateMachines::Machine.new(Class.new, integration: :custom, plural: 'state')
39
- assert_equal %w(with_state), @integration.with_scopes
40
- end
41
-
42
- def test_should_define_single_without_scope_if_singular_same_as_plural
43
- StateMachines::Machine.new(Class.new, integration: :custom, plural: 'state')
44
- assert_equal %w(without_state), @integration.without_scopes
45
- end
46
-
47
- def teardown
48
- StateMachines::Integrations.reset
49
- MachineWithCustomPluralTest.send(:remove_const, 'Custom')
50
- end
51
- end
52
-
@@ -1,65 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class MachineWithDynamicInitialStateTest < StateMachinesTest
4
- def setup
5
- @klass = Class.new do
6
- attr_accessor :initial_state
7
- end
8
- @machine = StateMachines::Machine.new(@klass, initial: lambda { |object| object.initial_state || :default })
9
- @machine.state :parked, :idling, :default
10
- @object = @klass.new
11
- end
12
-
13
- def test_should_have_dynamic_initial_state
14
- assert @machine.dynamic_initial_state?
15
- end
16
-
17
- def test_should_use_the_record_for_determining_the_initial_state
18
- @object.initial_state = :parked
19
- assert_equal :parked, @machine.initial_state(@object).name
20
-
21
- @object.initial_state = :idling
22
- assert_equal :idling, @machine.initial_state(@object).name
23
- end
24
-
25
- def test_should_write_to_attribute_when_initializing_state
26
- object = @klass.allocate
27
- object.initial_state = :parked
28
- @machine.initialize_state(object)
29
- assert_equal 'parked', object.state
30
- end
31
-
32
- def test_should_set_initial_state_on_created_object
33
- assert_equal 'default', @object.state
34
- end
35
-
36
- def test_should_not_set_initial_state_even_if_not_empty
37
- @klass.class_eval do
38
- def initialize(_attributes = {})
39
- self.state = 'parked'
40
- super()
41
- end
42
- end
43
- object = @klass.new
44
- assert_equal 'parked', object.state
45
- end
46
-
47
- def test_should_set_initial_state_after_initialization
48
- base = Class.new do
49
- attr_accessor :state_on_init
50
-
51
- def initialize
52
- self.state_on_init = state
53
- end
54
- end
55
- klass = Class.new(base)
56
- machine = StateMachines::Machine.new(klass, initial: lambda { |_object| :parked })
57
- machine.state :parked
58
-
59
- assert_nil klass.new.state_on_init
60
- end
61
-
62
- def test_should_not_be_included_in_known_states
63
- assert_equal [:parked, :idling, :default], @machine.states.map { |state| state.name }
64
- end
65
- end
@@ -1,41 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class MachineWithEventMatchersTest < StateMachinesTest
4
- def setup
5
- @klass = Class.new
6
- @machine = StateMachines::Machine.new(@klass)
7
- end
8
-
9
- def test_should_empty_array_for_all_matcher
10
- assert_equal [], @machine.event(StateMachines::AllMatcher.instance)
11
- end
12
-
13
- def test_should_return_referenced_events_for_blacklist_matcher
14
- assert_instance_of StateMachines::Event, @machine.event(StateMachines::BlacklistMatcher.new([:park]))
15
- end
16
-
17
- def test_should_not_allow_configurations
18
- exception = assert_raises(ArgumentError) { @machine.event(StateMachines::BlacklistMatcher.new([:park]), human_name: 'Park') }
19
- assert_equal 'Cannot configure events when using matchers (using {:human_name=>"Park"})', exception.message
20
- end
21
-
22
- def test_should_track_referenced_events
23
- @machine.event(StateMachines::BlacklistMatcher.new([:park]))
24
- assert_equal [:park], @machine.events.map { |event| event.name }
25
- end
26
-
27
- def test_should_eval_context_for_matching_events
28
- contexts_run = []
29
- @machine.event(StateMachines::BlacklistMatcher.new([:park])) { contexts_run << name }
30
-
31
- @machine.event :park
32
- assert_equal [], contexts_run
33
-
34
- @machine.event :ignite
35
- assert_equal [:ignite], contexts_run
36
-
37
- @machine.event :shift_up, :shift_down
38
- assert_equal [:ignite, :shift_up, :shift_down], contexts_run
39
- end
40
- end
41
-
@@ -1,52 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class MachineWithEventsTest < StateMachinesTest
4
- def setup
5
- @klass = Class.new
6
- @machine = StateMachines::Machine.new(@klass)
7
- end
8
-
9
- def test_should_return_the_created_event
10
- assert_instance_of StateMachines::Event, @machine.event(:ignite)
11
- end
12
-
13
- def test_should_create_event_with_given_name
14
- event = @machine.event(:ignite) {}
15
- assert_equal :ignite, event.name
16
- end
17
-
18
- def test_should_evaluate_block_within_event_context
19
- responded = false
20
- @machine.event :ignite do
21
- responded = respond_to?(:transition)
22
- end
23
-
24
- assert responded
25
- end
26
-
27
- def test_should_be_aliased_as_on
28
- event = @machine.on(:ignite) {}
29
- assert_equal :ignite, event.name
30
- end
31
-
32
- def test_should_have_events
33
- event = @machine.event(:ignite)
34
- assert_equal [event], @machine.events.to_a
35
- end
36
-
37
- def test_should_allow_human_state_name_lookup
38
- @machine.event(:ignite)
39
- assert_equal 'ignite', @klass.human_state_event_name(:ignite)
40
- end
41
-
42
- def test_should_raise_exception_on_invalid_human_state_event_name_lookup
43
- exception = assert_raises(IndexError) { @klass.human_state_event_name(:invalid) }
44
- assert_equal ':invalid is an invalid name', exception.message
45
- end
46
-
47
- def test_should_raise_exception_if_conflicting_type_used_for_name
48
- @machine.event :park
49
- exception = assert_raises(ArgumentError) { @machine.event 'ignite' }
50
- assert_equal '"ignite" event defined as String, :park defined as Symbol; all events must be consistent', exception.message
51
- end
52
- end
@@ -1,18 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class MachineWithEventsWithCustomHumanNamesTest < StateMachinesTest
4
- def setup
5
- @klass = Class.new
6
- @machine = StateMachines::Machine.new(@klass)
7
- @event = @machine.event(:ignite, human_name: 'start')
8
- end
9
-
10
- def test_should_use_custom_human_name
11
- assert_equal 'start', @event.human_name
12
- end
13
-
14
- def test_should_allow_human_state_name_lookup
15
- assert_equal 'start', @klass.human_state_event_name(:ignite)
16
- end
17
- end
18
-
@@ -1,37 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class MachineWithEventsWithTransitionsTest < StateMachinesTest
4
- def setup
5
- @klass = Class.new
6
- @machine = StateMachines::Machine.new(@klass, initial: :parked)
7
- @event = @machine.event(:ignite) do
8
- transition parked: :idling
9
- transition stalled: :idling
10
- end
11
- end
12
-
13
- def test_should_have_events
14
- assert_equal [@event], @machine.events.to_a
15
- end
16
-
17
- def test_should_track_states_defined_in_event_transitions
18
- assert_equal [:parked, :idling, :stalled], @machine.states.map { |state| state.name }
19
- end
20
-
21
- def test_should_not_duplicate_states_defined_in_multiple_event_transitions
22
- @machine.event :park do
23
- transition idling: :parked
24
- end
25
-
26
- assert_equal [:parked, :idling, :stalled], @machine.states.map { |state| state.name }
27
- end
28
-
29
- def test_should_track_state_from_new_events
30
- @machine.event :shift_up do
31
- transition idling: :first_gear
32
- end
33
-
34
- assert_equal [:parked, :idling, :stalled, :first_gear], @machine.states.map { |state| state.name }
35
- end
36
- end
37
-
@@ -1,17 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class MachineWithExistingEventTest < StateMachinesTest
4
- def setup
5
- @machine = StateMachines::Machine.new(Class.new)
6
- @event = @machine.event(:ignite)
7
- @same_event = @machine.event(:ignite)
8
- end
9
-
10
- def test_should_not_create_new_event
11
- assert_same @event, @same_event
12
- end
13
-
14
- def test_should_allow_accessing_event_without_block
15
- assert_equal @event, @machine.event(:ignite)
16
- end
17
- end
@@ -1,20 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class MachineWithExistingMachinesOnOwnerClassTest < StateMachinesTest
4
- def setup
5
- @klass = Class.new
6
- @machine = StateMachines::Machine.new(@klass, initial: :parked)
7
- @second_machine = StateMachines::Machine.new(@klass, :status, initial: :idling)
8
- @object = @klass.new
9
- end
10
-
11
- def test_should_track_each_state_machine
12
- expected = { state: @machine, status: @second_machine }
13
- assert_equal expected, @klass.state_machines
14
- end
15
-
16
- def test_should_initialize_state_for_both_machines
17
- assert_equal 'parked', @object.state
18
- assert_equal 'idling', @object.status
19
- end
20
- end
@@ -1,71 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class MachineWithExistingMachinesWithSameAttributesOnOwnerClassTest < StateMachinesTest
4
- def setup
5
- @klass = Class.new
6
- @machine = StateMachines::Machine.new(@klass, initial: :parked)
7
- @second_machine = StateMachines::Machine.new(@klass, :public_state, initial: :idling, attribute: :state)
8
- @object = @klass.new
9
- end
10
-
11
- def test_should_track_each_state_machine
12
- expected = { state: @machine, public_state: @second_machine }
13
- assert_equal expected, @klass.state_machines
14
- end
15
-
16
- def test_should_write_to_state_only_once
17
- @klass.class_eval do
18
- attr_reader :write_count
19
-
20
- def state=(_value)
21
- @write_count ||= 0
22
- @write_count += 1
23
- end
24
- end
25
- object = @klass.new
26
-
27
- assert_equal 1, object.write_count
28
- end
29
-
30
- def test_should_initialize_based_on_first_machine
31
- assert_equal 'parked', @object.state
32
- end
33
-
34
- def test_should_not_allow_second_machine_to_initialize_state
35
- @object.state = nil
36
- @second_machine.initialize_state(@object)
37
- assert_nil @object.state
38
- end
39
-
40
- def test_should_allow_transitions_on_both_machines
41
- @machine.event :ignite do
42
- transition parked: :idling
43
- end
44
-
45
- @second_machine.event :park do
46
- transition idling: :parked
47
- end
48
-
49
- @object.ignite
50
- assert_equal 'idling', @object.state
51
-
52
- @object.park
53
- assert_equal 'parked', @object.state
54
- end
55
-
56
- def test_should_copy_new_states_to_sibling_machines
57
- @first_gear = @machine.state :first_gear
58
- assert_equal @first_gear, @second_machine.state(:first_gear)
59
-
60
- @second_gear = @second_machine.state :second_gear
61
- assert_equal @second_gear, @machine.state(:second_gear)
62
- end
63
-
64
- def test_should_copy_all_existing_states_to_new_machines
65
- third_machine = StateMachines::Machine.new(@klass, :protected_state, attribute: :state)
66
-
67
- assert_equal @machine.state(:parked), third_machine.state(:parked)
68
- assert_equal @machine.state(:idling), third_machine.state(:idling)
69
- end
70
- end
71
-
@@ -1,31 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class MachineWithExistingMachinesWithSameAttributesOnOwnerSubclassTest < StateMachinesTest
4
- def setup
5
- @klass = Class.new
6
- @machine = StateMachines::Machine.new(@klass, initial: :parked)
7
- @second_machine = StateMachines::Machine.new(@klass, :public_state, initial: :idling, attribute: :state)
8
-
9
- @subclass = Class.new(@klass)
10
- @object = @subclass.new
11
- end
12
-
13
- def test_should_not_copy_sibling_machines_to_subclass_after_initialization
14
- @subclass.state_machine(:state) {}
15
- assert_equal @klass.state_machine(:public_state), @subclass.state_machine(:public_state)
16
- end
17
-
18
- def test_should_copy_sibling_machines_to_subclass_after_new_state
19
- subclass_machine = @subclass.state_machine(:state) {}
20
- subclass_machine.state :first_gear
21
- refute_equal @klass.state_machine(:public_state), @subclass.state_machine(:public_state)
22
- end
23
-
24
- def test_should_copy_new_states_to_sibling_machines
25
- subclass_machine = @subclass.state_machine(:state) {}
26
- @first_gear = subclass_machine.state :first_gear
27
-
28
- second_subclass_machine = @subclass.state_machine(:public_state)
29
- assert_equal @first_gear, second_subclass_machine.state(:first_gear)
30
- end
31
- end
@@ -1,27 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class MachineWithExistingStateTest < StateMachinesTest
4
- def setup
5
- @klass = Class.new
6
- @machine = StateMachines::Machine.new(@klass)
7
- @state = @machine.state :parked
8
- @same_state = @machine.state :parked, value: 1
9
- end
10
-
11
- def test_should_not_create_a_new_state
12
- assert_same @state, @same_state
13
- end
14
-
15
- def test_should_update_attributes
16
- assert_equal 1, @state.value
17
- end
18
-
19
- def test_should_no_longer_be_able_to_look_up_state_by_original_value
20
- assert_nil @machine.states['parked', :value]
21
- end
22
-
23
- def test_should_be_able_to_look_up_state_by_new_value
24
- assert_equal @state, @machine.states[1, :value]
25
- end
26
- end
27
-
@@ -1,48 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class MachineWithFailureCallbacksTest < StateMachinesTest
4
- def setup
5
- @klass = Class.new do
6
- attr_accessor :callbacks
7
- end
8
-
9
- @machine = StateMachines::Machine.new(@klass, initial: :parked)
10
- @event = @machine.event :ignite
11
-
12
- @object = @klass.new
13
- @object.callbacks = []
14
- end
15
-
16
- def test_should_raise_exception_if_implicit_option_specified
17
- exception = assert_raises(ArgumentError) { @machine.after_failure invalid: :valid, do: lambda {} }
18
- assert_equal 'Unknown key: :invalid. Valid keys are: :on, :do, :if, :unless', exception.message
19
- end
20
-
21
- def test_should_raise_exception_if_method_not_specified
22
- exception = assert_raises(ArgumentError) { @machine.after_failure on: :ignite }
23
- assert_equal 'Method(s) for callback must be specified', exception.message
24
- end
25
-
26
- def test_should_invoke_callbacks_during_failed_transition
27
- @machine.after_failure lambda { |object| object.callbacks << 'failure' }
28
-
29
- @event.fire(@object)
30
- assert_equal %w(failure), @object.callbacks
31
- end
32
-
33
- def test_should_allow_multiple_callbacks
34
- @machine.after_failure lambda { |object| object.callbacks << 'failure1' }, lambda { |object| object.callbacks << 'failure2' }
35
-
36
- @event.fire(@object)
37
- assert_equal %w(failure1 failure2), @object.callbacks
38
- end
39
-
40
- def test_should_allow_multiple_callbacks_with_requirements
41
- @machine.after_failure lambda { |object| object.callbacks << 'failure_ignite1' }, lambda { |object| object.callbacks << 'failure_ignite2' }, on: :ignite
42
- @machine.after_failure lambda { |object| object.callbacks << 'failure_park1' }, lambda { |object| object.callbacks << 'failure_park2' }, on: :park
43
-
44
- @event.fire(@object)
45
- assert_equal %w(failure_ignite1 failure_ignite2), @object.callbacks
46
- end
47
- end
48
-