state_machines 0.5.0 → 0.6.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 (455) hide show
  1. checksums.yaml +5 -5
  2. data/LICENSE.txt +1 -1
  3. data/README.md +7 -4
  4. data/lib/state_machines/branch.rb +81 -79
  5. data/lib/state_machines/callback.rb +22 -21
  6. data/lib/state_machines/eval_helpers.rb +15 -15
  7. data/lib/state_machines/event.rb +31 -28
  8. data/lib/state_machines/event_collection.rb +26 -25
  9. data/lib/state_machines/extensions.rb +1 -1
  10. data/lib/state_machines/helper_module.rb +1 -1
  11. data/lib/state_machines/integrations.rb +8 -8
  12. data/lib/state_machines/machine.rb +372 -369
  13. data/lib/state_machines/machine_collection.rb +11 -10
  14. data/lib/state_machines/macro_methods.rb +100 -100
  15. data/lib/state_machines/matcher.rb +23 -23
  16. data/lib/state_machines/matcher_helpers.rb +11 -11
  17. data/lib/state_machines/node_collection.rb +15 -13
  18. data/lib/state_machines/path.rb +56 -55
  19. data/lib/state_machines/path_collection.rb +35 -35
  20. data/lib/state_machines/state.rb +7 -6
  21. data/lib/state_machines/state_collection.rb +20 -19
  22. data/lib/state_machines/state_context.rb +33 -35
  23. data/lib/state_machines/transition.rb +180 -178
  24. data/lib/state_machines/transition_collection.rb +170 -168
  25. data/lib/state_machines/version.rb +1 -1
  26. metadata +4 -434
  27. data/.gitignore +0 -21
  28. data/.rspec +0 -3
  29. data/.ruby-gemset +0 -1
  30. data/.ruby-version +0 -1
  31. data/.travis.yml +0 -16
  32. data/Changelog.md +0 -22
  33. data/Contributors.md +0 -39
  34. data/Gemfile +0 -8
  35. data/Rakefile +0 -12
  36. data/Testing.md +0 -0
  37. data/state_machines.gemspec +0 -22
  38. data/test/files/integrations/event_on_failure_integration.rb +0 -10
  39. data/test/files/integrations/vehicle.rb +0 -7
  40. data/test/files/models/auto_shop.rb +0 -31
  41. data/test/files/models/car.rb +0 -21
  42. data/test/files/models/driver.rb +0 -13
  43. data/test/files/models/model_base.rb +0 -6
  44. data/test/files/models/motorcycle.rb +0 -16
  45. data/test/files/models/traffic_light.rb +0 -47
  46. data/test/files/models/vehicle.rb +0 -127
  47. data/test/files/node.rb +0 -5
  48. data/test/files/switch.rb +0 -15
  49. data/test/functional/auto_shop_available_test.rb +0 -20
  50. data/test/functional/auto_shop_busy_test.rb +0 -25
  51. data/test/functional/car_backing_up_test.rb +0 -45
  52. data/test/functional/car_test.rb +0 -49
  53. data/test/functional/driver_default_nonstandard_test.rb +0 -13
  54. data/test/functional/motorcycle_test.rb +0 -52
  55. data/test/functional/traffic_light_caution_test.rb +0 -17
  56. data/test/functional/traffic_light_proceed_test.rb +0 -17
  57. data/test/functional/traffic_light_stop_test.rb +0 -26
  58. data/test/functional/vehicle_first_gear_test.rb +0 -42
  59. data/test/functional/vehicle_idling_test.rb +0 -59
  60. data/test/functional/vehicle_locked_test.rb +0 -29
  61. data/test/functional/vehicle_parked_test.rb +0 -53
  62. data/test/functional/vehicle_repaired_test.rb +0 -20
  63. data/test/functional/vehicle_second_gear_test.rb +0 -42
  64. data/test/functional/vehicle_stalled_test.rb +0 -65
  65. data/test/functional/vehicle_test.rb +0 -20
  66. data/test/functional/vehicle_third_gear_test.rb +0 -42
  67. data/test/functional/vehicle_unsaved_test.rb +0 -181
  68. data/test/functional/vehicle_with_event_attributes_test.rb +0 -30
  69. data/test/functional/vehicle_with_parallel_events_test.rb +0 -36
  70. data/test/test_helper.rb +0 -15
  71. data/test/unit/assertions/assert_exclusive_keys_test.rb +0 -22
  72. data/test/unit/assertions/assert_valid_key_test.rb +0 -12
  73. data/test/unit/branch/branch_test.rb +0 -28
  74. data/test/unit/branch/branch_with_conflicting_conditionals_test.rb +0 -27
  75. data/test/unit/branch/branch_with_conflicting_from_requirements_test.rb +0 -8
  76. data/test/unit/branch/branch_with_conflicting_on_requirements_test.rb +0 -8
  77. data/test/unit/branch/branch_with_conflicting_to_requirements_test.rb +0 -8
  78. data/test/unit/branch/branch_with_different_requirements_test.rb +0 -41
  79. data/test/unit/branch/branch_with_except_from_matcher_requirement_test.rb +0 -8
  80. data/test/unit/branch/branch_with_except_from_requirement_test.rb +0 -36
  81. data/test/unit/branch/branch_with_except_on_matcher_requirement_test.rb +0 -8
  82. data/test/unit/branch/branch_with_except_on_requirement_test.rb +0 -36
  83. data/test/unit/branch/branch_with_except_to_matcher_requirement_test.rb +0 -8
  84. data/test/unit/branch/branch_with_except_to_requirement_test.rb +0 -36
  85. data/test/unit/branch/branch_with_from_matcher_requirement_test.rb +0 -20
  86. data/test/unit/branch/branch_with_from_requirement_test.rb +0 -45
  87. data/test/unit/branch/branch_with_if_conditional_test.rb +0 -27
  88. data/test/unit/branch/branch_with_implicit_and_explicit_requirements_test.rb +0 -23
  89. data/test/unit/branch/branch_with_implicit_from_requirement_matcher_test.rb +0 -20
  90. data/test/unit/branch/branch_with_implicit_requirement_test.rb +0 -20
  91. data/test/unit/branch/branch_with_implicit_to_requirement_matcher_test.rb +0 -16
  92. data/test/unit/branch/branch_with_multiple_except_from_requirements_test.rb +0 -20
  93. data/test/unit/branch/branch_with_multiple_except_on_requirements_test.rb +0 -16
  94. data/test/unit/branch/branch_with_multiple_except_to_requirements_test.rb +0 -20
  95. data/test/unit/branch/branch_with_multiple_from_requirements_test.rb +0 -16
  96. data/test/unit/branch/branch_with_multiple_if_conditionals_test.rb +0 -20
  97. data/test/unit/branch/branch_with_multiple_implicit_requirements_test.rb +0 -53
  98. data/test/unit/branch/branch_with_multiple_to_requirements_test.rb +0 -20
  99. data/test/unit/branch/branch_with_multiple_unless_conditionals_test.rb +0 -20
  100. data/test/unit/branch/branch_with_nil_requirements_test.rb +0 -28
  101. data/test/unit/branch/branch_with_no_requirements_test.rb +0 -36
  102. data/test/unit/branch/branch_with_on_matcher_requirement_test.rb +0 -16
  103. data/test/unit/branch/branch_with_on_requirement_test.rb +0 -45
  104. data/test/unit/branch/branch_with_to_matcher_requirement_test.rb +0 -20
  105. data/test/unit/branch/branch_with_to_requirement_test.rb +0 -45
  106. data/test/unit/branch/branch_with_unless_conditional_test.rb +0 -27
  107. data/test/unit/branch/branch_without_guards_test.rb +0 -27
  108. data/test/unit/callback/callback_by_default_test.rb +0 -25
  109. data/test/unit/callback/callback_test.rb +0 -53
  110. data/test/unit/callback/callback_with_application_bound_object_test.rb +0 -23
  111. data/test/unit/callback/callback_with_application_terminator_test.rb +0 -24
  112. data/test/unit/callback/callback_with_arguments_test.rb +0 -14
  113. data/test/unit/callback/callback_with_around_type_and_arguments_test.rb +0 -25
  114. data/test/unit/callback/callback_with_around_type_and_block_test.rb +0 -44
  115. data/test/unit/callback/callback_with_around_type_and_bound_method_test.rb +0 -23
  116. data/test/unit/callback/callback_with_around_type_and_multiple_methods_test.rb +0 -93
  117. data/test/unit/callback/callback_with_around_type_and_terminator_test.rb +0 -17
  118. data/test/unit/callback/callback_with_block_test.rb +0 -20
  119. data/test/unit/callback/callback_with_bound_method_and_arguments_test.rb +0 -28
  120. data/test/unit/callback/callback_with_bound_method_test.rb +0 -35
  121. data/test/unit/callback/callback_with_do_method_test.rb +0 -18
  122. data/test/unit/callback/callback_with_explicit_requirements_test.rb +0 -32
  123. data/test/unit/callback/callback_with_if_condition_test.rb +0 -17
  124. data/test/unit/callback/callback_with_implicit_requirements_test.rb +0 -32
  125. data/test/unit/callback/callback_with_method_argument_test.rb +0 -18
  126. data/test/unit/callback/callback_with_mixed_methods_test.rb +0 -31
  127. data/test/unit/callback/callback_with_multiple_bound_methods_test.rb +0 -21
  128. data/test/unit/callback/callback_with_multiple_do_methods_test.rb +0 -29
  129. data/test/unit/callback/callback_with_multiple_method_arguments_test.rb +0 -29
  130. data/test/unit/callback/callback_with_terminator_test.rb +0 -22
  131. data/test/unit/callback/callback_with_unbound_method_test.rb +0 -14
  132. data/test/unit/callback/callback_with_unless_condition_test.rb +0 -17
  133. data/test/unit/callback/callback_without_arguments_test.rb +0 -14
  134. data/test/unit/callback/callback_without_terminator_test.rb +0 -12
  135. data/test/unit/error/error_by_default_test.rb +0 -21
  136. data/test/unit/error/error_with_message_test.rb +0 -23
  137. data/test/unit/eval_helper/eval_helpers_base_test.rb +0 -8
  138. data/test/unit/eval_helper/eval_helpers_proc_block_and_explicit_arguments_test.rb +0 -14
  139. data/test/unit/eval_helper/eval_helpers_proc_block_and_implicit_arguments_test.rb +0 -14
  140. data/test/unit/eval_helper/eval_helpers_proc_test.rb +0 -13
  141. data/test/unit/eval_helper/eval_helpers_proc_with_arguments_test.rb +0 -13
  142. data/test/unit/eval_helper/eval_helpers_proc_with_block_test.rb +0 -13
  143. data/test/unit/eval_helper/eval_helpers_proc_with_block_without_arguments_test.rb +0 -18
  144. data/test/unit/eval_helper/eval_helpers_proc_with_block_without_object_test.rb +0 -14
  145. data/test/unit/eval_helper/eval_helpers_proc_without_arguments_test.rb +0 -19
  146. data/test/unit/eval_helper/eval_helpers_string_test.rb +0 -25
  147. data/test/unit/eval_helper/eval_helpers_string_with_block_test.rb +0 -12
  148. data/test/unit/eval_helper/eval_helpers_symbol_method_missing_test.rb +0 -20
  149. data/test/unit/eval_helper/eval_helpers_symbol_private_test.rb +0 -17
  150. data/test/unit/eval_helper/eval_helpers_symbol_protected_test.rb +0 -17
  151. data/test/unit/eval_helper/eval_helpers_symbol_tainted_method_test.rb +0 -18
  152. data/test/unit/eval_helper/eval_helpers_symbol_test.rb +0 -16
  153. data/test/unit/eval_helper/eval_helpers_symbol_with_arguments_and_block_test.rb +0 -16
  154. data/test/unit/eval_helper/eval_helpers_symbol_with_arguments_test.rb +0 -16
  155. data/test/unit/eval_helper/eval_helpers_symbol_with_block_test.rb +0 -16
  156. data/test/unit/eval_helper/eval_helpers_test.rb +0 -13
  157. data/test/unit/event/event_after_being_copied_test.rb +0 -17
  158. data/test/unit/event/event_by_default_test.rb +0 -60
  159. data/test/unit/event/event_context_test.rb +0 -16
  160. data/test/unit/event/event_on_failure_test.rb +0 -44
  161. data/test/unit/event/event_test.rb +0 -34
  162. data/test/unit/event/event_transitions_test.rb +0 -62
  163. data/test/unit/event/event_with_conflicting_helpers_after_definition_test.rb +0 -79
  164. data/test/unit/event/event_with_conflicting_helpers_before_definition_test.rb +0 -58
  165. data/test/unit/event/event_with_conflicting_machine_test.rb +0 -48
  166. data/test/unit/event/event_with_dynamic_human_name_test.rb +0 -26
  167. data/test/unit/event/event_with_human_name_test.rb +0 -13
  168. data/test/unit/event/event_with_invalid_current_state_test.rb +0 -30
  169. data/test/unit/event/event_with_machine_action_test.rb +0 -33
  170. data/test/unit/event/event_with_marshalling_test.rb +0 -47
  171. data/test/unit/event/event_with_matching_disabled_transitions_test.rb +0 -115
  172. data/test/unit/event/event_with_matching_enabled_transitions_test.rb +0 -75
  173. data/test/unit/event/event_with_multiple_transitions_test.rb +0 -61
  174. data/test/unit/event/event_with_namespace_test.rb +0 -34
  175. data/test/unit/event/event_with_transition_with_blacklisted_to_state_test.rb +0 -60
  176. data/test/unit/event/event_with_transition_with_loopback_state_test.rb +0 -36
  177. data/test/unit/event/event_with_transition_with_nil_to_state_test.rb +0 -36
  178. data/test/unit/event/event_with_transition_with_whitelisted_to_state_test.rb +0 -51
  179. data/test/unit/event/event_with_transition_without_to_state_test.rb +0 -36
  180. data/test/unit/event/event_with_transitions_test.rb +0 -32
  181. data/test/unit/event/event_without_matching_transitions_test.rb +0 -41
  182. data/test/unit/event/event_without_transitions_test.rb +0 -28
  183. data/test/unit/event/invalid_event_test.rb +0 -20
  184. data/test/unit/event_collection/event_collection_attribute_with_machine_action_test.rb +0 -62
  185. data/test/unit/event_collection/event_collection_attribute_with_namespaced_machine_test.rb +0 -36
  186. data/test/unit/event_collection/event_collection_by_default_test.rb +0 -26
  187. data/test/unit/event_collection/event_collection_test.rb +0 -39
  188. data/test/unit/event_collection/event_collection_with_custom_machine_attribute_test.rb +0 -31
  189. data/test/unit/event_collection/event_collection_with_events_with_transitions_test.rb +0 -76
  190. data/test/unit/event_collection/event_collection_with_multiple_events_test.rb +0 -27
  191. data/test/unit/event_collection/event_collection_with_validations_test.rb +0 -74
  192. data/test/unit/event_collection/event_collection_without_machine_action_test.rb +0 -18
  193. data/test/unit/event_collection/event_string_collection_test.rb +0 -31
  194. data/test/unit/helper_module_test.rb +0 -17
  195. data/test/unit/integrations/integration_finder_test.rb +0 -16
  196. data/test/unit/integrations/integration_matcher_test.rb +0 -29
  197. data/test/unit/invalid_transition/invalid_parallel_transition_test.rb +0 -18
  198. data/test/unit/invalid_transition/invalid_transition_test.rb +0 -47
  199. data/test/unit/invalid_transition/invalid_transition_with_integration_test.rb +0 -45
  200. data/test/unit/invalid_transition/invalid_transition_with_namespace_test.rb +0 -32
  201. data/test/unit/machine/machine_after_being_copied_test.rb +0 -62
  202. data/test/unit/machine/machine_after_changing_initial_state.rb +0 -28
  203. data/test/unit/machine/machine_after_changing_owner_class_test.rb +0 -31
  204. data/test/unit/machine/machine_by_default_test.rb +0 -160
  205. data/test/unit/machine/machine_finder_custom_options_test.rb +0 -17
  206. data/test/unit/machine/machine_finder_with_existing_machine_on_superclass_test.rb +0 -85
  207. data/test/unit/machine/machine_finder_with_existing_on_same_class_test.rb +0 -23
  208. data/test/unit/machine/machine_finder_without_existing_machine_test.rb +0 -25
  209. data/test/unit/machine/machine_persistence_test.rb +0 -52
  210. data/test/unit/machine/machine_state_initialization_test.rb +0 -56
  211. data/test/unit/machine/machine_test.rb +0 -30
  212. data/test/unit/machine/machine_with_action_already_overridden_test.rb +0 -23
  213. data/test/unit/machine/machine_with_action_defined_in_class_test.rb +0 -37
  214. data/test/unit/machine/machine_with_action_defined_in_included_module_test.rb +0 -46
  215. data/test/unit/machine/machine_with_action_defined_in_superclass_test.rb +0 -43
  216. data/test/unit/machine/machine_with_action_undefined_test.rb +0 -33
  217. data/test/unit/machine/machine_with_cached_state_test.rb +0 -20
  218. data/test/unit/machine/machine_with_class_helpers_test.rb +0 -179
  219. data/test/unit/machine/machine_with_conflicting_helpers_after_definition_test.rb +0 -244
  220. data/test/unit/machine/machine_with_conflicting_helpers_before_definition_test.rb +0 -175
  221. data/test/unit/machine/machine_with_custom_action_test.rb +0 -11
  222. data/test/unit/machine/machine_with_custom_attribute_test.rb +0 -103
  223. data/test/unit/machine/machine_with_custom_initialize_test.rb +0 -24
  224. data/test/unit/machine/machine_with_custom_integration_test.rb +0 -72
  225. data/test/unit/machine/machine_with_custom_invalidation_test.rb +0 -39
  226. data/test/unit/machine/machine_with_custom_name_test.rb +0 -57
  227. data/test/unit/machine/machine_with_custom_plural_test.rb +0 -52
  228. data/test/unit/machine/machine_with_dynamic_initial_state_test.rb +0 -65
  229. data/test/unit/machine/machine_with_event_matchers_test.rb +0 -41
  230. data/test/unit/machine/machine_with_events_test.rb +0 -52
  231. data/test/unit/machine/machine_with_events_with_custom_human_names_test.rb +0 -18
  232. data/test/unit/machine/machine_with_events_with_transitions_test.rb +0 -37
  233. data/test/unit/machine/machine_with_existing_event_test.rb +0 -17
  234. data/test/unit/machine/machine_with_existing_machines_on_owner_class_test.rb +0 -20
  235. data/test/unit/machine/machine_with_existing_machines_with_same_attributes_on_owner_class_test.rb +0 -71
  236. data/test/unit/machine/machine_with_existing_machines_with_same_attributes_on_owner_subclass_test.rb +0 -31
  237. data/test/unit/machine/machine_with_existing_state_test.rb +0 -27
  238. data/test/unit/machine/machine_with_failure_callbacks_test.rb +0 -48
  239. data/test/unit/machine/machine_with_helpers_test.rb +0 -14
  240. data/test/unit/machine/machine_with_initial_state_with_value_and_owner_default.rb +0 -25
  241. data/test/unit/machine/machine_with_initialize_and_super_test.rb +0 -17
  242. data/test/unit/machine/machine_with_initialize_arguments_and_block_test.rb +0 -31
  243. data/test/unit/machine/machine_with_initialize_without_super_test.rb +0 -17
  244. data/test/unit/machine/machine_with_instance_helpers_test.rb +0 -179
  245. data/test/unit/machine/machine_with_integration_test.rb +0 -72
  246. data/test/unit/machine/machine_with_multiple_events_test.rb +0 -32
  247. data/test/unit/machine/machine_with_namespace_test.rb +0 -48
  248. data/test/unit/machine/machine_with_nil_action_test.rb +0 -27
  249. data/test/unit/machine/machine_with_other_states.rb +0 -22
  250. data/test/unit/machine/machine_with_owner_subclass_test.rb +0 -18
  251. data/test/unit/machine/machine_with_paths_test.rb +0 -25
  252. data/test/unit/machine/machine_with_private_action_test.rb +0 -43
  253. data/test/unit/machine/machine_with_state_matchers_test.rb +0 -41
  254. data/test/unit/machine/machine_with_state_with_matchers_test.rb +0 -19
  255. data/test/unit/machine/machine_with_states_test.rb +0 -55
  256. data/test/unit/machine/machine_with_states_with_behaviors_test.rb +0 -23
  257. data/test/unit/machine/machine_with_states_with_custom_human_names_test.rb +0 -18
  258. data/test/unit/machine/machine_with_states_with_custom_values_test.rb +0 -21
  259. data/test/unit/machine/machine_with_states_with_runtime_dependencies_test.rb +0 -19
  260. data/test/unit/machine/machine_with_static_initial_state_test.rb +0 -49
  261. data/test/unit/machine/machine_with_superclass_conflicting_helpers_after_definition_test.rb +0 -36
  262. data/test/unit/machine/machine_with_transition_callbacks_test.rb +0 -144
  263. data/test/unit/machine/machine_with_transitions_test.rb +0 -87
  264. data/test/unit/machine/machine_without_initialization_test.rb +0 -31
  265. data/test/unit/machine/machine_without_initialize_test.rb +0 -14
  266. data/test/unit/machine/machine_without_integration_test.rb +0 -31
  267. data/test/unit/machine_collection/machine_collection_by_default_test.rb +0 -11
  268. data/test/unit/machine_collection/machine_collection_fire_test.rb +0 -80
  269. data/test/unit/machine_collection/machine_collection_fire_with_transactions_test.rb +0 -54
  270. data/test/unit/machine_collection/machine_collection_fire_with_validations_test.rb +0 -76
  271. data/test/unit/machine_collection/machine_collection_state_initialization_test.rb +0 -111
  272. data/test/unit/machine_collection/machine_collection_transitions_with_blank_events_test.rb +0 -25
  273. data/test/unit/machine_collection/machine_collection_transitions_with_custom_options_test.rb +0 -20
  274. data/test/unit/machine_collection/machine_collection_transitions_with_different_actions_test.rb +0 -26
  275. data/test/unit/machine_collection/machine_collection_transitions_with_exisiting_transitions_test.rb +0 -25
  276. data/test/unit/machine_collection/machine_collection_transitions_with_invalid_events_test.rb +0 -25
  277. data/test/unit/machine_collection/machine_collection_transitions_with_same_actions_test.rb +0 -31
  278. data/test/unit/machine_collection/machine_collection_transitions_with_transition_test.rb +0 -26
  279. data/test/unit/machine_collection/machine_collection_transitions_without_events_test.rb +0 -25
  280. data/test/unit/machine_collection/machine_collection_transitions_without_transition_test.rb +0 -27
  281. data/test/unit/matcher/all_matcher_test.rb +0 -29
  282. data/test/unit/matcher/blacklist_matcher_test.rb +0 -30
  283. data/test/unit/matcher/loopback_matcher_test.rb +0 -27
  284. data/test/unit/matcher/matcher_by_default_test.rb +0 -15
  285. data/test/unit/matcher/matcher_with_multiple_values_test.rb +0 -15
  286. data/test/unit/matcher/matcher_with_value_test.rb +0 -15
  287. data/test/unit/matcher/whitelist_matcher_test.rb +0 -30
  288. data/test/unit/matcher_helpers/matcher_helpers_all_test.rb +0 -14
  289. data/test/unit/matcher_helpers/matcher_helpers_any_test.rb +0 -14
  290. data/test/unit/matcher_helpers/matcher_helpers_same_test.rb +0 -13
  291. data/test/unit/node_collection/node_collection_after_being_copied_test.rb +0 -46
  292. data/test/unit/node_collection/node_collection_after_update_test.rb +0 -36
  293. data/test/unit/node_collection/node_collection_by_default_test.rb +0 -22
  294. data/test/unit/node_collection/node_collection_test.rb +0 -23
  295. data/test/unit/node_collection/node_collection_with_indices_test.rb +0 -42
  296. data/test/unit/node_collection/node_collection_with_matcher_contexts_test.rb +0 -25
  297. data/test/unit/node_collection/node_collection_with_nodes_test.rb +0 -46
  298. data/test/unit/node_collection/node_collection_with_numeric_index_test.rb +0 -24
  299. data/test/unit/node_collection/node_collection_with_postdefined_contexts_test.rb +0 -22
  300. data/test/unit/node_collection/node_collection_with_predefined_contexts_test.rb +0 -23
  301. data/test/unit/node_collection/node_collection_with_string_index_test.rb +0 -20
  302. data/test/unit/node_collection/node_collection_with_symbol_index_test.rb +0 -20
  303. data/test/unit/node_collection/node_collection_without_indices_test.rb +0 -30
  304. data/test/unit/path/path_by_default_test.rb +0 -54
  305. data/test/unit/path/path_test.rb +0 -14
  306. data/test/unit/path/path_with_available_transitions_after_reaching_target_test.rb +0 -40
  307. data/test/unit/path/path_with_available_transitions_test.rb +0 -54
  308. data/test/unit/path/path_with_deep_target_reached_test.rb +0 -50
  309. data/test/unit/path/path_with_deep_target_test.rb +0 -40
  310. data/test/unit/path/path_with_duplicates_test.rb +0 -32
  311. data/test/unit/path/path_with_encountered_transitions_test.rb +0 -34
  312. data/test/unit/path/path_with_guarded_transitions_test.rb +0 -42
  313. data/test/unit/path/path_with_reached_target_test.rb +0 -35
  314. data/test/unit/path/path_with_transitions_test.rb +0 -54
  315. data/test/unit/path/path_with_unreached_target_test.rb +0 -31
  316. data/test/unit/path/path_without_transitions_test.rb +0 -24
  317. data/test/unit/path_collection/path_collection_by_default_test.rb +0 -46
  318. data/test/unit/path_collection/path_collection_test.rb +0 -24
  319. data/test/unit/path_collection/path_collection_with_deep_paths_test.rb +0 -43
  320. data/test/unit/path_collection/path_collection_with_duplicate_nodes_test.rb +0 -31
  321. data/test/unit/path_collection/path_collection_with_from_state_test.rb +0 -27
  322. data/test/unit/path_collection/path_collection_with_paths_test.rb +0 -47
  323. data/test/unit/path_collection/path_collection_with_to_state_test.rb +0 -29
  324. data/test/unit/path_collection/path_with_guarded_paths_test.rb +0 -25
  325. data/test/unit/state/state_after_being_copied_test.rb +0 -19
  326. data/test/unit/state/state_by_default_test.rb +0 -41
  327. data/test/unit/state/state_final_test.rb +0 -28
  328. data/test/unit/state/state_initial_test.rb +0 -13
  329. data/test/unit/state/state_not_final_test.rb +0 -32
  330. data/test/unit/state/state_not_initial_test.rb +0 -13
  331. data/test/unit/state/state_test.rb +0 -44
  332. data/test/unit/state/state_with_cached_lambda_value_test.rb +0 -29
  333. data/test/unit/state/state_with_conflicting_helpers_after_definition_test.rb +0 -38
  334. data/test/unit/state/state_with_conflicting_helpers_before_definition_test.rb +0 -29
  335. data/test/unit/state/state_with_conflicting_machine_name_test.rb +0 -20
  336. data/test/unit/state/state_with_conflicting_machine_test.rb +0 -37
  337. data/test/unit/state/state_with_context_test.rb +0 -60
  338. data/test/unit/state/state_with_dynamic_human_name_test.rb +0 -25
  339. data/test/unit/state/state_with_existing_context_method_test.rb +0 -24
  340. data/test/unit/state/state_with_human_name_test.rb +0 -13
  341. data/test/unit/state/state_with_integer_value_test.rb +0 -32
  342. data/test/unit/state/state_with_invalid_method_call_test.rb +0 -21
  343. data/test/unit/state/state_with_lambda_value_test.rb +0 -37
  344. data/test/unit/state/state_with_matcher_test.rb +0 -18
  345. data/test/unit/state/state_with_multiple_contexts_test.rb +0 -57
  346. data/test/unit/state/state_with_name_test.rb +0 -43
  347. data/test/unit/state/state_with_namespace_test.rb +0 -22
  348. data/test/unit/state/state_with_nil_value_test.rb +0 -35
  349. data/test/unit/state/state_with_redefined_context_method_test.rb +0 -45
  350. data/test/unit/state/state_with_symbolic_value_test.rb +0 -32
  351. data/test/unit/state/state_with_valid_inherited_method_call_for_current_state_test.rb +0 -40
  352. data/test/unit/state/state_with_valid_method_call_for_current_state_test.rb +0 -33
  353. data/test/unit/state/state_with_valid_method_call_for_different_state_test.rb +0 -41
  354. data/test/unit/state/state_without_cached_lambda_value_test.rb +0 -25
  355. data/test/unit/state/state_without_name_test.rb +0 -39
  356. data/test/unit/state_collection/state_collection_by_default_test.rb +0 -21
  357. data/test/unit/state_collection/state_collection_string_test.rb +0 -35
  358. data/test/unit/state_collection/state_collection_test.rb +0 -74
  359. data/test/unit/state_collection/state_collection_with_custom_state_values_test.rb +0 -29
  360. data/test/unit/state_collection/state_collection_with_event_transitions_test.rb +0 -39
  361. data/test/unit/state_collection/state_collection_with_initial_state_test.rb +0 -40
  362. data/test/unit/state_collection/state_collection_with_namespace_test.rb +0 -21
  363. data/test/unit/state_collection/state_collection_with_state_behaviors_test.rb +0 -40
  364. data/test/unit/state_collection/state_collection_with_state_matchers_test.rb +0 -29
  365. data/test/unit/state_collection/state_collection_with_transition_callbacks_test.rb +0 -40
  366. data/test/unit/state_context/state_context_proxy_test.rb +0 -26
  367. data/test/unit/state_context/state_context_proxy_with_if_and_unless_conditions_test.rb +0 -42
  368. data/test/unit/state_context/state_context_proxy_with_if_condition_test.rb +0 -64
  369. data/test/unit/state_context/state_context_proxy_with_multiple_if_conditions_test.rb +0 -32
  370. data/test/unit/state_context/state_context_proxy_with_multiple_unless_conditions_test.rb +0 -32
  371. data/test/unit/state_context/state_context_proxy_with_unless_condition_test.rb +0 -64
  372. data/test/unit/state_context/state_context_proxy_without_conditions_test.rb +0 -31
  373. data/test/unit/state_context/state_context_test.rb +0 -28
  374. data/test/unit/state_context/state_context_transition_test.rb +0 -104
  375. data/test/unit/state_context/state_context_with_matching_transition_test.rb +0 -27
  376. data/test/unit/state_machine/state_machine_by_default_test.rb +0 -12
  377. data/test/unit/state_machine/state_machine_test.rb +0 -20
  378. data/test/unit/transition/transition_after_being_performed_test.rb +0 -48
  379. data/test/unit/transition/transition_after_being_persisted_test.rb +0 -46
  380. data/test/unit/transition/transition_after_being_rolled_back_test.rb +0 -35
  381. data/test/unit/transition/transition_equality_test.rb +0 -52
  382. data/test/unit/transition/transition_loopback_test.rb +0 -18
  383. data/test/unit/transition/transition_test.rb +0 -96
  384. data/test/unit/transition/transition_transient_test.rb +0 -20
  385. data/test/unit/transition/transition_with_action_test.rb +0 -27
  386. data/test/unit/transition/transition_with_after_callbacks_skipped_test.rb +0 -127
  387. data/test/unit/transition/transition_with_after_callbacks_test.rb +0 -93
  388. data/test/unit/transition/transition_with_around_callbacks_test.rb +0 -141
  389. data/test/unit/transition/transition_with_before_callbacks_skipped_test.rb +0 -30
  390. data/test/unit/transition/transition_with_before_callbacks_test.rb +0 -104
  391. data/test/unit/transition/transition_with_custom_machine_attribute_test.rb +0 -28
  392. data/test/unit/transition/transition_with_different_states_test.rb +0 -18
  393. data/test/unit/transition/transition_with_dynamic_to_value_test.rb +0 -19
  394. data/test/unit/transition/transition_with_failure_callbacks_test.rb +0 -84
  395. data/test/unit/transition/transition_with_invalid_nodes_test.rb +0 -29
  396. data/test/unit/transition/transition_with_mixed_callbacks_test.rb +0 -105
  397. data/test/unit/transition/transition_with_multiple_after_callbacks_test.rb +0 -40
  398. data/test/unit/transition/transition_with_multiple_around_callbacks_test.rb +0 -114
  399. data/test/unit/transition/transition_with_multiple_before_callbacks_test.rb +0 -40
  400. data/test/unit/transition/transition_with_multiple_failure_callbacks_test.rb +0 -40
  401. data/test/unit/transition/transition_with_namespace_test.rb +0 -47
  402. data/test/unit/transition/transition_with_perform_arguments_test.rb +0 -35
  403. data/test/unit/transition/transition_with_transactions_test.rb +0 -42
  404. data/test/unit/transition/transition_without_callbacks_test.rb +0 -33
  405. data/test/unit/transition/transition_without_reading_state_test.rb +0 -22
  406. data/test/unit/transition/transition_without_running_action_test.rb +0 -47
  407. data/test/unit/transition_collection/attribute_transition_collection_by_default_test.rb +0 -23
  408. data/test/unit/transition_collection/attribute_transition_collection_marshalling_test.rb +0 -64
  409. data/test/unit/transition_collection/attribute_transition_collection_with_action_error_test.rb +0 -44
  410. data/test/unit/transition_collection/attribute_transition_collection_with_action_failed_test.rb +0 -44
  411. data/test/unit/transition_collection/attribute_transition_collection_with_after_callback_error_test.rb +0 -32
  412. data/test/unit/transition_collection/attribute_transition_collection_with_after_callback_halt_test.rb +0 -33
  413. data/test/unit/transition_collection/attribute_transition_collection_with_around_after_yield_callback_error_test.rb +0 -32
  414. data/test/unit/transition_collection/attribute_transition_collection_with_around_callback_after_yield_error_test.rb +0 -32
  415. data/test/unit/transition_collection/attribute_transition_collection_with_around_callback_after_yield_halt_test.rb +0 -33
  416. data/test/unit/transition_collection/attribute_transition_collection_with_around_callback_before_yield_halt_test.rb +0 -33
  417. data/test/unit/transition_collection/attribute_transition_collection_with_before_callback_error_test.rb +0 -32
  418. data/test/unit/transition_collection/attribute_transition_collection_with_before_callback_halt_test.rb +0 -33
  419. data/test/unit/transition_collection/attribute_transition_collection_with_callbacks_test.rb +0 -68
  420. data/test/unit/transition_collection/attribute_transition_collection_with_event_transitions_test.rb +0 -41
  421. data/test/unit/transition_collection/attribute_transition_collection_with_events_test.rb +0 -44
  422. data/test/unit/transition_collection/attribute_transition_collection_with_skipped_after_callbacks_test.rb +0 -42
  423. data/test/unit/transition_collection/transition_collection_by_default_test.rb +0 -23
  424. data/test/unit/transition_collection/transition_collection_empty_with_block_test.rb +0 -23
  425. data/test/unit/transition_collection/transition_collection_empty_without_block_test.rb +0 -12
  426. data/test/unit/transition_collection/transition_collection_invalid_test.rb +0 -21
  427. data/test/unit/transition_collection/transition_collection_partial_invalid_test.rb +0 -69
  428. data/test/unit/transition_collection/transition_collection_test.rb +0 -26
  429. data/test/unit/transition_collection/transition_collection_valid_test.rb +0 -57
  430. data/test/unit/transition_collection/transition_collection_with_action_error_test.rb +0 -66
  431. data/test/unit/transition_collection/transition_collection_with_action_failed_test.rb +0 -60
  432. data/test/unit/transition_collection/transition_collection_with_action_hook_and_block_test.rb +0 -17
  433. data/test/unit/transition_collection/transition_collection_with_action_hook_and_skipped_action_test.rb +0 -17
  434. data/test/unit/transition_collection/transition_collection_with_action_hook_and_skipped_after_callbacks_test.rb +0 -37
  435. data/test/unit/transition_collection/transition_collection_with_action_hook_base_test.rb +0 -34
  436. data/test/unit/transition_collection/transition_collection_with_action_hook_error_test.rb +0 -29
  437. data/test/unit/transition_collection/transition_collection_with_action_hook_invalid_test.rb +0 -17
  438. data/test/unit/transition_collection/transition_collection_with_action_hook_multiple_test.rb +0 -79
  439. data/test/unit/transition_collection/transition_collection_with_action_hook_test.rb +0 -45
  440. data/test/unit/transition_collection/transition_collection_with_action_hook_with_different_actions_test.rb +0 -48
  441. data/test/unit/transition_collection/transition_collection_with_action_hook_with_nil_action_test.rb +0 -42
  442. data/test/unit/transition_collection/transition_collection_with_after_callback_halt_test.rb +0 -47
  443. data/test/unit/transition_collection/transition_collection_with_before_callback_halt_test.rb +0 -51
  444. data/test/unit/transition_collection/transition_collection_with_block_test.rb +0 -46
  445. data/test/unit/transition_collection/transition_collection_with_callbacks_test.rb +0 -135
  446. data/test/unit/transition_collection/transition_collection_with_different_actions_test.rb +0 -189
  447. data/test/unit/transition_collection/transition_collection_with_duplicate_actions_test.rb +0 -48
  448. data/test/unit/transition_collection/transition_collection_with_empty_actions_test.rb +0 -41
  449. data/test/unit/transition_collection/transition_collection_with_mixed_actions_test.rb +0 -41
  450. data/test/unit/transition_collection/transition_collection_with_skipped_actions_and_block_test.rb +0 -34
  451. data/test/unit/transition_collection/transition_collection_with_skipped_actions_test.rb +0 -69
  452. data/test/unit/transition_collection/transition_collection_with_skipped_after_callbacks_and_around_callbacks_test.rb +0 -53
  453. data/test/unit/transition_collection/transition_collection_with_skipped_after_callbacks_test.rb +0 -34
  454. data/test/unit/transition_collection/transition_collection_with_transactions_test.rb +0 -65
  455. data/test/unit/transition_collection/transition_collection_without_transactions_test.rb +0 -29
@@ -2,25 +2,25 @@ module StateMachines
2
2
  # Represents a collection of states in a state machine
3
3
  class StateCollection < NodeCollection
4
4
  def initialize(machine) #:nodoc:
5
- super(machine, :index => [:name, :qualified_name, :value])
5
+ super(machine, index: [:name, :qualified_name, :value])
6
6
  end
7
7
 
8
8
  # Determines whether the given object is in a specific state. If the
9
9
  # object's current value doesn't match the state, then this will return
10
10
  # false, otherwise true. If the given state is unknown, then an IndexError
11
11
  # will be raised.
12
- #
12
+ #
13
13
  # == Examples
14
- #
14
+ #
15
15
  # class Vehicle
16
16
  # state_machine :initial => :parked do
17
17
  # other_states :idling
18
18
  # end
19
19
  # end
20
- #
20
+ #
21
21
  # states = Vehicle.state_machine.states
22
22
  # vehicle = Vehicle.new # => #<Vehicle:0xb7c464b0 @state="parked">
23
- #
23
+ #
24
24
  # states.matches?(vehicle, :parked) # => true
25
25
  # states.matches?(vehicle, :idling) # => false
26
26
  # states.matches?(vehicle, :invalid) # => IndexError: :invalid is an invalid key for :name index
@@ -31,23 +31,23 @@ module StateMachines
31
31
  # Determines the current state of the given object as configured by this
32
32
  # state machine. This will attempt to find a known state that matches
33
33
  # the value of the attribute on the object.
34
- #
34
+ #
35
35
  # == Examples
36
- #
36
+ #
37
37
  # class Vehicle
38
38
  # state_machine :initial => :parked do
39
39
  # other_states :idling
40
40
  # end
41
41
  # end
42
- #
42
+ #
43
43
  # states = Vehicle.state_machine.states
44
- #
44
+ #
45
45
  # vehicle = Vehicle.new # => #<Vehicle:0xb7c464b0 @state="parked">
46
46
  # states.match(vehicle) # => #<StateMachines::State name=:parked value="parked" initial=true>
47
- #
47
+ #
48
48
  # vehicle.state = 'idling'
49
49
  # states.match(vehicle) # => #<StateMachines::State name=:idling value="idling" initial=true>
50
- #
50
+ #
51
51
  # vehicle.state = 'invalid'
52
52
  # states.match(vehicle) # => nil
53
53
  def match(object)
@@ -58,20 +58,20 @@ module StateMachines
58
58
  # Determines the current state of the given object as configured by this
59
59
  # state machine. If no state is found, then an ArgumentError will be
60
60
  # raised.
61
- #
61
+ #
62
62
  # == Examples
63
- #
63
+ #
64
64
  # class Vehicle
65
65
  # state_machine :initial => :parked do
66
66
  # other_states :idling
67
67
  # end
68
68
  # end
69
- #
69
+ #
70
70
  # states = Vehicle.state_machine.states
71
- #
71
+ #
72
72
  # vehicle = Vehicle.new # => #<Vehicle:0xb7c464b0 @state="parked">
73
73
  # states.match!(vehicle) # => #<StateMachines::State name=:parked value="parked" initial=true>
74
- #
74
+ #
75
75
  # vehicle.state = 'invalid'
76
76
  # states.match!(vehicle) # => ArgumentError: "invalid" is not a known state value
77
77
  def match!(object)
@@ -80,13 +80,13 @@ module StateMachines
80
80
 
81
81
  # Gets the order in which states should be displayed based on where they
82
82
  # were first referenced. This will order states in the following priority:
83
- #
83
+ #
84
84
  # 1. Initial state
85
85
  # 2. Event transitions (:from, :except_from, :to, :except_to options)
86
86
  # 3. States with behaviors
87
87
  # 4. States referenced via +state+ or +other_states+
88
88
  # 5. States referenced in callbacks
89
- #
89
+ #
90
90
  # This order will determine how the GraphViz visualizations are rendered.
91
91
  def by_priority
92
92
  order = select { |state| state.initial }.map { |state| state.name }
@@ -101,7 +101,8 @@ module StateMachines
101
101
  order
102
102
  end
103
103
 
104
- private
104
+ private
105
+
105
106
  # Gets the value for the given attribute on the node
106
107
  def value(node, attribute)
107
108
  attribute == :value ? node.value(false) : super
@@ -1,100 +1,98 @@
1
1
  module StateMachines
2
-
3
-
4
2
  # Represents a module which will get evaluated within the context of a state.
5
- #
3
+ #
6
4
  # Class-level methods are proxied to the owner class, injecting a custom
7
5
  # <tt>:if</tt> condition along with method. This assumes that the method has
8
6
  # support for a set of configuration options, including <tt>:if</tt>. This
9
7
  # condition will check that the object's state matches this context's state.
10
- #
8
+ #
11
9
  # Instance-level methods are used to define state-driven behavior on the
12
10
  # state's owner class.
13
- #
11
+ #
14
12
  # == Examples
15
- #
13
+ #
16
14
  # class Vehicle
17
15
  # class << self
18
16
  # attr_accessor :validations
19
- #
17
+ #
20
18
  # def validate(options, &block)
21
19
  # validations << options
22
20
  # end
23
21
  # end
24
- #
22
+ #
25
23
  # self.validations = []
26
24
  # attr_accessor :state, :simulate
27
- #
25
+ #
28
26
  # def moving?
29
27
  # self.class.validations.all? {|validation| validation[:if].call(self)}
30
28
  # end
31
29
  # end
32
- #
30
+ #
33
31
  # In the above class, a simple set of validation behaviors have been defined.
34
32
  # Each validation consists of a configuration like so:
35
- #
33
+ #
36
34
  # Vehicle.validate :unless => :simulate
37
35
  # Vehicle.validate :if => lambda {|vehicle| ...}
38
- #
36
+ #
39
37
  # In order to scope validations to a particular state context, the class-level
40
38
  # +validate+ method can be invoked like so:
41
- #
39
+ #
42
40
  # machine = StateMachines::Machine.new(Vehicle)
43
41
  # context = StateMachines::StateContext.new(machine.state(:first_gear))
44
42
  # context.validate(:unless => :simulate)
45
- #
43
+ #
46
44
  # vehicle = Vehicle.new # => #<Vehicle:0xb7ce491c @simulate=nil, @state=nil>
47
45
  # vehicle.moving? # => false
48
- #
46
+ #
49
47
  # vehicle.state = 'first_gear'
50
48
  # vehicle.moving? # => true
51
- #
49
+ #
52
50
  # vehicle.simulate = true
53
51
  # vehicle.moving? # => false
54
52
  class StateContext < Module
55
53
 
56
54
  include EvalHelpers
57
-
55
+
58
56
  # The state machine for which this context's state is defined
59
57
  attr_reader :machine
60
-
58
+
61
59
  # The state that must be present in an object for this context to be active
62
60
  attr_reader :state
63
-
61
+
64
62
  # Creates a new context for the given state
65
63
  def initialize(state)
66
64
  @state = state
67
65
  @machine = state.machine
68
-
66
+
69
67
  state_name = state.name
70
68
  machine_name = machine.name
71
- @condition = lambda {|object| object.class.state_machine(machine_name).states.matches?(object, state_name)}
69
+ @condition = lambda { |object| object.class.state_machine(machine_name).states.matches?(object, state_name) }
72
70
  end
73
-
71
+
74
72
  # Creates a new transition that determines what to change the current state
75
73
  # to when an event fires from this state.
76
- #
74
+ #
77
75
  # Since this transition is being defined within a state context, you do
78
76
  # *not* need to specify the <tt>:from</tt> option for the transition. For
79
77
  # example:
80
- #
78
+ #
81
79
  # state_machine do
82
80
  # state :parked do
83
81
  # transition :to => :idling, :on => [:ignite, :shift_up] # Transitions to :idling
84
82
  # transition :from => [:idling, :parked], :on => :park, :unless => :seatbelt_on? # Transitions to :parked if seatbelt is off
85
83
  # end
86
84
  # end
87
- #
85
+ #
88
86
  # See StateMachines::Machine#transition for a description of the possible
89
87
  # configurations for defining transitions.
90
88
  def transition(options)
91
89
  options.assert_valid_keys(:from, :to, :on, :if, :unless)
92
90
  raise ArgumentError, 'Must specify :on event' unless options[:on]
93
91
  raise ArgumentError, 'Must specify either :to or :from state' unless !options[:to] ^ !options[:from]
94
-
95
- machine.transition(options.merge(options[:to] ? {:from => state.name} : {:to => state.name}))
92
+
93
+ machine.transition(options.merge(options[:to] ? {from: state.name} : {to: state.name}))
96
94
  end
97
-
95
+
98
96
  # Hooks in condition-merging to methods that don't exist in this module
99
97
  def method_missing(*args, &block)
100
98
  # Get the configuration
@@ -103,28 +101,28 @@ module StateMachines
103
101
  else
104
102
  args << options = {}
105
103
  end
106
-
104
+
107
105
  # Get any existing condition that may need to be merged
108
106
  if_condition = options.delete(:if)
109
107
  unless_condition = options.delete(:unless)
110
-
108
+
111
109
  # Provide scope access to configuration in case the block is evaluated
112
110
  # within the object instance
113
111
  proxy = self
114
112
  proxy_condition = @condition
115
-
113
+
116
114
  # Replace the configuration condition with the one configured for this
117
115
  # proxy, merging together any existing conditions
118
116
  options[:if] = lambda do |*condition_args|
119
117
  # Block may be executed within the context of the actual object, so
120
118
  # it'll either be the first argument or the executing context
121
119
  object = condition_args.first || self
122
-
120
+
123
121
  proxy.evaluate_method(object, proxy_condition) &&
124
- Array(if_condition).all? {|condition| proxy.evaluate_method(object, condition)} &&
125
- !Array(unless_condition).any? {|condition| proxy.evaluate_method(object, condition)}
122
+ Array(if_condition).all? { |condition| proxy.evaluate_method(object, condition) } &&
123
+ !Array(unless_condition).any? { |condition| proxy.evaluate_method(object, condition) }
126
124
  end
127
-
125
+
128
126
  # Evaluate the method on the owner class with the condition proxied
129
127
  # through
130
128
  machine.owner_class.send(*args, &block)