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,179 +0,0 @@
1
- require_relative '../../test_helper'
2
- require 'stringio'
3
-
4
- class MachineWithClassHelpersTest < StateMachinesTest
5
- def setup
6
- @klass = Class.new
7
- @machine = StateMachines::Machine.new(@klass)
8
- end
9
-
10
- def test_should_not_redefine_existing_public_methods
11
- class << @klass
12
- def states
13
- []
14
- end
15
- end
16
-
17
- @machine.define_helper(:class, :states) {}
18
- assert_equal [], @klass.states
19
- end
20
-
21
- def test_should_not_redefine_existing_protected_methods
22
- class << @klass
23
- protected
24
- def states
25
- []
26
- end
27
- end
28
-
29
- @machine.define_helper(:class, :states) {}
30
- assert_equal [], @klass.send(:states)
31
- end
32
-
33
- def test_should_not_redefine_existing_private_methods
34
- class << @klass
35
- private
36
- def states
37
- []
38
- end
39
- end
40
-
41
- @machine.define_helper(:class, :states) {}
42
- assert_equal [], @klass.send(:states)
43
- end
44
-
45
- def test_should_warn_if_defined_in_superclass
46
- @original_stderr, $stderr = $stderr, StringIO.new
47
-
48
- superclass = Class.new do
49
- def self.park
50
- end
51
- end
52
- klass = Class.new(superclass)
53
- machine = StateMachines::Machine.new(klass)
54
-
55
- machine.define_helper(:class, :park) {}
56
- assert_equal "Class method \"park\" is already defined in #{superclass}, use generic helper instead or set StateMachines::Machine.ignore_method_conflicts = true.\n", $stderr.string
57
- ensure
58
- $stderr = @original_stderr
59
- end
60
-
61
- def test_should_warn_if_defined_in_multiple_superclasses
62
- @original_stderr, $stderr = $stderr, StringIO.new
63
-
64
- superclass1 = Class.new do
65
- def self.park
66
- end
67
- end
68
- superclass2 = Class.new(superclass1) do
69
- def self.park
70
- end
71
- end
72
- klass = Class.new(superclass2)
73
- machine = StateMachines::Machine.new(klass)
74
-
75
- machine.define_helper(:class, :park) {}
76
- assert_equal "Class method \"park\" is already defined in #{superclass1}, use generic helper instead or set StateMachines::Machine.ignore_method_conflicts = true.\n", $stderr.string
77
- ensure
78
- $stderr = @original_stderr
79
- end
80
-
81
- def test_should_warn_if_defined_in_module_prior_to_helper_module
82
- @original_stderr, $stderr = $stderr, StringIO.new
83
-
84
- mod = Module.new do
85
- def park
86
- end
87
- end
88
- klass = Class.new do
89
- extend mod
90
- end
91
- machine = StateMachines::Machine.new(klass)
92
-
93
- machine.define_helper(:class, :park) {}
94
- assert_equal "Class method \"park\" is already defined in #{mod}, use generic helper instead or set StateMachines::Machine.ignore_method_conflicts = true.\n", $stderr.string
95
- ensure
96
- $stderr = @original_stderr
97
- end
98
-
99
- def test_should_not_warn_if_defined_in_module_after_helper_module
100
- @original_stderr, $stderr = $stderr, StringIO.new
101
-
102
- klass = Class.new
103
- machine = StateMachines::Machine.new(klass)
104
-
105
- mod = Module.new do
106
- def park
107
- end
108
- end
109
- klass.class_eval do
110
- extend mod
111
- end
112
-
113
- machine.define_helper(:class, :park) {}
114
- assert_equal '', $stderr.string
115
- ensure
116
- $stderr = @original_stderr
117
- end
118
-
119
- def test_should_define_if_ignoring_method_conflicts_and_defined_in_superclass
120
- @original_stderr, $stderr = $stderr, StringIO.new
121
- StateMachines::Machine.ignore_method_conflicts = true
122
-
123
- superclass = Class.new do
124
- def self.park
125
- end
126
- end
127
- klass = Class.new(superclass)
128
- machine = StateMachines::Machine.new(klass)
129
-
130
- machine.define_helper(:class, :park) { true }
131
- assert_equal '', $stderr.string
132
- assert_equal true, klass.park
133
- ensure
134
- StateMachines::Machine.ignore_method_conflicts = false
135
- $stderr = @original_stderr
136
- end
137
-
138
- def test_should_define_nonexistent_methods
139
- @machine.define_helper(:class, :states) { [] }
140
- assert_equal [], @klass.states
141
- end
142
-
143
- def test_should_warn_if_defined_multiple_times
144
- @original_stderr, $stderr = $stderr, StringIO.new
145
-
146
- @machine.define_helper(:class, :states) {}
147
- @machine.define_helper(:class, :states) {}
148
-
149
- assert_equal "Class method \"states\" is already defined in #{@klass} :state class helpers, use generic helper instead or set StateMachines::Machine.ignore_method_conflicts = true.\n", $stderr.string
150
- ensure
151
- $stderr = @original_stderr
152
- end
153
-
154
- def test_should_pass_context_as_arguments
155
- helper_args = nil
156
- @machine.define_helper(:class, :states) { |*args| helper_args = args }
157
- @klass.states
158
- assert_equal 2, helper_args.length
159
- assert_equal [@machine, @klass], helper_args
160
- end
161
-
162
- def test_should_pass_method_arguments_through
163
- helper_args = nil
164
- @machine.define_helper(:class, :states) { |*args| helper_args = args }
165
- @klass.states(1, 2, 3)
166
- assert_equal 5, helper_args.length
167
- assert_equal [@machine, @klass, 1, 2, 3], helper_args
168
- end
169
-
170
- def test_should_allow_string_evaluation
171
- @machine.define_helper :class, <<-end_eval, __FILE__, __LINE__ + 1
172
- def states
173
- []
174
- end
175
- end_eval
176
- assert_equal [], @klass.states
177
- end
178
- end
179
-
@@ -1,244 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class MachineWithConflictingHelpersAfterDefinitionTest < StateMachinesTest
4
- module Custom
5
- include StateMachines::Integrations::Base
6
-
7
- def create_with_scope(_name)
8
- ->(_klass, _values) { [] }
9
- end
10
-
11
- def create_without_scope(_name)
12
- ->(_klass, _values) { [] }
13
- end
14
- end
15
- def setup
16
- @original_stderr, $stderr = $stderr, StringIO.new
17
- StateMachines::Integrations.register(MachineWithConflictingHelpersAfterDefinitionTest::Custom)
18
- @klass = Class.new do
19
- def self.with_state
20
- :with_state
21
- end
22
-
23
- def self.with_states
24
- :with_states
25
- end
26
-
27
- def self.without_state
28
- :without_state
29
- end
30
-
31
- def self.without_states
32
- :without_states
33
- end
34
-
35
- def self.human_state_name
36
- :human_state_name
37
- end
38
-
39
- def self.human_state_event_name
40
- :human_state_event_name
41
- end
42
-
43
- attr_accessor :status
44
-
45
- def state
46
- 'parked'
47
- end
48
-
49
- def state=(value)
50
- self.status = value
51
- end
52
-
53
- def state?
54
- true
55
- end
56
-
57
- def state_name
58
- :parked
59
- end
60
-
61
- def human_state_name
62
- 'parked'
63
- end
64
-
65
- def state_events
66
- [:ignite]
67
- end
68
-
69
- def state_transitions
70
- [{ parked: :idling }]
71
- end
72
-
73
- def state_paths
74
- [[{ parked: :idling }]]
75
- end
76
-
77
- def fire_state_event
78
- true
79
- end
80
- end
81
-
82
-
83
-
84
- @machine = StateMachines::Machine.new(@klass, integration: :custom)
85
- @machine.state :parked, :idling
86
- @machine.event :ignite
87
- @object = @klass.new
88
- end
89
-
90
- def test_should_not_redefine_singular_with_scope
91
- assert_equal :with_state, @klass.with_state
92
- end
93
-
94
- def test_should_not_redefine_plural_with_scope
95
- assert_equal :with_states, @klass.with_states
96
- end
97
-
98
- def test_should_not_redefine_singular_without_scope
99
- assert_equal :without_state, @klass.without_state
100
- end
101
-
102
- def test_should_not_redefine_plural_without_scope
103
- assert_equal :without_states, @klass.without_states
104
- end
105
-
106
- def test_should_not_redefine_human_attribute_name_reader
107
- assert_equal :human_state_name, @klass.human_state_name
108
- end
109
-
110
- def test_should_not_redefine_human_event_name_reader
111
- assert_equal :human_state_event_name, @klass.human_state_event_name
112
- end
113
-
114
- def test_should_not_redefine_attribute_reader
115
- assert_equal 'parked', @object.state
116
- end
117
-
118
- def test_should_not_redefine_attribute_writer
119
- @object.state = 'parked'
120
- assert_equal 'parked', @object.status
121
- end
122
-
123
- def test_should_not_define_attribute_predicate
124
- assert @object.state?
125
- end
126
-
127
- def test_should_not_redefine_attribute_name_reader
128
- assert_equal :parked, @object.state_name
129
- end
130
-
131
- def test_should_not_redefine_attribute_human_name_reader
132
- assert_equal 'parked', @object.human_state_name
133
- end
134
-
135
- def test_should_not_redefine_attribute_events_reader
136
- assert_equal [:ignite], @object.state_events
137
- end
138
-
139
- def test_should_not_redefine_attribute_transitions_reader
140
- assert_equal [{ parked: :idling }], @object.state_transitions
141
- end
142
-
143
- def test_should_not_redefine_attribute_paths_reader
144
- assert_equal [[{ parked: :idling }]], @object.state_paths
145
- end
146
-
147
- def test_should_not_redefine_event_runner
148
- assert_equal true, @object.fire_state_event
149
- end
150
-
151
- def test_should_allow_super_chaining
152
- @klass.class_eval do
153
- def self.with_state(*states)
154
- super
155
- end
156
-
157
- def self.with_states(*states)
158
- super
159
- end
160
-
161
- def self.without_state(*states)
162
- super
163
- end
164
-
165
- def self.without_states(*states)
166
- super
167
- end
168
-
169
- def self.human_state_name(state)
170
- super
171
- end
172
-
173
- def self.human_state_event_name(event)
174
- super
175
- end
176
-
177
- attr_accessor :status
178
-
179
- def state
180
- super
181
- end
182
-
183
- def state=(value)
184
- super
185
- end
186
-
187
- def state?(state)
188
- super
189
- end
190
-
191
- def state_name
192
- super
193
- end
194
-
195
- def human_state_name
196
- super
197
- end
198
-
199
- def state_events
200
- super
201
- end
202
-
203
- def state_transitions
204
- super
205
- end
206
-
207
- def state_paths
208
- super
209
- end
210
-
211
- def fire_state_event(event)
212
- super
213
- end
214
- end
215
-
216
- assert_equal [], @klass.with_state
217
- assert_equal [], @klass.with_states
218
- assert_equal [], @klass.without_state
219
- assert_equal [], @klass.without_states
220
- assert_equal 'parked', @klass.human_state_name(:parked)
221
- assert_equal 'ignite', @klass.human_state_event_name(:ignite)
222
-
223
- assert_equal nil, @object.state
224
- @object.state = 'idling'
225
- assert_equal 'idling', @object.state
226
- assert_equal nil, @object.status
227
- assert_equal false, @object.state?(:parked)
228
- assert_equal :idling, @object.state_name
229
- assert_equal 'idling', @object.human_state_name
230
- assert_equal [], @object.state_events
231
- assert_equal [], @object.state_transitions
232
- assert_equal [], @object.state_paths
233
- assert_equal false, @object.fire_state_event(:ignite)
234
- end
235
-
236
- def test_should_not_output_warning
237
- assert_equal '', $stderr.string
238
- end
239
-
240
- def teardown
241
- $stderr = @original_stderr
242
- StateMachines::Integrations.reset
243
- end
244
- end
@@ -1,175 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class MachineWithConflictingHelpersBeforeDefinitionTest < StateMachinesTest
4
- module Custom
5
- include StateMachines::Integrations::Base
6
-
7
- def create_with_scope(_name)
8
- lambda { |_klass, _values| [] }
9
- end
10
-
11
- def create_without_scope(_name)
12
- lambda { |_klass, _values| [] }
13
- end
14
- end
15
-
16
- def setup
17
- @original_stderr, $stderr = $stderr, StringIO.new
18
-
19
- StateMachines::Integrations.register(MachineWithConflictingHelpersBeforeDefinitionTest::Custom)
20
-
21
- @superclass = Class.new do
22
- def self.with_state
23
- :with_state
24
- end
25
-
26
- def self.with_states
27
- :with_states
28
- end
29
-
30
- def self.without_state
31
- :without_state
32
- end
33
-
34
- def self.without_states
35
- :without_states
36
- end
37
-
38
- def self.human_state_name
39
- :human_state_name
40
- end
41
-
42
- def self.human_state_event_name
43
- :human_state_event_name
44
- end
45
-
46
- attr_accessor :status
47
-
48
- def state
49
- 'parked'
50
- end
51
-
52
- def state=(value)
53
- self.status = value
54
- end
55
-
56
- def state?
57
- true
58
- end
59
-
60
- def state_name
61
- :parked
62
- end
63
-
64
- def human_state_name
65
- 'parked'
66
- end
67
-
68
- def state_events
69
- [:ignite]
70
- end
71
-
72
- def state_transitions
73
- [{ parked: :idling }]
74
- end
75
-
76
- def state_paths
77
- [[{ parked: :idling }]]
78
- end
79
-
80
- def fire_state_event
81
- true
82
- end
83
- end
84
- @klass = Class.new(@superclass)
85
- @machine = StateMachines::Machine.new(@klass, integration: :custom)
86
- @machine.state :parked, :idling
87
- @machine.event :ignite
88
- @object = @klass.new
89
- end
90
-
91
- def test_should_not_redefine_singular_with_scope
92
- assert_equal :with_state, @klass.with_state
93
- end
94
-
95
- def test_should_not_redefine_plural_with_scope
96
- assert_equal :with_states, @klass.with_states
97
- end
98
-
99
- def test_should_not_redefine_singular_without_scope
100
- assert_equal :without_state, @klass.without_state
101
- end
102
-
103
- def test_should_not_redefine_plural_without_scope
104
- assert_equal :without_states, @klass.without_states
105
- end
106
-
107
- def test_should_not_redefine_human_attribute_name_reader
108
- assert_equal :human_state_name, @klass.human_state_name
109
- end
110
-
111
- def test_should_not_redefine_human_event_name_reader
112
- assert_equal :human_state_event_name, @klass.human_state_event_name
113
- end
114
-
115
- def test_should_not_redefine_attribute_reader
116
- assert_equal 'parked', @object.state
117
- end
118
-
119
- def test_should_not_redefine_attribute_writer
120
- @object.state = 'parked'
121
- assert_equal 'parked', @object.status
122
- end
123
-
124
- def test_should_not_define_attribute_predicate
125
- assert @object.state?
126
- end
127
-
128
- def test_should_not_redefine_attribute_name_reader
129
- assert_equal :parked, @object.state_name
130
- end
131
-
132
- def test_should_not_redefine_attribute_human_name_reader
133
- assert_equal 'parked', @object.human_state_name
134
- end
135
-
136
- def test_should_not_redefine_attribute_events_reader
137
- assert_equal [:ignite], @object.state_events
138
- end
139
-
140
- def test_should_not_redefine_attribute_transitions_reader
141
- assert_equal [{ parked: :idling }], @object.state_transitions
142
- end
143
-
144
- def test_should_not_redefine_attribute_paths_reader
145
- assert_equal [[{ parked: :idling }]], @object.state_paths
146
- end
147
-
148
- def test_should_not_redefine_event_runner
149
- assert_equal true, @object.fire_state_event
150
- end
151
-
152
- def test_should_output_warning
153
- expected = [
154
- 'Instance method "state_events"',
155
- 'Instance method "state_transitions"',
156
- 'Instance method "fire_state_event"',
157
- 'Instance method "state_paths"',
158
- 'Class method "human_state_name"',
159
- 'Class method "human_state_event_name"',
160
- 'Instance method "state_name"',
161
- 'Instance method "human_state_name"',
162
- 'Class method "with_state"',
163
- 'Class method "with_states"',
164
- 'Class method "without_state"',
165
- 'Class method "without_states"'
166
- ].map { |method| "#{method} is already defined in #{@superclass}, use generic helper instead or set StateMachines::Machine.ignore_method_conflicts = true.\n" }.join
167
-
168
- assert_equal expected, $stderr.string
169
- end
170
-
171
- def teardown
172
- $stderr = @original_stderr
173
- end
174
- end
175
-
@@ -1,11 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class MachineWithCustomActionTest < StateMachinesTest
4
- def setup
5
- @machine = StateMachines::Machine.new(Class.new, action: :save)
6
- end
7
-
8
- def test_should_use_the_custom_action
9
- assert_equal :save, @machine.action
10
- end
11
- end
@@ -1,103 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- module MachineWithCustomAttributeIntegration
4
- include StateMachines::Integrations::Base
5
-
6
- def self.integration_name
7
- :custom_attribute
8
- end
9
-
10
- @defaults = { action: :save, use_transactions: false }
11
-
12
- def create_with_scope(_name)
13
- -> {}
14
- end
15
-
16
- def create_without_scope(_name)
17
- -> {}
18
- end
19
- end
20
-
21
- class MachineWithCustomAttributeTest < StateMachinesTest
22
- def setup
23
- StateMachines::Integrations.register(MachineWithCustomAttributeIntegration)
24
-
25
- @klass = Class.new
26
- @machine = StateMachines::Machine.new(@klass, :state, attribute: :state_id, initial: :active, integration: :custom_attribute) do
27
- event :ignite do
28
- transition parked: :idling
29
- end
30
- end
31
- @object = @klass.new
32
- end
33
-
34
- def test_should_define_a_reader_attribute_for_the_attribute
35
- assert @object.respond_to?(:state_id)
36
- end
37
-
38
- def test_should_define_a_writer_attribute_for_the_attribute
39
- assert @object.respond_to?(:state_id=)
40
- end
41
-
42
- def test_should_define_a_predicate_for_the_attribute
43
- assert @object.respond_to?(:state?)
44
- end
45
-
46
- def test_should_define_a_name_reader_for_the_attribute
47
- assert @object.respond_to?(:state_name)
48
- end
49
-
50
- def test_should_define_a_human_name_reader_for_the_attribute
51
- assert @object.respond_to?(:state_name)
52
- end
53
-
54
- def test_should_define_an_event_reader_for_the_attribute
55
- assert @object.respond_to?(:state_events)
56
- end
57
-
58
- def test_should_define_a_transition_reader_for_the_attribute
59
- assert @object.respond_to?(:state_transitions)
60
- end
61
-
62
- def test_should_define_a_path_reader_for_the_attribute
63
- assert @object.respond_to?(:state_paths)
64
- end
65
-
66
- def test_should_define_an_event_runner_for_the_attribute
67
- assert @object.respond_to?(:fire_state_event)
68
- end
69
-
70
- def test_should_define_a_human_attribute_name_reader
71
- assert @klass.respond_to?(:human_state_name)
72
- end
73
-
74
- def test_should_define_a_human_event_name_reader
75
- assert @klass.respond_to?(:human_state_event_name)
76
- end
77
-
78
- def test_should_define_singular_with_scope
79
- assert @klass.respond_to?(:with_state)
80
- end
81
-
82
- def test_should_define_singular_without_scope
83
- assert @klass.respond_to?(:without_state)
84
- end
85
-
86
- def test_should_define_plural_with_scope
87
- assert @klass.respond_to?(:with_states)
88
- end
89
-
90
- def test_should_define_plural_without_scope
91
- assert @klass.respond_to?(:without_states)
92
- end
93
-
94
- def test_should_define_state_machines_reader
95
- expected = { state: @machine }
96
- assert_equal expected, @klass.state_machines
97
- end
98
-
99
- def teardown
100
- StateMachines::Integrations.reset
101
- end
102
- end
103
-