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,31 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class EventCollectionWithCustomMachineAttributeTest < StateMachinesTest
4
- def setup
5
- @klass = Class.new do
6
- def save
7
- end
8
- end
9
-
10
- @machine = StateMachines::Machine.new(@klass, :state, attribute: :state_id, initial: :parked, action: :save)
11
- @events = StateMachines::EventCollection.new(@machine)
12
-
13
- @machine.state :parked, :idling
14
- @events << @ignite = StateMachines::Event.new(@machine, :ignite)
15
- @machine.events.concat(@events)
16
-
17
- @object = @klass.new
18
- end
19
-
20
- def test_should_not_have_transition_if_nil
21
- @object.state_event = nil
22
- assert_nil @events.attribute_transition_for(@object)
23
- end
24
-
25
- def test_should_have_valid_transition_if_event_can_be_fired
26
- @ignite.transition parked: :idling
27
- @object.state_event = 'ignite'
28
-
29
- assert_instance_of StateMachines::Transition, @events.attribute_transition_for(@object)
30
- end
31
- end
@@ -1,76 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class EventCollectionWithEventsWithTransitionsTest < StateMachinesTest
4
- def setup
5
- @klass = Class.new
6
- @machine = StateMachines::Machine.new(@klass, initial: :parked)
7
- @events = StateMachines::EventCollection.new(@machine)
8
-
9
- @machine.state :idling, :first_gear
10
-
11
- @events << @ignite = StateMachines::Event.new(@machine, :ignite)
12
- @ignite.transition parked: :idling
13
-
14
- @events << @park = StateMachines::Event.new(@machine, :park)
15
- @park.transition idling: :parked
16
-
17
- @events << @shift_up = StateMachines::Event.new(@machine, :shift_up)
18
- @shift_up.transition parked: :first_gear
19
- @shift_up.transition idling: :first_gear, if: lambda { false }
20
-
21
- @machine.events.concat(@events)
22
-
23
- @object = @klass.new
24
- end
25
-
26
- def test_should_find_valid_events_based_on_current_state
27
- assert_equal [@ignite, @shift_up], @events.valid_for(@object)
28
- end
29
-
30
- def test_should_filter_valid_events_by_from_state
31
- assert_equal [@park], @events.valid_for(@object, from: :idling)
32
- end
33
-
34
- def test_should_filter_valid_events_by_to_state
35
- assert_equal [@shift_up], @events.valid_for(@object, to: :first_gear)
36
- end
37
-
38
- def test_should_filter_valid_events_by_event
39
- assert_equal [@ignite], @events.valid_for(@object, on: :ignite)
40
- end
41
-
42
- def test_should_filter_valid_events_by_multiple_requirements
43
- assert_equal [], @events.valid_for(@object, from: :idling, to: :first_gear)
44
- end
45
-
46
- def test_should_allow_finding_valid_events_without_guards
47
- assert_equal [@shift_up], @events.valid_for(@object, from: :idling, to: :first_gear, guard: false)
48
- end
49
-
50
- def test_should_find_valid_transitions_based_on_current_state
51
- assert_equal [
52
- StateMachines::Transition.new(@object, @machine, :ignite, :parked, :idling),
53
- StateMachines::Transition.new(@object, @machine, :shift_up, :parked, :first_gear)
54
- ], @events.transitions_for(@object)
55
- end
56
-
57
- def test_should_filter_valid_transitions_by_from_state
58
- assert_equal [StateMachines::Transition.new(@object, @machine, :park, :idling, :parked)], @events.transitions_for(@object, from: :idling)
59
- end
60
-
61
- def test_should_filter_valid_transitions_by_to_state
62
- assert_equal [StateMachines::Transition.new(@object, @machine, :shift_up, :parked, :first_gear)], @events.transitions_for(@object, to: :first_gear)
63
- end
64
-
65
- def test_should_filter_valid_transitions_by_event
66
- assert_equal [StateMachines::Transition.new(@object, @machine, :ignite, :parked, :idling)], @events.transitions_for(@object, on: :ignite)
67
- end
68
-
69
- def test_should_filter_valid_transitions_by_multiple_requirements
70
- assert_equal [], @events.transitions_for(@object, from: :idling, to: :first_gear)
71
- end
72
-
73
- def test_should_allow_finding_valid_transitions_without_guards
74
- assert_equal [StateMachines::Transition.new(@object, @machine, :shift_up, :idling, :first_gear)], @events.transitions_for(@object, from: :idling, to: :first_gear, guard: false)
75
- end
76
- end
@@ -1,27 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class EventCollectionWithMultipleEventsTest < StateMachinesTest
4
- def setup
5
- @klass = Class.new
6
- @machine = StateMachines::Machine.new(@klass, initial: :parked)
7
- @events = StateMachines::EventCollection.new(@machine)
8
-
9
- @machine.state :first_gear
10
- @park, @shift_down = @machine.event :park, :shift_down
11
-
12
- @events << @park
13
- @park.transition first_gear: :parked
14
-
15
- @events << @shift_down
16
- @shift_down.transition first_gear: :parked
17
-
18
- @machine.events.concat(@events)
19
- end
20
-
21
- def test_should_only_include_all_valid_events_for_an_object
22
- object = @klass.new
23
- object.state = 'first_gear'
24
- assert_equal [@park, @shift_down], @events.valid_for(object)
25
- end
26
- end
27
-
@@ -1,74 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class EventCollectionWithValidationsTest < StateMachinesTest
4
- module Custom
5
- include StateMachines::Integrations::Base
6
-
7
- def invalidate(object, _attribute, message, values = [])
8
- (object.errors ||= []) << generate_message(message, values)
9
- end
10
-
11
- def reset(object)
12
- object.errors = []
13
- end
14
- end
15
-
16
- def setup
17
- StateMachines::Integrations.register(EventCollectionWithValidationsTest::Custom)
18
-
19
- @klass = Class.new do
20
- attr_accessor :errors
21
-
22
- def initialize
23
- @errors = []
24
- super
25
- end
26
- end
27
-
28
- @machine = StateMachines::Machine.new(@klass, initial: :parked, action: :save, integration: :custom)
29
- @events = StateMachines::EventCollection.new(@machine)
30
-
31
- @parked, @idling = @machine.state :parked, :idling
32
- @events << @ignite = StateMachines::Event.new(@machine, :ignite)
33
- @machine.events.concat(@events)
34
-
35
- @object = @klass.new
36
- end
37
-
38
- def test_should_invalidate_if_invalid_event_specified
39
- @object.state_event = 'invalid'
40
- @events.attribute_transition_for(@object, true)
41
-
42
- assert_equal ['is invalid'], @object.errors
43
- end
44
-
45
- def test_should_invalidate_if_event_cannot_be_fired
46
- @object.state = 'idling'
47
- @object.state_event = 'ignite'
48
- @events.attribute_transition_for(@object, true)
49
-
50
- assert_equal ['cannot transition when idling'], @object.errors
51
- end
52
-
53
- def test_should_invalidate_with_human_name_if_invalid_event_specified
54
- @idling.human_name = 'waiting'
55
- @object.state = 'idling'
56
- @object.state_event = 'ignite'
57
- @events.attribute_transition_for(@object, true)
58
-
59
- assert_equal ['cannot transition when waiting'], @object.errors
60
- end
61
-
62
- def test_should_not_invalidate_event_can_be_fired
63
- @ignite.transition parked: :idling
64
- @object.state_event = 'ignite'
65
- @events.attribute_transition_for(@object, true)
66
-
67
- assert_equal [], @object.errors
68
- end
69
-
70
- def teardown
71
- StateMachines::Integrations.reset
72
- end
73
- end
74
-
@@ -1,18 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class EventCollectionWithoutMachineActionTest < StateMachinesTest
4
- def setup
5
- @klass = Class.new
6
- @machine = StateMachines::Machine.new(@klass, initial: :parked)
7
- @events = StateMachines::EventCollection.new(@machine)
8
- @events << StateMachines::Event.new(@machine, :ignite)
9
- @machine.events.concat(@events)
10
-
11
- @object = @klass.new
12
- end
13
-
14
- def test_should_not_have_an_attribute_transition
15
- assert_nil @events.attribute_transition_for(@object)
16
- end
17
- end
18
-
@@ -1,31 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class EventStringCollectionTest < StateMachinesTest
4
- def setup
5
- machine = StateMachines::Machine.new(Class.new, namespace: 'alarm')
6
- @events = StateMachines::EventCollection.new(machine)
7
-
8
- @events << @open = StateMachines::Event.new(machine, 'enable')
9
- machine.events.concat(@events)
10
- end
11
-
12
- def test_should_index_by_name
13
- assert_equal @open, @events['enable', :name]
14
- end
15
-
16
- def test_should_index_by_name_by_default
17
- assert_equal @open, @events['enable']
18
- end
19
-
20
- def test_should_index_by_symbol_name
21
- assert_equal @open, @events[:enable]
22
- end
23
-
24
- def test_should_index_by_qualified_name
25
- assert_equal @open, @events['enable_alarm', :qualified_name]
26
- end
27
-
28
- def test_should_index_by_symbol_qualified_name
29
- assert_equal @open, @events[:enable_alarm, :qualified_name]
30
- end
31
- end
@@ -1,17 +0,0 @@
1
- require_relative '../test_helper'
2
-
3
- class HelperModuleTest < StateMachinesTest
4
- def setup
5
- @klass = Class.new
6
- @machine = StateMachines::Machine.new(@klass)
7
- @helper_module = StateMachines::HelperModule.new(@machine, :instance)
8
- end
9
-
10
- def test_should_not_have_a_name
11
- assert_equal '', @helper_module.name.to_s
12
- end
13
-
14
- def test_should_provide_human_readable_to_s
15
- assert_equal "#{@klass} :state instance helpers", @helper_module.to_s
16
- end
17
- end
@@ -1,16 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class IntegrationFinderTest < StateMachinesTest
4
- def setup
5
- StateMachines::Integrations.reset
6
- end
7
-
8
- def test_should_raise_an_exception_if_invalid
9
- exception = assert_raises(StateMachines::IntegrationNotFound) { StateMachines::Integrations.find_by_name(:invalid) }
10
- assert_equal ':invalid is an invalid integration. No integrations registered', exception.message
11
- end
12
-
13
- def test_should_have_no_integrations
14
- assert_equal([], StateMachines::Integrations.list)
15
- end
16
- end
@@ -1,29 +0,0 @@
1
- require_relative '../../test_helper'
2
- require_relative '../../files/models/vehicle'
3
- require_relative '../../files/integrations/vehicle'
4
-
5
- class IntegrationMatcherTest < StateMachinesTest
6
- def setup
7
- StateMachines::Integrations.reset
8
- end
9
-
10
- def test_should_return_nil_if_no_match_found
11
- assert_nil StateMachines::Integrations.match(Vehicle)
12
- end
13
-
14
- def test_should_return_integration_class_if_match_found
15
- StateMachines::Integrations.register(VehicleIntegration)
16
- assert_equal VehicleIntegration, StateMachines::Integrations.match(Vehicle)
17
- end
18
-
19
- def test_should_return_nil_if_no_match_found_with_ancestors
20
- fake = Class.new
21
- assert_nil StateMachines::Integrations.match_ancestors([fake])
22
- end
23
-
24
- def test_should_return_integration_class_if_match_found_with_ancestors
25
- fake = Class.new
26
- StateMachines::Integrations.register(VehicleIntegration)
27
- assert_equal VehicleIntegration, StateMachines::Integrations.match_ancestors([fake, Vehicle])
28
- end
29
- end
@@ -1,18 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class InvalidParallelTransitionTest < StateMachinesTest
4
- def setup
5
- @object = Object.new
6
- @events = [:ignite, :disable_alarm]
7
-
8
- @invalid_transition = StateMachines::InvalidParallelTransition.new(@object, @events)
9
- end
10
-
11
- def test_should_have_an_object
12
- assert_equal @object, @invalid_transition.object
13
- end
14
-
15
- def test_should_have_events
16
- assert_equal @events, @invalid_transition.events
17
- end
18
- end
@@ -1,47 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class InvalidTransitionTest < StateMachinesTest
4
- def setup
5
- @klass = Class.new
6
- @machine = StateMachines::Machine.new(@klass)
7
- @state = @machine.state :parked
8
- @machine.event :ignite
9
-
10
- @object = @klass.new
11
- @object.state = 'parked'
12
-
13
- @invalid_transition = StateMachines::InvalidTransition.new(@object, @machine, :ignite)
14
- end
15
-
16
- def test_should_have_an_object
17
- assert_equal @object, @invalid_transition.object
18
- end
19
-
20
- def test_should_have_a_machine
21
- assert_equal @machine, @invalid_transition.machine
22
- end
23
-
24
- def test_should_have_an_event
25
- assert_equal :ignite, @invalid_transition.event
26
- end
27
-
28
- def test_should_have_a_qualified_event
29
- assert_equal :ignite, @invalid_transition.qualified_event
30
- end
31
-
32
- def test_should_have_a_from_value
33
- assert_equal 'parked', @invalid_transition.from
34
- end
35
-
36
- def test_should_have_a_from_name
37
- assert_equal :parked, @invalid_transition.from_name
38
- end
39
-
40
- def test_should_have_a_qualified_from_name
41
- assert_equal :parked, @invalid_transition.qualified_from_name
42
- end
43
-
44
- def test_should_generate_a_message
45
- assert_equal 'Cannot transition state via :ignite from :parked', @invalid_transition.message
46
- end
47
- end
@@ -1,45 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class InvalidTransitionWithIntegrationTest < StateMachinesTest
4
- module Custom
5
- include StateMachines::Integrations::Base
6
-
7
- def errors_for(object)
8
- object.errors
9
- end
10
- end
11
-
12
- def setup
13
- StateMachines::Integrations.register(InvalidTransitionWithIntegrationTest::Custom)
14
-
15
- @klass = Class.new do
16
- attr_accessor :errors
17
- end
18
- @machine = StateMachines::Machine.new(@klass, integration: :custom)
19
- @machine.state :parked
20
- @machine.event :ignite
21
-
22
- @object = @klass.new
23
- @object.state = 'parked'
24
- end
25
-
26
- def fix_test
27
- skip
28
- end
29
-
30
- def test_should_generate_a_message_without_reasons_if_empty
31
- @object.errors = ''
32
- invalid_transition = StateMachines::InvalidTransition.new(@object, @machine, :ignite)
33
- assert_equal 'Cannot transition state via :ignite from :parked', invalid_transition.message
34
- end
35
-
36
- def test_should_generate_a_message_with_error_reasons_if_errors_found
37
- @object.errors = 'Id is invalid, Name is invalid'
38
- invalid_transition = StateMachines::InvalidTransition.new(@object, @machine, :ignite)
39
- assert_equal 'Cannot transition state via :ignite from :parked (Reason(s): Id is invalid, Name is invalid)', invalid_transition.message
40
- end
41
-
42
- def teardown
43
- StateMachines::Integrations.reset
44
- end
45
- end
@@ -1,32 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class InvalidTransitionWithNamespaceTest < StateMachinesTest
4
- def setup
5
- @klass = Class.new
6
- @machine = StateMachines::Machine.new(@klass, namespace: 'alarm')
7
- @state = @machine.state :active
8
- @machine.event :disable
9
-
10
- @object = @klass.new
11
- @object.state = 'active'
12
-
13
- @invalid_transition = StateMachines::InvalidTransition.new(@object, @machine, :disable)
14
- end
15
-
16
- def test_should_have_an_event
17
- assert_equal :disable, @invalid_transition.event
18
- end
19
-
20
- def test_should_have_a_qualified_event
21
- assert_equal :disable_alarm, @invalid_transition.qualified_event
22
- end
23
-
24
- def test_should_have_a_from_name
25
- assert_equal :active, @invalid_transition.from_name
26
- end
27
-
28
- def test_should_have_a_qualified_from_name
29
- assert_equal :alarm_active, @invalid_transition.qualified_from_name
30
- end
31
- end
32
-
@@ -1,62 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class MachineAfterBeingCopiedTest < StateMachinesTest
4
- def setup
5
- @machine = StateMachines::Machine.new(Class.new, :state, initial: :parked)
6
- @machine.event(:ignite) {}
7
- @machine.before_transition(lambda {})
8
- @machine.after_transition(lambda {})
9
- @machine.around_transition(lambda {})
10
- @machine.after_failure(lambda {})
11
-
12
- @copied_machine = @machine.clone
13
- end
14
-
15
- def test_should_not_have_the_same_collection_of_states
16
- refute_same @copied_machine.states, @machine.states
17
- end
18
-
19
- def test_should_copy_each_state
20
- refute_same @copied_machine.states[:parked], @machine.states[:parked]
21
- end
22
-
23
- def test_should_update_machine_for_each_state
24
- assert_equal @copied_machine, @copied_machine.states[:parked].machine
25
- end
26
-
27
- def test_should_not_update_machine_for_original_state
28
- assert_equal @machine, @machine.states[:parked].machine
29
- end
30
-
31
- def test_should_not_have_the_same_collection_of_events
32
- refute_same @copied_machine.events, @machine.events
33
- end
34
-
35
- def test_should_copy_each_event
36
- refute_same @copied_machine.events[:ignite], @machine.events[:ignite]
37
- end
38
-
39
- def test_should_update_machine_for_each_event
40
- assert_equal @copied_machine, @copied_machine.events[:ignite].machine
41
- end
42
-
43
- def test_should_not_update_machine_for_original_event
44
- assert_equal @machine, @machine.events[:ignite].machine
45
- end
46
-
47
- def test_should_not_have_the_same_callbacks
48
- refute_same @copied_machine.callbacks, @machine.callbacks
49
- end
50
-
51
- def test_should_not_have_the_same_before_callbacks
52
- refute_same @copied_machine.callbacks[:before], @machine.callbacks[:before]
53
- end
54
-
55
- def test_should_not_have_the_same_after_callbacks
56
- refute_same @copied_machine.callbacks[:after], @machine.callbacks[:after]
57
- end
58
-
59
- def test_should_not_have_the_same_failure_callbacks
60
- refute_same @copied_machine.callbacks[:failure], @machine.callbacks[:failure]
61
- end
62
- end
@@ -1,28 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class MachineAfterChangingInitialState < StateMachinesTest
4
- def setup
5
- @klass = Class.new
6
- @machine = StateMachines::Machine.new(@klass, initial: :parked)
7
- @machine.initial_state = :idling
8
-
9
- @object = @klass.new
10
- end
11
-
12
- def test_should_change_the_initial_state
13
- assert_equal :idling, @machine.initial_state(@object).name
14
- end
15
-
16
- def test_should_include_in_known_states
17
- assert_equal [:parked, :idling], @machine.states.map { |state| state.name }
18
- end
19
-
20
- def test_should_reset_original_initial_state
21
- refute @machine.state(:parked).initial
22
- end
23
-
24
- def test_should_set_new_state_to_initial
25
- assert @machine.state(:idling).initial
26
- end
27
- end
28
-
@@ -1,31 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class MachineAfterChangingOwnerClassTest < StateMachinesTest
4
- def setup
5
- @original_class = Class.new
6
- @machine = StateMachines::Machine.new(@original_class)
7
-
8
- @new_class = Class.new(@original_class)
9
- @new_machine = @machine.clone
10
- @new_machine.owner_class = @new_class
11
-
12
- @object = @new_class.new
13
- end
14
-
15
- def test_should_update_owner_class
16
- assert_equal @new_class, @new_machine.owner_class
17
- end
18
-
19
- def test_should_not_change_original_owner_class
20
- assert_equal @original_class, @machine.owner_class
21
- end
22
-
23
- def test_should_change_the_associated_machine_in_the_new_class
24
- assert_equal @new_machine, @new_class.state_machines[:state]
25
- end
26
-
27
- def test_should_not_change_the_associated_machine_in_the_original_class
28
- assert_equal @machine, @original_class.state_machines[:state]
29
- end
30
- end
31
-