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,160 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class MachineByDefaultTest < StateMachinesTest
4
- def setup
5
- @klass = Class.new
6
- @machine = StateMachines::Machine.new(@klass)
7
- @object = @klass.new
8
- end
9
-
10
- def test_should_have_an_owner_class
11
- assert_equal @klass, @machine.owner_class
12
- end
13
-
14
- def test_should_have_a_name
15
- assert_equal :state, @machine.name
16
- end
17
-
18
- def test_should_have_an_attribute
19
- assert_equal :state, @machine.attribute
20
- end
21
-
22
- def test_should_prefix_custom_attributes_with_attribute
23
- assert_equal :state_event, @machine.attribute(:event)
24
- end
25
-
26
- def test_should_have_an_initial_state
27
- refute_nil @machine.initial_state(@object)
28
- end
29
-
30
- def test_should_have_a_nil_initial_state
31
- assert_nil @machine.initial_state(@object).value
32
- end
33
-
34
- def test_should_not_have_any_events
35
- refute @machine.events.any?
36
- end
37
-
38
- def test_should_not_have_any_before_callbacks
39
- assert @machine.callbacks[:before].empty?
40
- end
41
-
42
- def test_should_not_have_any_after_callbacks
43
- assert @machine.callbacks[:after].empty?
44
- end
45
-
46
- def test_should_not_have_any_failure_callbacks
47
- assert @machine.callbacks[:failure].empty?
48
- end
49
-
50
- def test_should_not_have_an_action
51
- assert_nil @machine.action
52
- end
53
-
54
- def test_should_use_tranactions
55
- assert_equal true, @machine.use_transactions
56
- end
57
-
58
- def test_should_not_have_a_namespace
59
- assert_nil @machine.namespace
60
- end
61
-
62
- def test_should_have_a_nil_state
63
- assert_equal [nil], @machine.states.keys
64
- end
65
-
66
- def test_should_set_initial_on_nil_state
67
- assert @machine.state(nil).initial
68
- end
69
-
70
- def test_should_generate_default_messages
71
- assert_equal 'is invalid', @machine.generate_message(:invalid)
72
- assert_equal 'cannot transition when parked', @machine.generate_message(:invalid_event, [[:state, :parked]])
73
- assert_equal 'cannot transition via "park"', @machine.generate_message(:invalid_transition, [[:event, :park]])
74
- end
75
-
76
- def test_should_define_a_reader_attribute_for_the_attribute
77
- assert @object.respond_to?(:state)
78
- end
79
-
80
- def test_should_define_a_writer_attribute_for_the_attribute
81
- assert @object.respond_to?(:state=)
82
- end
83
-
84
- def test_should_define_a_predicate_for_the_attribute
85
- assert @object.respond_to?(:state?)
86
- end
87
-
88
- def test_should_define_a_name_reader_for_the_attribute
89
- assert @object.respond_to?(:state_name)
90
- end
91
-
92
- def test_should_define_an_event_reader_for_the_attribute
93
- assert @object.respond_to?(:state_events)
94
- end
95
-
96
- def test_should_define_a_transition_reader_for_the_attribute
97
- assert @object.respond_to?(:state_transitions)
98
- end
99
-
100
- def test_should_define_a_path_reader_for_the_attribute
101
- assert @object.respond_to?(:state_paths)
102
- end
103
-
104
- def test_should_define_an_event_runner_for_the_attribute
105
- assert @object.respond_to?(:fire_state_event)
106
- end
107
-
108
- def test_should_not_define_an_event_attribute_reader
109
- refute @object.respond_to?(:state_event)
110
- end
111
-
112
- def test_should_not_define_an_event_attribute_writer
113
- refute @object.respond_to?(:state_event=)
114
- end
115
-
116
- def test_should_not_define_an_event_transition_attribute_reader
117
- refute @object.respond_to?(:state_event_transition)
118
- end
119
-
120
- def test_should_not_define_an_event_transition_attribute_writer
121
- refute @object.respond_to?(:state_event_transition=)
122
- end
123
-
124
- def test_should_define_a_human_attribute_name_reader_for_the_attribute
125
- assert @klass.respond_to?(:human_state_name)
126
- end
127
-
128
- def test_should_define_a_human_event_name_reader_for_the_attribute
129
- assert @klass.respond_to?(:human_state_event_name)
130
- end
131
-
132
- def test_should_not_define_singular_with_scope
133
- refute @klass.respond_to?(:with_state)
134
- end
135
-
136
- def test_should_not_define_singular_without_scope
137
- refute @klass.respond_to?(:without_state)
138
- end
139
-
140
- def test_should_not_define_plural_with_scope
141
- refute @klass.respond_to?(:with_states)
142
- end
143
-
144
- def test_should_not_define_plural_without_scope
145
- refute @klass.respond_to?(:without_states)
146
- end
147
-
148
- def test_should_extend_owner_class_with_class_methods
149
- assert((class << @klass; ancestors; end).include?(StateMachines::ClassMethods))
150
- end
151
-
152
- def test_should_include_instance_methods_in_owner_class
153
- assert @klass.included_modules.include?(StateMachines::InstanceMethods)
154
- end
155
-
156
- def test_should_define_state_machines_reader
157
- expected = { state: @machine }
158
- assert_equal expected, @klass.state_machines
159
- end
160
- end
@@ -1,17 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class MachineFinderCustomOptionsTest < StateMachinesTest
4
- def setup
5
- @klass = Class.new
6
- @machine = StateMachines::Machine.find_or_create(@klass, :status, initial: :parked)
7
- @object = @klass.new
8
- end
9
-
10
- def test_should_use_custom_attribute
11
- assert_equal :status, @machine.attribute
12
- end
13
-
14
- def test_should_set_custom_initial_state
15
- assert_equal :parked, @machine.initial_state(@object).name
16
- end
17
- end
@@ -1,85 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class MachineFinderWithExistingMachineOnSuperclassTest < StateMachinesTest
4
- module Custom
5
- include StateMachines::Integrations::Base
6
-
7
- def self.matches?(_klass)
8
- false
9
- end
10
- end
11
-
12
- def setup
13
- StateMachines::Integrations.register(MachineFinderWithExistingMachineOnSuperclassTest::Custom)
14
-
15
- @base_class = Class.new
16
- @base_machine = StateMachines::Machine.new(@base_class, :status, action: :save, integration: :custom)
17
- @base_machine.event(:ignite) {}
18
- @base_machine.before_transition(-> {})
19
- @base_machine.after_transition(-> {})
20
- @base_machine.around_transition(-> {})
21
-
22
- @klass = Class.new(@base_class)
23
- @machine = StateMachines::Machine.find_or_create(@klass, :status) {}
24
- end
25
-
26
- def test_should_accept_a_block
27
- called = false
28
- StateMachines::Machine.find_or_create(Class.new(@base_class)) do
29
- called = respond_to?(:event)
30
- end
31
-
32
- assert called
33
- end
34
-
35
- def test_should_not_create_a_new_machine_if_no_block_or_options
36
- machine = StateMachines::Machine.find_or_create(Class.new(@base_class), :status)
37
-
38
- assert_same machine, @base_machine
39
- end
40
-
41
- def test_should_create_a_new_machine_if_given_options
42
- machine = StateMachines::Machine.find_or_create(@klass, :status, initial: :parked)
43
-
44
- refute_nil machine
45
- refute_same machine, @base_machine
46
- end
47
-
48
- def test_should_create_a_new_machine_if_given_block
49
- refute_nil @machine
50
- refute_same @machine, @base_machine
51
- end
52
-
53
- def test_should_copy_the_base_attribute
54
- assert_equal :status, @machine.attribute
55
- end
56
-
57
- def test_should_copy_the_base_configuration
58
- assert_equal :save, @machine.action
59
- end
60
-
61
- def test_should_copy_events
62
- # Can't assert equal arrays since their machines change
63
- assert_equal 1, @machine.events.length
64
- end
65
-
66
- def test_should_copy_before_callbacks
67
- assert_equal @base_machine.callbacks[:before], @machine.callbacks[:before]
68
- end
69
-
70
- def test_should_copy_after_transitions
71
- assert_equal @base_machine.callbacks[:after], @machine.callbacks[:after]
72
- end
73
-
74
- def test_should_use_the_same_integration
75
- class_ancestors = class << @machine
76
- ancestors
77
- end
78
-
79
- assert(class_ancestors.include?(MachineFinderWithExistingMachineOnSuperclassTest::Custom))
80
- end
81
-
82
- def teardown
83
- StateMachines::Integrations.reset
84
- end
85
- end
@@ -1,23 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class MachineFinderWithExistingOnSameClassTest < StateMachinesTest
4
- def setup
5
- @klass = Class.new
6
- @existing_machine = StateMachines::Machine.new(@klass)
7
- @machine = StateMachines::Machine.find_or_create(@klass)
8
- end
9
-
10
- def test_should_accept_a_block
11
- called = false
12
- StateMachines::Machine.find_or_create(@klass) do
13
- called = respond_to?(:event)
14
- end
15
-
16
- assert called
17
- end
18
-
19
- def test_should_not_create_a_new_machine
20
- assert_same @machine, @existing_machine
21
- end
22
- end
23
-
@@ -1,25 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class MachineFinderWithoutExistingMachineTest < StateMachinesTest
4
- def setup
5
- @klass = Class.new
6
- @machine = StateMachines::Machine.find_or_create(@klass)
7
- end
8
-
9
- def test_should_accept_a_block
10
- called = false
11
- StateMachines::Machine.find_or_create(Class.new) do
12
- called = respond_to?(:event)
13
- end
14
-
15
- assert called
16
- end
17
-
18
- def test_should_create_a_new_machine
19
- refute_nil @machine
20
- end
21
-
22
- def test_should_use_default_state
23
- assert_equal :state, @machine.attribute
24
- end
25
- end
@@ -1,52 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class MachinePersistenceTest < StateMachinesTest
4
- def setup
5
- @klass = Class.new do
6
- attr_accessor :state_event
7
- end
8
- @machine = StateMachines::Machine.new(@klass, initial: :parked)
9
- @object = @klass.new
10
- end
11
-
12
- def test_should_allow_reading_state
13
- assert_equal 'parked', @machine.read(@object, :state)
14
- end
15
-
16
- def test_should_allow_reading_custom_attributes
17
- assert_nil @machine.read(@object, :event)
18
-
19
- @object.state_event = 'ignite'
20
- assert_equal 'ignite', @machine.read(@object, :event)
21
- end
22
-
23
- def test_should_allow_reading_custom_instance_variables
24
- @klass.class_eval do
25
- attr_writer :state_value
26
- end
27
-
28
- @object.state_value = 1
29
- assert_raises(NoMethodError) { @machine.read(@object, :value) }
30
- assert_equal 1, @machine.read(@object, :value, true)
31
- end
32
-
33
- def test_should_allow_writing_state
34
- @machine.write(@object, :state, 'idling')
35
- assert_equal 'idling', @object.state
36
- end
37
-
38
- def test_should_allow_writing_custom_attributes
39
- @machine.write(@object, :event, 'ignite')
40
- assert_equal 'ignite', @object.state_event
41
- end
42
-
43
- def test_should_allow_writing_custom_instance_variables
44
- @klass.class_eval do
45
- attr_reader :state_value
46
- end
47
-
48
- assert_raises(NoMethodError) { @machine.write(@object, :value, 1) }
49
- assert_equal 1, @machine.write(@object, :value, 1, true)
50
- assert_equal 1, @object.state_value
51
- end
52
- end
@@ -1,56 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class MachineStateInitializationTest < StateMachinesTest
4
- def setup
5
- @klass = Class.new
6
- @machine = StateMachines::Machine.new(@klass, :state, initial: :parked, initialize: false)
7
-
8
- @object = @klass.new
9
- @object.state = nil
10
- end
11
-
12
- def test_should_set_states_if_nil
13
- @machine.initialize_state(@object)
14
-
15
- assert_equal 'parked', @object.state
16
- end
17
-
18
- def test_should_set_states_if_empty
19
- @object.state = ''
20
- @machine.initialize_state(@object)
21
-
22
- assert_equal 'parked', @object.state
23
- end
24
-
25
- def test_should_not_set_states_if_not_empty
26
- @object.state = 'idling'
27
- @machine.initialize_state(@object)
28
-
29
- assert_equal 'idling', @object.state
30
- end
31
-
32
- def test_should_set_states_if_not_empty_and_forced
33
- @object.state = 'idling'
34
- @machine.initialize_state(@object, force: true)
35
-
36
- assert_equal 'parked', @object.state
37
- end
38
-
39
- def test_should_not_set_state_if_nil_and_nil_is_valid_state
40
- @machine.state :initial, value: nil
41
- @machine.initialize_state(@object)
42
-
43
- assert_nil @object.state
44
- end
45
-
46
- def test_should_write_to_hash_if_specified
47
- @machine.initialize_state(@object, to: hash = {})
48
- assert_equal({ 'state' => 'parked' }, hash)
49
- end
50
-
51
- def test_should_not_write_to_object_if_writing_to_hash
52
- @machine.initialize_state(@object, to: {})
53
- assert_nil @object.state
54
- end
55
- end
56
-
@@ -1,30 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class MachineTest < StateMachinesTest
4
- def test_should_raise_exception_if_invalid_option_specified
5
- assert_raises(ArgumentError) { StateMachines::Machine.new(Class.new, invalid: true) }
6
- end
7
-
8
- def test_should_not_raise_exception_if_custom_messages_specified
9
- StateMachines::Machine.new(Class.new, messages: { invalid_transition: 'custom' })
10
- end
11
-
12
- def test_should_evaluate_a_block_during_initialization
13
- called = true
14
- StateMachines::Machine.new(Class.new) do
15
- called = respond_to?(:event)
16
- end
17
-
18
- assert called
19
- end
20
-
21
- def test_should_provide_matcher_helpers_during_initialization
22
- matchers = []
23
-
24
- StateMachines::Machine.new(Class.new) do
25
- matchers = [all, any, same]
26
- end
27
-
28
- assert_equal [StateMachines::AllMatcher.instance, StateMachines::AllMatcher.instance, StateMachines::LoopbackMatcher.instance], matchers
29
- end
30
- end
@@ -1,23 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class MachineWithActionAlreadyOverriddenTest < StateMachinesTest
4
- def setup
5
- @superclass = Class.new do
6
- def save
7
- end
8
- end
9
- @klass = Class.new(@superclass)
10
-
11
- StateMachines::Machine.new(@klass, action: :save)
12
- @machine = StateMachines::Machine.new(@klass, :status, action: :save)
13
- @object = @klass.new
14
- end
15
-
16
- def test_should_not_redefine_action
17
- assert_equal 1, @klass.ancestors.select { |ancestor| ![@klass, @superclass].include?(ancestor) && ancestor.method_defined?(:save) }.length
18
- end
19
-
20
- def test_should_mark_action_hook_as_defined
21
- assert @machine.action_hook?
22
- end
23
- end
@@ -1,37 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class MachineWithActionDefinedInClassTest < StateMachinesTest
4
- def setup
5
- @klass = Class.new do
6
- def save
7
- end
8
- end
9
-
10
- @machine = StateMachines::Machine.new(@klass, action: :save)
11
- @object = @klass.new
12
- end
13
-
14
- def test_should_define_an_event_attribute_reader
15
- assert @object.respond_to?(:state_event)
16
- end
17
-
18
- def test_should_define_an_event_attribute_writer
19
- assert @object.respond_to?(:state_event=)
20
- end
21
-
22
- def test_should_define_an_event_transition_attribute_reader
23
- assert @object.respond_to?(:state_event_transition, true)
24
- end
25
-
26
- def test_should_define_an_event_transition_attribute_writer
27
- assert @object.respond_to?(:state_event_transition=, true)
28
- end
29
-
30
- def test_should_not_define_action
31
- refute @klass.ancestors.any? { |ancestor| ancestor != @klass && ancestor.method_defined?(:save) }
32
- end
33
-
34
- def test_should_not_mark_action_hook_as_defined
35
- refute @machine.action_hook?
36
- end
37
- end
@@ -1,46 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class MachineWithActionDefinedInIncludedModuleTest < StateMachinesTest
4
- def setup
5
- @mod = mod = Module.new do
6
- def save
7
- end
8
- end
9
-
10
- @klass = Class.new do
11
- include mod
12
- end
13
-
14
- @machine = StateMachines::Machine.new(@klass, action: :save)
15
- @object = @klass.new
16
- end
17
-
18
- def test_should_define_an_event_attribute_reader
19
- assert @object.respond_to?(:state_event)
20
- end
21
-
22
- def test_should_define_an_event_attribute_writer
23
- assert @object.respond_to?(:state_event=)
24
- end
25
-
26
- def test_should_define_an_event_transition_attribute_reader
27
- assert @object.respond_to?(:state_event_transition, true)
28
- end
29
-
30
- def test_should_define_an_event_transition_attribute_writer
31
- assert @object.respond_to?(:state_event_transition=, true)
32
- end
33
-
34
- def test_should_define_action
35
- assert @klass.ancestors.any? { |ancestor| ![@klass, @mod].include?(ancestor) && ancestor.method_defined?(:save) }
36
- end
37
-
38
- def test_should_keep_action_public
39
- assert @klass.public_method_defined?(:save)
40
- end
41
-
42
- def test_should_mark_action_hook_as_defined
43
- assert @machine.action_hook?
44
- end
45
- end
46
-
@@ -1,43 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class MachineWithActionDefinedInSuperclassTest < StateMachinesTest
4
- def setup
5
- @superclass = Class.new do
6
- def save
7
- end
8
- end
9
- @klass = Class.new(@superclass)
10
-
11
- @machine = StateMachines::Machine.new(@klass, action: :save)
12
- @object = @klass.new
13
- end
14
-
15
- def test_should_define_an_event_attribute_reader
16
- assert @object.respond_to?(:state_event)
17
- end
18
-
19
- def test_should_define_an_event_attribute_writer
20
- assert @object.respond_to?(:state_event=)
21
- end
22
-
23
- def test_should_define_an_event_transition_attribute_reader
24
- assert @object.respond_to?(:state_event_transition, true)
25
- end
26
-
27
- def test_should_define_an_event_transition_attribute_writer
28
- assert @object.respond_to?(:state_event_transition=, true)
29
- end
30
-
31
- def test_should_define_action
32
- assert @klass.ancestors.any? { |ancestor| ![@klass, @superclass].include?(ancestor) && ancestor.method_defined?(:save) }
33
- end
34
-
35
- def test_should_keep_action_public
36
- assert @klass.public_method_defined?(:save)
37
- end
38
-
39
- def test_should_mark_action_hook_as_defined
40
- assert @machine.action_hook?
41
- end
42
- end
43
-
@@ -1,33 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class MachineWithActionUndefinedTest < StateMachinesTest
4
- def setup
5
- @klass = Class.new
6
- @machine = StateMachines::Machine.new(@klass, action: :save)
7
- @object = @klass.new
8
- end
9
-
10
- def test_should_define_an_event_attribute_reader
11
- assert @object.respond_to?(:state_event)
12
- end
13
-
14
- def test_should_define_an_event_attribute_writer
15
- assert @object.respond_to?(:state_event=)
16
- end
17
-
18
- def test_should_define_an_event_transition_attribute_reader
19
- assert @object.respond_to?(:state_event_transition, true)
20
- end
21
-
22
- def test_should_define_an_event_transition_attribute_writer
23
- assert @object.respond_to?(:state_event_transition=, true)
24
- end
25
-
26
- def test_should_not_define_action
27
- refute @object.respond_to?(:save)
28
- end
29
-
30
- def test_should_not_mark_action_hook_as_defined
31
- refute @machine.action_hook?
32
- end
33
- end
@@ -1,20 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class MachineWithCachedStateTest < StateMachinesTest
4
- def setup
5
- @klass = Class.new
6
- @machine = StateMachines::Machine.new(@klass, initial: :parked)
7
- @state = @machine.state :parked, value: -> { Object.new }, cache: true
8
-
9
- @object = @klass.new
10
- end
11
-
12
- def test_should_use_evaluated_value
13
- assert_instance_of Object, @object.state
14
- end
15
-
16
- def test_use_same_value_across_multiple_objects
17
- assert_equal @object.state, @klass.new.state
18
- end
19
- end
20
-