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,45 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class BranchWithOnRequirementTest < StateMachinesTest
4
- def setup
5
- @object = Object.new
6
- @branch = StateMachines::Branch.new(on: :ignite)
7
- end
8
-
9
- def test_should_use_a_whitelist_matcher
10
- assert_instance_of StateMachines::WhitelistMatcher, @branch.event_requirement
11
- end
12
-
13
- def test_should_match_if_not_specified
14
- assert @branch.matches?(@object, from: :parked)
15
- end
16
-
17
- def test_should_match_if_included
18
- assert @branch.matches?(@object, on: :ignite)
19
- end
20
-
21
- def test_should_not_match_if_not_included
22
- refute @branch.matches?(@object, on: :park)
23
- end
24
-
25
- def test_should_not_match_if_nil
26
- refute @branch.matches?(@object, on: nil)
27
- end
28
-
29
- def test_should_ignore_to
30
- assert @branch.matches?(@object, on: :ignite, to: :parked)
31
- end
32
-
33
- def test_should_ignore_from
34
- assert @branch.matches?(@object, on: :ignite, from: :parked)
35
- end
36
-
37
- def test_should_not_be_included_in_known_states
38
- assert_equal [], @branch.known_states
39
- end
40
-
41
- def test_should_include_requirement_in_match
42
- match = @branch.match(@object, on: :ignite)
43
- assert_equal @branch.event_requirement, match[:on]
44
- end
45
- end
@@ -1,20 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class BranchWithToMatcherRequirementTest < StateMachinesTest
4
- def setup
5
- @object = Object.new
6
- @branch = StateMachines::Branch.new(to: StateMachines::BlacklistMatcher.new([:idling, :parked]))
7
- end
8
-
9
- def test_should_match_if_included
10
- assert @branch.matches?(@object, to: :first_gear)
11
- end
12
-
13
- def test_should_not_match_if_not_included
14
- refute @branch.matches?(@object, to: :idling)
15
- end
16
-
17
- def test_include_values_in_known_states
18
- assert_equal [:idling, :parked], @branch.known_states
19
- end
20
- end
@@ -1,45 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class BranchWithToRequirementTest < StateMachinesTest
4
- def setup
5
- @object = Object.new
6
- @branch = StateMachines::Branch.new(to: :idling)
7
- end
8
-
9
- def test_should_use_a_whitelist_matcher
10
- assert_instance_of StateMachines::WhitelistMatcher, @branch.state_requirements.first[:to]
11
- end
12
-
13
- def test_should_match_if_not_specified
14
- assert @branch.matches?(@object, from: :parked)
15
- end
16
-
17
- def test_should_match_if_included
18
- assert @branch.matches?(@object, to: :idling)
19
- end
20
-
21
- def test_should_not_match_if_not_included
22
- refute @branch.matches?(@object, to: :parked)
23
- end
24
-
25
- def test_should_not_match_if_nil
26
- refute @branch.matches?(@object, to: nil)
27
- end
28
-
29
- def test_should_ignore_from
30
- assert @branch.matches?(@object, to: :idling, from: :parked)
31
- end
32
-
33
- def test_should_ignore_on
34
- assert @branch.matches?(@object, to: :idling, on: :ignite)
35
- end
36
-
37
- def test_should_be_included_in_known_states
38
- assert_equal [:idling], @branch.known_states
39
- end
40
-
41
- def test_should_include_requirement_in_match
42
- match = @branch.match(@object, to: :idling)
43
- assert_equal @branch.state_requirements.first[:to], match[:to]
44
- end
45
- end
@@ -1,27 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class BranchWithUnlessConditionalTest < StateMachinesTest
4
- def setup
5
- @object = Object.new
6
- end
7
-
8
- def test_should_have_an_unless_condition
9
- branch = StateMachines::Branch.new(unless: lambda { true })
10
- refute_nil branch.unless_condition
11
- end
12
-
13
- def test_should_match_if_false
14
- branch = StateMachines::Branch.new(unless: lambda { false })
15
- assert branch.matches?(@object)
16
- end
17
-
18
- def test_should_not_match_if_true
19
- branch = StateMachines::Branch.new(unless: lambda { true })
20
- refute branch.matches?(@object)
21
- end
22
-
23
- def test_should_be_nil_if_unmatched
24
- branch = StateMachines::Branch.new(unless: lambda { true })
25
- assert_nil branch.match(@object)
26
- end
27
- end
@@ -1,27 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class BranchWithoutGuardsTest < StateMachinesTest
4
- def setup
5
- @object = Object.new
6
- end
7
-
8
- def test_should_match_if_if_is_false
9
- branch = StateMachines::Branch.new(if: lambda { false })
10
- assert branch.matches?(@object, guard: false)
11
- end
12
-
13
- def test_should_match_if_if_is_true
14
- branch = StateMachines::Branch.new(if: lambda { true })
15
- assert branch.matches?(@object, guard: false)
16
- end
17
-
18
- def test_should_match_if_unless_is_false
19
- branch = StateMachines::Branch.new(unless: lambda { false })
20
- assert branch.matches?(@object, guard: false)
21
- end
22
-
23
- def test_should_match_if_unless_is_true
24
- branch = StateMachines::Branch.new(unless: lambda { true })
25
- assert branch.matches?(@object, guard: false)
26
- end
27
- end
@@ -1,25 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class CallbackByDefaultTest < StateMachinesTest
4
- def setup
5
- @callback = StateMachines::Callback.new(:before) {}
6
- end
7
-
8
- def test_should_have_type
9
- assert_equal :before, @callback.type
10
- end
11
-
12
- def test_should_not_have_a_terminator
13
- assert_nil @callback.terminator
14
- end
15
-
16
- def test_should_have_a_branch_with_all_matcher_requirements
17
- assert_equal StateMachines::AllMatcher.instance, @callback.branch.event_requirement
18
- assert_equal StateMachines::AllMatcher.instance, @callback.branch.state_requirements.first[:from]
19
- assert_equal StateMachines::AllMatcher.instance, @callback.branch.state_requirements.first[:to]
20
- end
21
-
22
- def test_should_not_have_any_known_states
23
- assert_equal [], @callback.known_states
24
- end
25
- end
@@ -1,53 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class CallbackTest < StateMachinesTest
4
- def test_should_raise_exception_if_invalid_type_specified
5
- exception = assert_raises(ArgumentError) { StateMachines::Callback.new(:invalid) {} }
6
- assert_equal 'Type must be :before, :after, :around, or :failure', exception.message
7
- end
8
-
9
- def test_should_not_raise_exception_if_using_before_type
10
- StateMachines::Callback.new(:before) {}
11
- end
12
-
13
- def test_should_not_raise_exception_if_using_after_type
14
- StateMachines::Callback.new(:after) {}
15
- end
16
-
17
- def test_should_not_raise_exception_if_using_around_type
18
- StateMachines::Callback.new(:around) {}
19
- end
20
-
21
- def test_should_not_raise_exception_if_using_failure_type
22
- StateMachines::Callback.new(:failure) {}
23
- end
24
-
25
- def test_should_raise_exception_if_no_methods_specified
26
- exception = assert_raises(ArgumentError) { StateMachines::Callback.new(:before) }
27
- assert_equal 'Method(s) for callback must be specified', exception.message
28
- end
29
-
30
- def test_should_not_raise_exception_if_method_specified_in_do_option
31
- StateMachines::Callback.new(:before, do: :run)
32
- end
33
-
34
- def test_should_not_raise_exception_if_method_specified_as_argument
35
- StateMachines::Callback.new(:before, :run)
36
- end
37
-
38
- def test_should_not_raise_exception_if_method_specified_as_block
39
- StateMachines::Callback.new(:before, :run) {}
40
- end
41
-
42
- def test_should_not_raise_exception_if_implicit_option_specified
43
- StateMachines::Callback.new(:before, do: :run, invalid: :valid)
44
- end
45
-
46
- def test_should_not_bind_to_objects
47
- refute StateMachines::Callback.bind_to_object
48
- end
49
-
50
- def test_should_not_have_a_terminator
51
- assert_nil StateMachines::Callback.terminator
52
- end
53
- end
@@ -1,23 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class CallbackWithApplicationBoundObjectTest < StateMachinesTest
4
- def setup
5
- @original_bind_to_object = StateMachines::Callback.bind_to_object
6
- StateMachines::Callback.bind_to_object = true
7
-
8
- context = nil
9
- @callback = StateMachines::Callback.new(:before, do: lambda { |*_args| context = self })
10
-
11
- @object = Object.new
12
- @callback.call(@object)
13
- @context = context
14
- end
15
-
16
- def test_should_call_method_within_the_context_of_the_object
17
- assert_equal @object, @context
18
- end
19
-
20
- def teardown
21
- StateMachines::Callback.bind_to_object = @original_bind_to_object
22
- end
23
- end
@@ -1,24 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class CallbackWithApplicationTerminatorTest < StateMachinesTest
4
- def setup
5
- @original_terminator = StateMachines::Callback.terminator
6
- StateMachines::Callback.terminator = lambda { |result| result == false }
7
-
8
- @object = Object.new
9
- end
10
-
11
- def test_should_not_halt_if_terminator_does_not_match
12
- callback = StateMachines::Callback.new(:before, do: lambda { true })
13
- callback.call(@object)
14
- end
15
-
16
- def test_should_halt_if_terminator_matches
17
- callback = StateMachines::Callback.new(:before, do: lambda { false })
18
- assert_throws(:halt) { callback.call(@object) }
19
- end
20
-
21
- def teardown
22
- StateMachines::Callback.terminator = @original_terminator
23
- end
24
- end
@@ -1,14 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class CallbackWithArgumentsTest < StateMachinesTest
4
- def setup
5
- @callback = StateMachines::Callback.new(:before, do: lambda { |*args| @args = args })
6
-
7
- @object = Object.new
8
- @callback.call(@object, {}, 1, 2, 3)
9
- end
10
-
11
- def test_should_call_method_with_all_arguments
12
- assert_equal [@object, 1, 2, 3], @args
13
- end
14
- end
@@ -1,25 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class CallbackWithAroundTypeAndArgumentsTest < StateMachinesTest
4
- def setup
5
- @object = Object.new
6
- end
7
-
8
- def test_should_include_object_if_specified
9
- callback = StateMachines::Callback.new(:around, lambda { |object, block| @args = [object]; block.call })
10
- callback.call(@object)
11
- assert_equal [@object], @args
12
- end
13
-
14
- def test_should_include_arguments_if_specified
15
- callback = StateMachines::Callback.new(:around, lambda { |object, arg1, arg2, arg3, block| @args = [object, arg1, arg2, arg3]; block.call })
16
- callback.call(@object, {}, 1, 2, 3)
17
- assert_equal [@object, 1, 2, 3], @args
18
- end
19
-
20
- def test_should_include_arguments_if_splat_used
21
- callback = StateMachines::Callback.new(:around, lambda { |*args| block = args.pop; @args = args; block.call })
22
- callback.call(@object, {}, 1, 2, 3)
23
- assert_equal [@object, 1, 2, 3], @args
24
- end
25
- end
@@ -1,44 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class CallbackWithAroundTypeAndBlockTest < StateMachinesTest
4
- def setup
5
- @object = Object.new
6
- @callbacks = []
7
- end
8
-
9
- def test_should_evaluate_before_without_after
10
- callback = StateMachines::Callback.new(:around, lambda { |*args| block = args.pop; @args = args; block.call })
11
- assert callback.call(@object)
12
- assert_equal [@object], @args
13
- end
14
-
15
- def test_should_evaluate_after_without_before
16
- callback = StateMachines::Callback.new(:around, lambda { |*args| block = args.pop; block.call; @args = args })
17
- assert callback.call(@object)
18
- assert_equal [@object], @args
19
- end
20
-
21
- def test_should_halt_if_not_yielded
22
- callback = StateMachines::Callback.new(:around, lambda { |_block| })
23
- assert_throws(:halt) { callback.call(@object) }
24
- end
25
-
26
- def test_should_call_block_after_before
27
- callback = StateMachines::Callback.new(:around, lambda { |block| @callbacks << :before; block.call })
28
- assert callback.call(@object) { @callbacks << :block }
29
- assert_equal [:before, :block], @callbacks
30
- end
31
-
32
- def test_should_call_block_before_after
33
- @callbacks = []
34
- callback = StateMachines::Callback.new(:around, lambda { |block| block.call; @callbacks << :after })
35
- assert callback.call(@object) { @callbacks << :block }
36
- assert_equal [:block, :after], @callbacks
37
- end
38
-
39
- def test_should_halt_if_block_halts
40
- callback = StateMachines::Callback.new(:around, lambda { |block| block.call; @callbacks << :after })
41
- assert_throws(:halt) { callback.call(@object) { throw :halt } }
42
- assert_equal [], @callbacks
43
- end
44
- end
@@ -1,23 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class CallbackWithAroundTypeAndBoundMethodTest < StateMachinesTest
4
- def setup
5
- @object = Object.new
6
- end
7
-
8
- def test_should_call_method_within_the_context_of_the_object
9
- context = nil
10
- callback = StateMachines::Callback.new(:around, do: lambda { |block| context = self; block.call }, bind_to_object: true)
11
- callback.call(@object, {}, 1, 2, 3)
12
-
13
- assert_equal @object, context
14
- end
15
-
16
- def test_should_include_arguments_if_specified
17
- context = nil
18
- callback = StateMachines::Callback.new(:around, do: lambda { |*args| block = args.pop; context = args; block.call }, bind_to_object: true)
19
- callback.call(@object, {}, 1, 2, 3)
20
-
21
- assert_equal [1, 2, 3], context
22
- end
23
- end
@@ -1,93 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class CallbackWithAroundTypeAndMultipleMethodsTest < StateMachinesTest
4
- def setup
5
- @callback = StateMachines::Callback.new(:around, :run_1, :run_2)
6
-
7
- class << @object = Object.new
8
- attr_accessor :before_callbacks
9
- attr_accessor :after_callbacks
10
-
11
- def run_1
12
- (@before_callbacks ||= []) << :run_1
13
- yield
14
- (@after_callbacks ||= []) << :run_1
15
- end
16
-
17
- def run_2
18
- (@before_callbacks ||= []) << :run_2
19
- yield
20
- (@after_callbacks ||= []) << :run_2
21
- end
22
- end
23
- end
24
-
25
- def test_should_succeed
26
- assert @callback.call(@object)
27
- end
28
-
29
- def test_should_evaluate_before_callbacks_in_order
30
- @callback.call(@object)
31
- assert_equal [:run_1, :run_2], @object.before_callbacks
32
- end
33
-
34
- def test_should_evaluate_after_callbacks_in_reverse_order
35
- @callback.call(@object)
36
- assert_equal [:run_2, :run_1], @object.after_callbacks
37
- end
38
-
39
- def test_should_call_block_after_before_callbacks
40
- @callback.call(@object) { (@object.before_callbacks ||= []) << :block }
41
- assert_equal [:run_1, :run_2, :block], @object.before_callbacks
42
- end
43
-
44
- def test_should_call_block_before_after_callbacks
45
- @callback.call(@object) { (@object.after_callbacks ||= []) << :block }
46
- assert_equal [:block, :run_2, :run_1], @object.after_callbacks
47
- end
48
-
49
- def test_should_halt_if_first_doesnt_yield
50
- class << @object
51
- remove_method :run_1
52
- def run_1
53
- (@before_callbacks ||= []) << :run_1
54
- end
55
- end
56
-
57
- catch(:halt) do
58
- @callback.call(@object) { (@object.before_callbacks ||= []) << :block }
59
- end
60
-
61
- assert_equal [:run_1], @object.before_callbacks
62
- assert_nil @object.after_callbacks
63
- end
64
-
65
- def test_should_halt_if_last_doesnt_yield
66
- class << @object
67
- remove_method :run_2
68
- def run_2
69
- (@before_callbacks ||= []) << :run_2
70
- end
71
- end
72
-
73
- catch(:halt) { @callback.call(@object) }
74
- assert_equal [:run_1, :run_2], @object.before_callbacks
75
- assert_nil @object.after_callbacks
76
- end
77
-
78
- def test_should_not_evaluate_further_methods_if_after_halts
79
- class << @object
80
- remove_method :run_2
81
- def run_2
82
- (@before_callbacks ||= []) << :run_2
83
- yield
84
- (@after_callbacks ||= []) << :run_2
85
- throw :halt
86
- end
87
- end
88
-
89
- catch(:halt) { @callback.call(@object) }
90
- assert_equal [:run_1, :run_2], @object.before_callbacks
91
- assert_equal [:run_2], @object.after_callbacks
92
- end
93
- end
@@ -1,17 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class CallbackWithAroundTypeAndTerminatorTest < StateMachinesTest
4
- def setup
5
- @object = Object.new
6
- end
7
-
8
- def test_should_not_halt_if_terminator_does_not_match
9
- callback = StateMachines::Callback.new(:around, do: lambda { |block| block.call(false); false }, terminator: lambda { |result| result == true })
10
- callback.call(@object)
11
- end
12
-
13
- def test_should_not_halt_if_terminator_matches
14
- callback = StateMachines::Callback.new(:around, do: lambda { |block| block.call(false); false }, terminator: lambda { |result| result == false })
15
- callback.call(@object)
16
- end
17
- end
@@ -1,20 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class CallbackWithBlockTest < StateMachinesTest
4
- def setup
5
- @callback = StateMachines::Callback.new(:before) do |*args|
6
- @args = args
7
- end
8
-
9
- @object = Object.new
10
- @result = @callback.call(@object)
11
- end
12
-
13
- def test_should_be_successful
14
- assert @result
15
- end
16
-
17
- def test_should_call_with_empty_context
18
- assert_equal [@object], @args
19
- end
20
- end
@@ -1,28 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class CallbackWithBoundMethodAndArgumentsTest < StateMachinesTest
4
- def setup
5
- @object = Object.new
6
- end
7
-
8
- def test_should_include_single_argument_if_specified
9
- context = nil
10
- callback = StateMachines::Callback.new(:before, do: lambda { |arg1| context = [arg1] }, bind_to_object: true)
11
- callback.call(@object, {}, 1)
12
- assert_equal [1], context
13
- end
14
-
15
- def test_should_include_multiple_arguments_if_specified
16
- context = nil
17
- callback = StateMachines::Callback.new(:before, do: lambda { |arg1, arg2, arg3| context = [arg1, arg2, arg3] }, bind_to_object: true)
18
- callback.call(@object, {}, 1, 2, 3)
19
- assert_equal [1, 2, 3], context
20
- end
21
-
22
- def test_should_include_arguments_if_splat_used
23
- context = nil
24
- callback = StateMachines::Callback.new(:before, do: lambda { |*args| context = args }, bind_to_object: true)
25
- callback.call(@object, {}, 1, 2, 3)
26
- assert_equal [1, 2, 3], context
27
- end
28
- end
@@ -1,35 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class CallbackWithBoundMethodTest < StateMachinesTest
4
- def setup
5
- @object = Object.new
6
- end
7
-
8
- def test_should_call_method_within_the_context_of_the_object_for_block_methods
9
- context = nil
10
- callback = StateMachines::Callback.new(:before, do: lambda { |*args| context = [self] + args }, bind_to_object: true)
11
- callback.call(@object, {}, 1, 2, 3)
12
-
13
- assert_equal [@object, 1, 2, 3], context
14
- end
15
-
16
- def test_should_ignore_option_for_symbolic_methods
17
- class << @object
18
- attr_reader :context
19
-
20
- def after_ignite(*args)
21
- @context = args
22
- end
23
- end
24
-
25
- callback = StateMachines::Callback.new(:before, do: :after_ignite, bind_to_object: true)
26
- callback.call(@object)
27
-
28
- assert_equal [], @object.context
29
- end
30
-
31
- def test_should_ignore_option_for_string_methods
32
- callback = StateMachines::Callback.new(:before, do: '[1, 2, 3]', bind_to_object: true)
33
- assert callback.call(@object)
34
- end
35
- end
@@ -1,18 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class CallbackWithDoMethodTest < StateMachinesTest
4
- def setup
5
- @callback = StateMachines::Callback.new(:before, do: lambda { |*args| @args = args })
6
-
7
- @object = Object.new
8
- @result = @callback.call(@object)
9
- end
10
-
11
- def test_should_be_successful
12
- assert @result
13
- end
14
-
15
- def test_should_call_with_empty_context
16
- assert_equal [@object], @args
17
- end
18
- end
@@ -1,32 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class CallbackWithExplicitRequirementsTest < StateMachinesTest
4
- def setup
5
- @object = Object.new
6
- @callback = StateMachines::Callback.new(:before, from: :parked, to: :idling, on: :ignite, do: lambda {})
7
- end
8
-
9
- def test_should_call_with_empty_context
10
- assert @callback.call(@object, {})
11
- end
12
-
13
- def test_should_not_call_if_from_not_included
14
- refute @callback.call(@object, from: :idling)
15
- end
16
-
17
- def test_should_not_call_if_to_not_included
18
- refute @callback.call(@object, to: :parked)
19
- end
20
-
21
- def test_should_not_call_if_on_not_included
22
- refute @callback.call(@object, on: :park)
23
- end
24
-
25
- def test_should_call_if_all_requirements_met
26
- assert @callback.call(@object, from: :parked, to: :idling, on: :ignite)
27
- end
28
-
29
- def test_should_include_in_known_states
30
- assert_equal [:parked, :idling], @callback.known_states
31
- end
32
- end
@@ -1,17 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class CallbackWithIfConditionTest < StateMachinesTest
4
- def setup
5
- @object = Object.new
6
- end
7
-
8
- def test_should_call_if_true
9
- callback = StateMachines::Callback.new(:before, if: lambda { true }, do: lambda {})
10
- assert callback.call(@object)
11
- end
12
-
13
- def test_should_not_call_if_false
14
- callback = StateMachines::Callback.new(:before, if: lambda { false }, do: lambda {})
15
- refute callback.call(@object)
16
- end
17
- end