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.
- checksums.yaml +5 -5
- data/LICENSE.txt +1 -1
- data/README.md +34 -15
- data/lib/state_machines/assertions.rb +2 -0
- data/lib/state_machines/branch.rb +85 -81
- data/lib/state_machines/callback.rb +24 -21
- data/lib/state_machines/core.rb +2 -0
- data/lib/state_machines/core_ext/class/state_machine.rb +2 -0
- data/lib/state_machines/core_ext.rb +2 -0
- data/lib/state_machines/error.rb +2 -0
- data/lib/state_machines/eval_helpers.rb +51 -22
- data/lib/state_machines/event.rb +35 -30
- data/lib/state_machines/event_collection.rb +28 -25
- data/lib/state_machines/extensions.rb +3 -1
- data/lib/state_machines/helper_module.rb +3 -1
- data/lib/state_machines/integrations/base.rb +2 -0
- data/lib/state_machines/integrations.rb +10 -8
- data/lib/state_machines/machine/class_methods.rb +79 -0
- data/lib/state_machines/machine.rb +381 -425
- data/lib/state_machines/machine_collection.rb +13 -10
- data/lib/state_machines/macro_methods.rb +102 -100
- data/lib/state_machines/matcher.rb +26 -23
- data/lib/state_machines/matcher_helpers.rb +13 -11
- data/lib/state_machines/node_collection.rb +17 -13
- data/lib/state_machines/path.rb +58 -55
- data/lib/state_machines/path_collection.rb +37 -35
- data/lib/state_machines/state.rb +50 -38
- data/lib/state_machines/state_collection.rb +22 -19
- data/lib/state_machines/state_context.rb +35 -35
- data/lib/state_machines/stdio_renderer.rb +74 -0
- data/lib/state_machines/transition.rb +182 -178
- data/lib/state_machines/transition_collection.rb +172 -168
- data/lib/state_machines/version.rb +3 -1
- data/lib/state_machines.rb +4 -1
- metadata +10 -439
- data/.gitignore +0 -21
- data/.rspec +0 -3
- data/.ruby-gemset +0 -1
- data/.ruby-version +0 -1
- data/.travis.yml +0 -16
- data/Changelog.md +0 -22
- data/Contributors.md +0 -39
- data/Gemfile +0 -8
- data/Rakefile +0 -12
- data/Testing.md +0 -0
- data/state_machines.gemspec +0 -22
- data/test/files/integrations/event_on_failure_integration.rb +0 -10
- data/test/files/integrations/vehicle.rb +0 -7
- data/test/files/models/auto_shop.rb +0 -31
- data/test/files/models/car.rb +0 -21
- data/test/files/models/driver.rb +0 -13
- data/test/files/models/model_base.rb +0 -6
- data/test/files/models/motorcycle.rb +0 -16
- data/test/files/models/traffic_light.rb +0 -47
- data/test/files/models/vehicle.rb +0 -127
- data/test/files/node.rb +0 -5
- data/test/files/switch.rb +0 -15
- data/test/functional/auto_shop_available_test.rb +0 -20
- data/test/functional/auto_shop_busy_test.rb +0 -25
- data/test/functional/car_backing_up_test.rb +0 -45
- data/test/functional/car_test.rb +0 -49
- data/test/functional/driver_default_nonstandard_test.rb +0 -13
- data/test/functional/motorcycle_test.rb +0 -52
- data/test/functional/traffic_light_caution_test.rb +0 -17
- data/test/functional/traffic_light_proceed_test.rb +0 -17
- data/test/functional/traffic_light_stop_test.rb +0 -26
- data/test/functional/vehicle_first_gear_test.rb +0 -42
- data/test/functional/vehicle_idling_test.rb +0 -59
- data/test/functional/vehicle_locked_test.rb +0 -29
- data/test/functional/vehicle_parked_test.rb +0 -53
- data/test/functional/vehicle_repaired_test.rb +0 -20
- data/test/functional/vehicle_second_gear_test.rb +0 -42
- data/test/functional/vehicle_stalled_test.rb +0 -65
- data/test/functional/vehicle_test.rb +0 -20
- data/test/functional/vehicle_third_gear_test.rb +0 -42
- data/test/functional/vehicle_unsaved_test.rb +0 -181
- data/test/functional/vehicle_with_event_attributes_test.rb +0 -30
- data/test/functional/vehicle_with_parallel_events_test.rb +0 -36
- data/test/test_helper.rb +0 -15
- data/test/unit/assertions/assert_exclusive_keys_test.rb +0 -22
- data/test/unit/assertions/assert_valid_key_test.rb +0 -12
- data/test/unit/branch/branch_test.rb +0 -28
- data/test/unit/branch/branch_with_conflicting_conditionals_test.rb +0 -27
- data/test/unit/branch/branch_with_conflicting_from_requirements_test.rb +0 -8
- data/test/unit/branch/branch_with_conflicting_on_requirements_test.rb +0 -8
- data/test/unit/branch/branch_with_conflicting_to_requirements_test.rb +0 -8
- data/test/unit/branch/branch_with_different_requirements_test.rb +0 -41
- data/test/unit/branch/branch_with_except_from_matcher_requirement_test.rb +0 -8
- data/test/unit/branch/branch_with_except_from_requirement_test.rb +0 -36
- data/test/unit/branch/branch_with_except_on_matcher_requirement_test.rb +0 -8
- data/test/unit/branch/branch_with_except_on_requirement_test.rb +0 -36
- data/test/unit/branch/branch_with_except_to_matcher_requirement_test.rb +0 -8
- data/test/unit/branch/branch_with_except_to_requirement_test.rb +0 -36
- data/test/unit/branch/branch_with_from_matcher_requirement_test.rb +0 -20
- data/test/unit/branch/branch_with_from_requirement_test.rb +0 -45
- data/test/unit/branch/branch_with_if_conditional_test.rb +0 -27
- data/test/unit/branch/branch_with_implicit_and_explicit_requirements_test.rb +0 -23
- data/test/unit/branch/branch_with_implicit_from_requirement_matcher_test.rb +0 -20
- data/test/unit/branch/branch_with_implicit_requirement_test.rb +0 -20
- data/test/unit/branch/branch_with_implicit_to_requirement_matcher_test.rb +0 -16
- data/test/unit/branch/branch_with_multiple_except_from_requirements_test.rb +0 -20
- data/test/unit/branch/branch_with_multiple_except_on_requirements_test.rb +0 -16
- data/test/unit/branch/branch_with_multiple_except_to_requirements_test.rb +0 -20
- data/test/unit/branch/branch_with_multiple_from_requirements_test.rb +0 -16
- data/test/unit/branch/branch_with_multiple_if_conditionals_test.rb +0 -20
- data/test/unit/branch/branch_with_multiple_implicit_requirements_test.rb +0 -53
- data/test/unit/branch/branch_with_multiple_to_requirements_test.rb +0 -20
- data/test/unit/branch/branch_with_multiple_unless_conditionals_test.rb +0 -20
- data/test/unit/branch/branch_with_nil_requirements_test.rb +0 -28
- data/test/unit/branch/branch_with_no_requirements_test.rb +0 -36
- data/test/unit/branch/branch_with_on_matcher_requirement_test.rb +0 -16
- data/test/unit/branch/branch_with_on_requirement_test.rb +0 -45
- data/test/unit/branch/branch_with_to_matcher_requirement_test.rb +0 -20
- data/test/unit/branch/branch_with_to_requirement_test.rb +0 -45
- data/test/unit/branch/branch_with_unless_conditional_test.rb +0 -27
- data/test/unit/branch/branch_without_guards_test.rb +0 -27
- data/test/unit/callback/callback_by_default_test.rb +0 -25
- data/test/unit/callback/callback_test.rb +0 -53
- data/test/unit/callback/callback_with_application_bound_object_test.rb +0 -23
- data/test/unit/callback/callback_with_application_terminator_test.rb +0 -24
- data/test/unit/callback/callback_with_arguments_test.rb +0 -14
- data/test/unit/callback/callback_with_around_type_and_arguments_test.rb +0 -25
- data/test/unit/callback/callback_with_around_type_and_block_test.rb +0 -44
- data/test/unit/callback/callback_with_around_type_and_bound_method_test.rb +0 -23
- data/test/unit/callback/callback_with_around_type_and_multiple_methods_test.rb +0 -93
- data/test/unit/callback/callback_with_around_type_and_terminator_test.rb +0 -17
- data/test/unit/callback/callback_with_block_test.rb +0 -20
- data/test/unit/callback/callback_with_bound_method_and_arguments_test.rb +0 -28
- data/test/unit/callback/callback_with_bound_method_test.rb +0 -35
- data/test/unit/callback/callback_with_do_method_test.rb +0 -18
- data/test/unit/callback/callback_with_explicit_requirements_test.rb +0 -32
- data/test/unit/callback/callback_with_if_condition_test.rb +0 -17
- data/test/unit/callback/callback_with_implicit_requirements_test.rb +0 -32
- data/test/unit/callback/callback_with_method_argument_test.rb +0 -18
- data/test/unit/callback/callback_with_mixed_methods_test.rb +0 -31
- data/test/unit/callback/callback_with_multiple_bound_methods_test.rb +0 -21
- data/test/unit/callback/callback_with_multiple_do_methods_test.rb +0 -29
- data/test/unit/callback/callback_with_multiple_method_arguments_test.rb +0 -29
- data/test/unit/callback/callback_with_terminator_test.rb +0 -22
- data/test/unit/callback/callback_with_unbound_method_test.rb +0 -14
- data/test/unit/callback/callback_with_unless_condition_test.rb +0 -17
- data/test/unit/callback/callback_without_arguments_test.rb +0 -14
- data/test/unit/callback/callback_without_terminator_test.rb +0 -12
- data/test/unit/error/error_by_default_test.rb +0 -21
- data/test/unit/error/error_with_message_test.rb +0 -23
- data/test/unit/eval_helper/eval_helpers_base_test.rb +0 -8
- data/test/unit/eval_helper/eval_helpers_proc_block_and_explicit_arguments_test.rb +0 -14
- data/test/unit/eval_helper/eval_helpers_proc_block_and_implicit_arguments_test.rb +0 -14
- data/test/unit/eval_helper/eval_helpers_proc_test.rb +0 -13
- data/test/unit/eval_helper/eval_helpers_proc_with_arguments_test.rb +0 -13
- data/test/unit/eval_helper/eval_helpers_proc_with_block_test.rb +0 -13
- data/test/unit/eval_helper/eval_helpers_proc_with_block_without_arguments_test.rb +0 -18
- data/test/unit/eval_helper/eval_helpers_proc_with_block_without_object_test.rb +0 -14
- data/test/unit/eval_helper/eval_helpers_proc_without_arguments_test.rb +0 -19
- data/test/unit/eval_helper/eval_helpers_string_test.rb +0 -25
- data/test/unit/eval_helper/eval_helpers_string_with_block_test.rb +0 -12
- data/test/unit/eval_helper/eval_helpers_symbol_method_missing_test.rb +0 -20
- data/test/unit/eval_helper/eval_helpers_symbol_private_test.rb +0 -17
- data/test/unit/eval_helper/eval_helpers_symbol_protected_test.rb +0 -17
- data/test/unit/eval_helper/eval_helpers_symbol_tainted_method_test.rb +0 -18
- data/test/unit/eval_helper/eval_helpers_symbol_test.rb +0 -16
- data/test/unit/eval_helper/eval_helpers_symbol_with_arguments_and_block_test.rb +0 -16
- data/test/unit/eval_helper/eval_helpers_symbol_with_arguments_test.rb +0 -16
- data/test/unit/eval_helper/eval_helpers_symbol_with_block_test.rb +0 -16
- data/test/unit/eval_helper/eval_helpers_test.rb +0 -13
- data/test/unit/event/event_after_being_copied_test.rb +0 -17
- data/test/unit/event/event_by_default_test.rb +0 -60
- data/test/unit/event/event_context_test.rb +0 -16
- data/test/unit/event/event_on_failure_test.rb +0 -44
- data/test/unit/event/event_test.rb +0 -34
- data/test/unit/event/event_transitions_test.rb +0 -62
- data/test/unit/event/event_with_conflicting_helpers_after_definition_test.rb +0 -79
- data/test/unit/event/event_with_conflicting_helpers_before_definition_test.rb +0 -58
- data/test/unit/event/event_with_conflicting_machine_test.rb +0 -48
- data/test/unit/event/event_with_dynamic_human_name_test.rb +0 -26
- data/test/unit/event/event_with_human_name_test.rb +0 -13
- data/test/unit/event/event_with_invalid_current_state_test.rb +0 -30
- data/test/unit/event/event_with_machine_action_test.rb +0 -33
- data/test/unit/event/event_with_marshalling_test.rb +0 -47
- data/test/unit/event/event_with_matching_disabled_transitions_test.rb +0 -115
- data/test/unit/event/event_with_matching_enabled_transitions_test.rb +0 -75
- data/test/unit/event/event_with_multiple_transitions_test.rb +0 -61
- data/test/unit/event/event_with_namespace_test.rb +0 -34
- data/test/unit/event/event_with_transition_with_blacklisted_to_state_test.rb +0 -60
- data/test/unit/event/event_with_transition_with_loopback_state_test.rb +0 -36
- data/test/unit/event/event_with_transition_with_nil_to_state_test.rb +0 -36
- data/test/unit/event/event_with_transition_with_whitelisted_to_state_test.rb +0 -51
- data/test/unit/event/event_with_transition_without_to_state_test.rb +0 -36
- data/test/unit/event/event_with_transitions_test.rb +0 -32
- data/test/unit/event/event_without_matching_transitions_test.rb +0 -41
- data/test/unit/event/event_without_transitions_test.rb +0 -28
- data/test/unit/event/invalid_event_test.rb +0 -20
- data/test/unit/event_collection/event_collection_attribute_with_machine_action_test.rb +0 -62
- data/test/unit/event_collection/event_collection_attribute_with_namespaced_machine_test.rb +0 -36
- data/test/unit/event_collection/event_collection_by_default_test.rb +0 -26
- data/test/unit/event_collection/event_collection_test.rb +0 -39
- data/test/unit/event_collection/event_collection_with_custom_machine_attribute_test.rb +0 -31
- data/test/unit/event_collection/event_collection_with_events_with_transitions_test.rb +0 -76
- data/test/unit/event_collection/event_collection_with_multiple_events_test.rb +0 -27
- data/test/unit/event_collection/event_collection_with_validations_test.rb +0 -74
- data/test/unit/event_collection/event_collection_without_machine_action_test.rb +0 -18
- data/test/unit/event_collection/event_string_collection_test.rb +0 -31
- data/test/unit/helper_module_test.rb +0 -17
- data/test/unit/integrations/integration_finder_test.rb +0 -16
- data/test/unit/integrations/integration_matcher_test.rb +0 -29
- data/test/unit/invalid_transition/invalid_parallel_transition_test.rb +0 -18
- data/test/unit/invalid_transition/invalid_transition_test.rb +0 -47
- data/test/unit/invalid_transition/invalid_transition_with_integration_test.rb +0 -45
- data/test/unit/invalid_transition/invalid_transition_with_namespace_test.rb +0 -32
- data/test/unit/machine/machine_after_being_copied_test.rb +0 -62
- data/test/unit/machine/machine_after_changing_initial_state.rb +0 -28
- data/test/unit/machine/machine_after_changing_owner_class_test.rb +0 -31
- data/test/unit/machine/machine_by_default_test.rb +0 -160
- data/test/unit/machine/machine_finder_custom_options_test.rb +0 -17
- data/test/unit/machine/machine_finder_with_existing_machine_on_superclass_test.rb +0 -85
- data/test/unit/machine/machine_finder_with_existing_on_same_class_test.rb +0 -23
- data/test/unit/machine/machine_finder_without_existing_machine_test.rb +0 -25
- data/test/unit/machine/machine_persistence_test.rb +0 -52
- data/test/unit/machine/machine_state_initialization_test.rb +0 -56
- data/test/unit/machine/machine_test.rb +0 -30
- data/test/unit/machine/machine_with_action_already_overridden_test.rb +0 -23
- data/test/unit/machine/machine_with_action_defined_in_class_test.rb +0 -37
- data/test/unit/machine/machine_with_action_defined_in_included_module_test.rb +0 -46
- data/test/unit/machine/machine_with_action_defined_in_superclass_test.rb +0 -43
- data/test/unit/machine/machine_with_action_undefined_test.rb +0 -33
- data/test/unit/machine/machine_with_cached_state_test.rb +0 -20
- data/test/unit/machine/machine_with_class_helpers_test.rb +0 -179
- data/test/unit/machine/machine_with_conflicting_helpers_after_definition_test.rb +0 -244
- data/test/unit/machine/machine_with_conflicting_helpers_before_definition_test.rb +0 -175
- data/test/unit/machine/machine_with_custom_action_test.rb +0 -11
- data/test/unit/machine/machine_with_custom_attribute_test.rb +0 -103
- data/test/unit/machine/machine_with_custom_initialize_test.rb +0 -24
- data/test/unit/machine/machine_with_custom_integration_test.rb +0 -72
- data/test/unit/machine/machine_with_custom_invalidation_test.rb +0 -39
- data/test/unit/machine/machine_with_custom_name_test.rb +0 -57
- data/test/unit/machine/machine_with_custom_plural_test.rb +0 -52
- data/test/unit/machine/machine_with_dynamic_initial_state_test.rb +0 -65
- data/test/unit/machine/machine_with_event_matchers_test.rb +0 -41
- data/test/unit/machine/machine_with_events_test.rb +0 -52
- data/test/unit/machine/machine_with_events_with_custom_human_names_test.rb +0 -18
- data/test/unit/machine/machine_with_events_with_transitions_test.rb +0 -37
- data/test/unit/machine/machine_with_existing_event_test.rb +0 -17
- data/test/unit/machine/machine_with_existing_machines_on_owner_class_test.rb +0 -20
- data/test/unit/machine/machine_with_existing_machines_with_same_attributes_on_owner_class_test.rb +0 -71
- data/test/unit/machine/machine_with_existing_machines_with_same_attributes_on_owner_subclass_test.rb +0 -31
- data/test/unit/machine/machine_with_existing_state_test.rb +0 -27
- data/test/unit/machine/machine_with_failure_callbacks_test.rb +0 -48
- data/test/unit/machine/machine_with_helpers_test.rb +0 -14
- data/test/unit/machine/machine_with_initial_state_with_value_and_owner_default.rb +0 -25
- data/test/unit/machine/machine_with_initialize_and_super_test.rb +0 -17
- data/test/unit/machine/machine_with_initialize_arguments_and_block_test.rb +0 -31
- data/test/unit/machine/machine_with_initialize_without_super_test.rb +0 -17
- data/test/unit/machine/machine_with_instance_helpers_test.rb +0 -179
- data/test/unit/machine/machine_with_integration_test.rb +0 -72
- data/test/unit/machine/machine_with_multiple_events_test.rb +0 -32
- data/test/unit/machine/machine_with_namespace_test.rb +0 -48
- data/test/unit/machine/machine_with_nil_action_test.rb +0 -27
- data/test/unit/machine/machine_with_other_states.rb +0 -22
- data/test/unit/machine/machine_with_owner_subclass_test.rb +0 -18
- data/test/unit/machine/machine_with_paths_test.rb +0 -25
- data/test/unit/machine/machine_with_private_action_test.rb +0 -43
- data/test/unit/machine/machine_with_state_matchers_test.rb +0 -41
- data/test/unit/machine/machine_with_state_with_matchers_test.rb +0 -19
- data/test/unit/machine/machine_with_states_test.rb +0 -55
- data/test/unit/machine/machine_with_states_with_behaviors_test.rb +0 -23
- data/test/unit/machine/machine_with_states_with_custom_human_names_test.rb +0 -18
- data/test/unit/machine/machine_with_states_with_custom_values_test.rb +0 -21
- data/test/unit/machine/machine_with_states_with_runtime_dependencies_test.rb +0 -19
- data/test/unit/machine/machine_with_static_initial_state_test.rb +0 -49
- data/test/unit/machine/machine_with_superclass_conflicting_helpers_after_definition_test.rb +0 -36
- data/test/unit/machine/machine_with_transition_callbacks_test.rb +0 -144
- data/test/unit/machine/machine_with_transitions_test.rb +0 -87
- data/test/unit/machine/machine_without_initialization_test.rb +0 -31
- data/test/unit/machine/machine_without_initialize_test.rb +0 -14
- data/test/unit/machine/machine_without_integration_test.rb +0 -31
- data/test/unit/machine_collection/machine_collection_by_default_test.rb +0 -11
- data/test/unit/machine_collection/machine_collection_fire_test.rb +0 -80
- data/test/unit/machine_collection/machine_collection_fire_with_transactions_test.rb +0 -54
- data/test/unit/machine_collection/machine_collection_fire_with_validations_test.rb +0 -76
- data/test/unit/machine_collection/machine_collection_state_initialization_test.rb +0 -111
- data/test/unit/machine_collection/machine_collection_transitions_with_blank_events_test.rb +0 -25
- data/test/unit/machine_collection/machine_collection_transitions_with_custom_options_test.rb +0 -20
- data/test/unit/machine_collection/machine_collection_transitions_with_different_actions_test.rb +0 -26
- data/test/unit/machine_collection/machine_collection_transitions_with_exisiting_transitions_test.rb +0 -25
- data/test/unit/machine_collection/machine_collection_transitions_with_invalid_events_test.rb +0 -25
- data/test/unit/machine_collection/machine_collection_transitions_with_same_actions_test.rb +0 -31
- data/test/unit/machine_collection/machine_collection_transitions_with_transition_test.rb +0 -26
- data/test/unit/machine_collection/machine_collection_transitions_without_events_test.rb +0 -25
- data/test/unit/machine_collection/machine_collection_transitions_without_transition_test.rb +0 -27
- data/test/unit/matcher/all_matcher_test.rb +0 -29
- data/test/unit/matcher/blacklist_matcher_test.rb +0 -30
- data/test/unit/matcher/loopback_matcher_test.rb +0 -27
- data/test/unit/matcher/matcher_by_default_test.rb +0 -15
- data/test/unit/matcher/matcher_with_multiple_values_test.rb +0 -15
- data/test/unit/matcher/matcher_with_value_test.rb +0 -15
- data/test/unit/matcher/whitelist_matcher_test.rb +0 -30
- data/test/unit/matcher_helpers/matcher_helpers_all_test.rb +0 -14
- data/test/unit/matcher_helpers/matcher_helpers_any_test.rb +0 -14
- data/test/unit/matcher_helpers/matcher_helpers_same_test.rb +0 -13
- data/test/unit/node_collection/node_collection_after_being_copied_test.rb +0 -46
- data/test/unit/node_collection/node_collection_after_update_test.rb +0 -36
- data/test/unit/node_collection/node_collection_by_default_test.rb +0 -22
- data/test/unit/node_collection/node_collection_test.rb +0 -23
- data/test/unit/node_collection/node_collection_with_indices_test.rb +0 -42
- data/test/unit/node_collection/node_collection_with_matcher_contexts_test.rb +0 -25
- data/test/unit/node_collection/node_collection_with_nodes_test.rb +0 -46
- data/test/unit/node_collection/node_collection_with_numeric_index_test.rb +0 -24
- data/test/unit/node_collection/node_collection_with_postdefined_contexts_test.rb +0 -22
- data/test/unit/node_collection/node_collection_with_predefined_contexts_test.rb +0 -23
- data/test/unit/node_collection/node_collection_with_string_index_test.rb +0 -20
- data/test/unit/node_collection/node_collection_with_symbol_index_test.rb +0 -20
- data/test/unit/node_collection/node_collection_without_indices_test.rb +0 -30
- data/test/unit/path/path_by_default_test.rb +0 -54
- data/test/unit/path/path_test.rb +0 -14
- data/test/unit/path/path_with_available_transitions_after_reaching_target_test.rb +0 -40
- data/test/unit/path/path_with_available_transitions_test.rb +0 -54
- data/test/unit/path/path_with_deep_target_reached_test.rb +0 -50
- data/test/unit/path/path_with_deep_target_test.rb +0 -40
- data/test/unit/path/path_with_duplicates_test.rb +0 -32
- data/test/unit/path/path_with_encountered_transitions_test.rb +0 -34
- data/test/unit/path/path_with_guarded_transitions_test.rb +0 -42
- data/test/unit/path/path_with_reached_target_test.rb +0 -35
- data/test/unit/path/path_with_transitions_test.rb +0 -54
- data/test/unit/path/path_with_unreached_target_test.rb +0 -31
- data/test/unit/path/path_without_transitions_test.rb +0 -24
- data/test/unit/path_collection/path_collection_by_default_test.rb +0 -46
- data/test/unit/path_collection/path_collection_test.rb +0 -24
- data/test/unit/path_collection/path_collection_with_deep_paths_test.rb +0 -43
- data/test/unit/path_collection/path_collection_with_duplicate_nodes_test.rb +0 -31
- data/test/unit/path_collection/path_collection_with_from_state_test.rb +0 -27
- data/test/unit/path_collection/path_collection_with_paths_test.rb +0 -47
- data/test/unit/path_collection/path_collection_with_to_state_test.rb +0 -29
- data/test/unit/path_collection/path_with_guarded_paths_test.rb +0 -25
- data/test/unit/state/state_after_being_copied_test.rb +0 -19
- data/test/unit/state/state_by_default_test.rb +0 -41
- data/test/unit/state/state_final_test.rb +0 -28
- data/test/unit/state/state_initial_test.rb +0 -13
- data/test/unit/state/state_not_final_test.rb +0 -32
- data/test/unit/state/state_not_initial_test.rb +0 -13
- data/test/unit/state/state_test.rb +0 -44
- data/test/unit/state/state_with_cached_lambda_value_test.rb +0 -29
- data/test/unit/state/state_with_conflicting_helpers_after_definition_test.rb +0 -38
- data/test/unit/state/state_with_conflicting_helpers_before_definition_test.rb +0 -29
- data/test/unit/state/state_with_conflicting_machine_name_test.rb +0 -20
- data/test/unit/state/state_with_conflicting_machine_test.rb +0 -37
- data/test/unit/state/state_with_context_test.rb +0 -60
- data/test/unit/state/state_with_dynamic_human_name_test.rb +0 -25
- data/test/unit/state/state_with_existing_context_method_test.rb +0 -24
- data/test/unit/state/state_with_human_name_test.rb +0 -13
- data/test/unit/state/state_with_integer_value_test.rb +0 -32
- data/test/unit/state/state_with_invalid_method_call_test.rb +0 -21
- data/test/unit/state/state_with_lambda_value_test.rb +0 -37
- data/test/unit/state/state_with_matcher_test.rb +0 -18
- data/test/unit/state/state_with_multiple_contexts_test.rb +0 -57
- data/test/unit/state/state_with_name_test.rb +0 -43
- data/test/unit/state/state_with_namespace_test.rb +0 -22
- data/test/unit/state/state_with_nil_value_test.rb +0 -35
- data/test/unit/state/state_with_redefined_context_method_test.rb +0 -45
- data/test/unit/state/state_with_symbolic_value_test.rb +0 -32
- data/test/unit/state/state_with_valid_inherited_method_call_for_current_state_test.rb +0 -40
- data/test/unit/state/state_with_valid_method_call_for_current_state_test.rb +0 -33
- data/test/unit/state/state_with_valid_method_call_for_different_state_test.rb +0 -41
- data/test/unit/state/state_without_cached_lambda_value_test.rb +0 -25
- data/test/unit/state/state_without_name_test.rb +0 -39
- data/test/unit/state_collection/state_collection_by_default_test.rb +0 -21
- data/test/unit/state_collection/state_collection_string_test.rb +0 -35
- data/test/unit/state_collection/state_collection_test.rb +0 -74
- data/test/unit/state_collection/state_collection_with_custom_state_values_test.rb +0 -29
- data/test/unit/state_collection/state_collection_with_event_transitions_test.rb +0 -39
- data/test/unit/state_collection/state_collection_with_initial_state_test.rb +0 -40
- data/test/unit/state_collection/state_collection_with_namespace_test.rb +0 -21
- data/test/unit/state_collection/state_collection_with_state_behaviors_test.rb +0 -40
- data/test/unit/state_collection/state_collection_with_state_matchers_test.rb +0 -29
- data/test/unit/state_collection/state_collection_with_transition_callbacks_test.rb +0 -40
- data/test/unit/state_context/state_context_proxy_test.rb +0 -26
- data/test/unit/state_context/state_context_proxy_with_if_and_unless_conditions_test.rb +0 -42
- data/test/unit/state_context/state_context_proxy_with_if_condition_test.rb +0 -64
- data/test/unit/state_context/state_context_proxy_with_multiple_if_conditions_test.rb +0 -32
- data/test/unit/state_context/state_context_proxy_with_multiple_unless_conditions_test.rb +0 -32
- data/test/unit/state_context/state_context_proxy_with_unless_condition_test.rb +0 -64
- data/test/unit/state_context/state_context_proxy_without_conditions_test.rb +0 -31
- data/test/unit/state_context/state_context_test.rb +0 -28
- data/test/unit/state_context/state_context_transition_test.rb +0 -104
- data/test/unit/state_context/state_context_with_matching_transition_test.rb +0 -27
- data/test/unit/state_machine/state_machine_by_default_test.rb +0 -12
- data/test/unit/state_machine/state_machine_test.rb +0 -20
- data/test/unit/transition/transition_after_being_performed_test.rb +0 -48
- data/test/unit/transition/transition_after_being_persisted_test.rb +0 -46
- data/test/unit/transition/transition_after_being_rolled_back_test.rb +0 -35
- data/test/unit/transition/transition_equality_test.rb +0 -52
- data/test/unit/transition/transition_loopback_test.rb +0 -18
- data/test/unit/transition/transition_test.rb +0 -96
- data/test/unit/transition/transition_transient_test.rb +0 -20
- data/test/unit/transition/transition_with_action_test.rb +0 -27
- data/test/unit/transition/transition_with_after_callbacks_skipped_test.rb +0 -127
- data/test/unit/transition/transition_with_after_callbacks_test.rb +0 -93
- data/test/unit/transition/transition_with_around_callbacks_test.rb +0 -141
- data/test/unit/transition/transition_with_before_callbacks_skipped_test.rb +0 -30
- data/test/unit/transition/transition_with_before_callbacks_test.rb +0 -104
- data/test/unit/transition/transition_with_custom_machine_attribute_test.rb +0 -28
- data/test/unit/transition/transition_with_different_states_test.rb +0 -18
- data/test/unit/transition/transition_with_dynamic_to_value_test.rb +0 -19
- data/test/unit/transition/transition_with_failure_callbacks_test.rb +0 -84
- data/test/unit/transition/transition_with_invalid_nodes_test.rb +0 -29
- data/test/unit/transition/transition_with_mixed_callbacks_test.rb +0 -105
- data/test/unit/transition/transition_with_multiple_after_callbacks_test.rb +0 -40
- data/test/unit/transition/transition_with_multiple_around_callbacks_test.rb +0 -114
- data/test/unit/transition/transition_with_multiple_before_callbacks_test.rb +0 -40
- data/test/unit/transition/transition_with_multiple_failure_callbacks_test.rb +0 -40
- data/test/unit/transition/transition_with_namespace_test.rb +0 -47
- data/test/unit/transition/transition_with_perform_arguments_test.rb +0 -35
- data/test/unit/transition/transition_with_transactions_test.rb +0 -42
- data/test/unit/transition/transition_without_callbacks_test.rb +0 -33
- data/test/unit/transition/transition_without_reading_state_test.rb +0 -22
- data/test/unit/transition/transition_without_running_action_test.rb +0 -47
- data/test/unit/transition_collection/attribute_transition_collection_by_default_test.rb +0 -23
- data/test/unit/transition_collection/attribute_transition_collection_marshalling_test.rb +0 -64
- data/test/unit/transition_collection/attribute_transition_collection_with_action_error_test.rb +0 -44
- data/test/unit/transition_collection/attribute_transition_collection_with_action_failed_test.rb +0 -44
- data/test/unit/transition_collection/attribute_transition_collection_with_after_callback_error_test.rb +0 -32
- data/test/unit/transition_collection/attribute_transition_collection_with_after_callback_halt_test.rb +0 -33
- data/test/unit/transition_collection/attribute_transition_collection_with_around_after_yield_callback_error_test.rb +0 -32
- data/test/unit/transition_collection/attribute_transition_collection_with_around_callback_after_yield_error_test.rb +0 -32
- data/test/unit/transition_collection/attribute_transition_collection_with_around_callback_after_yield_halt_test.rb +0 -33
- data/test/unit/transition_collection/attribute_transition_collection_with_around_callback_before_yield_halt_test.rb +0 -33
- data/test/unit/transition_collection/attribute_transition_collection_with_before_callback_error_test.rb +0 -32
- data/test/unit/transition_collection/attribute_transition_collection_with_before_callback_halt_test.rb +0 -33
- data/test/unit/transition_collection/attribute_transition_collection_with_callbacks_test.rb +0 -68
- data/test/unit/transition_collection/attribute_transition_collection_with_event_transitions_test.rb +0 -41
- data/test/unit/transition_collection/attribute_transition_collection_with_events_test.rb +0 -44
- data/test/unit/transition_collection/attribute_transition_collection_with_skipped_after_callbacks_test.rb +0 -42
- data/test/unit/transition_collection/transition_collection_by_default_test.rb +0 -23
- data/test/unit/transition_collection/transition_collection_empty_with_block_test.rb +0 -23
- data/test/unit/transition_collection/transition_collection_empty_without_block_test.rb +0 -12
- data/test/unit/transition_collection/transition_collection_invalid_test.rb +0 -21
- data/test/unit/transition_collection/transition_collection_partial_invalid_test.rb +0 -69
- data/test/unit/transition_collection/transition_collection_test.rb +0 -26
- data/test/unit/transition_collection/transition_collection_valid_test.rb +0 -57
- data/test/unit/transition_collection/transition_collection_with_action_error_test.rb +0 -66
- data/test/unit/transition_collection/transition_collection_with_action_failed_test.rb +0 -60
- data/test/unit/transition_collection/transition_collection_with_action_hook_and_block_test.rb +0 -17
- data/test/unit/transition_collection/transition_collection_with_action_hook_and_skipped_action_test.rb +0 -17
- data/test/unit/transition_collection/transition_collection_with_action_hook_and_skipped_after_callbacks_test.rb +0 -37
- data/test/unit/transition_collection/transition_collection_with_action_hook_base_test.rb +0 -34
- data/test/unit/transition_collection/transition_collection_with_action_hook_error_test.rb +0 -29
- data/test/unit/transition_collection/transition_collection_with_action_hook_invalid_test.rb +0 -17
- data/test/unit/transition_collection/transition_collection_with_action_hook_multiple_test.rb +0 -79
- data/test/unit/transition_collection/transition_collection_with_action_hook_test.rb +0 -45
- data/test/unit/transition_collection/transition_collection_with_action_hook_with_different_actions_test.rb +0 -48
- data/test/unit/transition_collection/transition_collection_with_action_hook_with_nil_action_test.rb +0 -42
- data/test/unit/transition_collection/transition_collection_with_after_callback_halt_test.rb +0 -47
- data/test/unit/transition_collection/transition_collection_with_before_callback_halt_test.rb +0 -51
- data/test/unit/transition_collection/transition_collection_with_block_test.rb +0 -46
- data/test/unit/transition_collection/transition_collection_with_callbacks_test.rb +0 -135
- data/test/unit/transition_collection/transition_collection_with_different_actions_test.rb +0 -189
- data/test/unit/transition_collection/transition_collection_with_duplicate_actions_test.rb +0 -48
- data/test/unit/transition_collection/transition_collection_with_empty_actions_test.rb +0 -41
- data/test/unit/transition_collection/transition_collection_with_mixed_actions_test.rb +0 -41
- data/test/unit/transition_collection/transition_collection_with_skipped_actions_and_block_test.rb +0 -34
- data/test/unit/transition_collection/transition_collection_with_skipped_actions_test.rb +0 -69
- data/test/unit/transition_collection/transition_collection_with_skipped_after_callbacks_and_around_callbacks_test.rb +0 -53
- data/test/unit/transition_collection/transition_collection_with_skipped_after_callbacks_test.rb +0 -34
- data/test/unit/transition_collection/transition_collection_with_transactions_test.rb +0 -65
- data/test/unit/transition_collection/transition_collection_without_transactions_test.rb +0 -29
@@ -1,24 +0,0 @@
|
|
1
|
-
require_relative '../../test_helper'
|
2
|
-
|
3
|
-
class MachineWithCustomInitializeTest < StateMachinesTest
|
4
|
-
def setup
|
5
|
-
@klass = Class.new do
|
6
|
-
def initialize(state = nil, options = {})
|
7
|
-
@state = state
|
8
|
-
initialize_state_machines(options)
|
9
|
-
end
|
10
|
-
end
|
11
|
-
@machine = StateMachines::Machine.new(@klass, initial: :parked)
|
12
|
-
@object = @klass.new
|
13
|
-
end
|
14
|
-
|
15
|
-
def test_should_initialize_state
|
16
|
-
assert_equal 'parked', @object.state
|
17
|
-
end
|
18
|
-
|
19
|
-
def test_should_allow_custom_options
|
20
|
-
@machine.state :idling
|
21
|
-
@object = @klass.new('idling', static: :force)
|
22
|
-
assert_equal 'parked', @object.state
|
23
|
-
end
|
24
|
-
end
|
@@ -1,72 +0,0 @@
|
|
1
|
-
require_relative '../../test_helper'
|
2
|
-
require_relative '../../../test/files/models/vehicle'
|
3
|
-
|
4
|
-
class MachineWithCustomIntegrationTest < StateMachinesTest
|
5
|
-
module Custom
|
6
|
-
include StateMachines::Integrations::Base
|
7
|
-
|
8
|
-
def self.matching_ancestors
|
9
|
-
[Vehicle]
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|
13
|
-
def setup
|
14
|
-
StateMachines::Integrations.register(MachineWithCustomIntegrationTest::Custom)
|
15
|
-
|
16
|
-
@klass = Vehicle
|
17
|
-
end
|
18
|
-
|
19
|
-
def test_should_be_extended_by_the_integration_if_explicit
|
20
|
-
machine = StateMachines::Machine.new(@klass, integration: :custom)
|
21
|
-
assert((class << machine; ancestors; end).include?(MachineWithCustomIntegrationTest::Custom))
|
22
|
-
end
|
23
|
-
|
24
|
-
def test_should_not_be_extended_by_the_integration_if_implicit_but_not_available
|
25
|
-
MachineWithCustomIntegrationTest::Custom.class_eval do
|
26
|
-
class << self; remove_method :matching_ancestors; end
|
27
|
-
def self.matching_ancestors
|
28
|
-
[]
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
|
-
machine = StateMachines::Machine.new(@klass)
|
33
|
-
assert(!(class << machine; ancestors; end).include?(MachineWithCustomIntegrationTest::Custom))
|
34
|
-
end
|
35
|
-
|
36
|
-
def test_should_not_be_extended_by_the_integration_if_implicit_but_not_matched
|
37
|
-
MachineWithCustomIntegrationTest::Custom.class_eval do
|
38
|
-
class << self; remove_method :matching_ancestors; end
|
39
|
-
def self.matching_ancestors
|
40
|
-
[]
|
41
|
-
end
|
42
|
-
end
|
43
|
-
|
44
|
-
machine = StateMachines::Machine.new(@klass)
|
45
|
-
assert(!(class << machine; ancestors; end).include?(MachineWithCustomIntegrationTest::Custom))
|
46
|
-
end
|
47
|
-
|
48
|
-
def test_should_be_extended_by_the_integration_if_implicit_and_available_and_matches
|
49
|
-
machine = StateMachines::Machine.new(@klass)
|
50
|
-
assert((class << machine; ancestors; end).include?(MachineWithCustomIntegrationTest::Custom))
|
51
|
-
end
|
52
|
-
|
53
|
-
def test_should_not_be_extended_by_the_integration_if_nil
|
54
|
-
machine = StateMachines::Machine.new(@klass, integration: nil)
|
55
|
-
assert(!(class << machine; ancestors; end).include?(MachineWithCustomIntegrationTest::Custom))
|
56
|
-
end
|
57
|
-
|
58
|
-
def test_should_not_be_extended_by_the_integration_if_false
|
59
|
-
machine = StateMachines::Machine.new(@klass, integration: false)
|
60
|
-
assert(!(class << machine; ancestors; end).include?(MachineWithCustomIntegrationTest::Custom))
|
61
|
-
end
|
62
|
-
|
63
|
-
def teardown
|
64
|
-
StateMachines::Integrations.reset
|
65
|
-
MachineWithCustomIntegrationTest::Custom.class_eval do
|
66
|
-
class << self; remove_method :matching_ancestors; end
|
67
|
-
def self.matching_ancestors
|
68
|
-
[Vehicle]
|
69
|
-
end
|
70
|
-
end
|
71
|
-
end
|
72
|
-
end
|
@@ -1,39 +0,0 @@
|
|
1
|
-
require_relative '../../test_helper'
|
2
|
-
|
3
|
-
class MachineWithCustomInvalidationTest < StateMachinesTest
|
4
|
-
module Custom
|
5
|
-
include StateMachines::Integrations::Base
|
6
|
-
|
7
|
-
def invalidate(object, _attribute, message, values = [])
|
8
|
-
object.error = generate_message(message, values)
|
9
|
-
end
|
10
|
-
end
|
11
|
-
|
12
|
-
def setup
|
13
|
-
StateMachines::Integrations.register(MachineWithCustomInvalidationTest::Custom)
|
14
|
-
|
15
|
-
@klass = Class.new do
|
16
|
-
attr_accessor :error
|
17
|
-
end
|
18
|
-
|
19
|
-
@machine = StateMachines::Machine.new(@klass, integration: :custom, messages: {invalid_transition: 'cannot %s'})
|
20
|
-
@machine.state :parked
|
21
|
-
|
22
|
-
@object = @klass.new
|
23
|
-
@object.state = 'parked'
|
24
|
-
end
|
25
|
-
|
26
|
-
def test_generate_custom_message
|
27
|
-
assert_equal 'cannot park', @machine.generate_message(:invalid_transition, [[:event, :park]])
|
28
|
-
end
|
29
|
-
|
30
|
-
def test_use_custom_message
|
31
|
-
@machine.invalidate(@object, :state, :invalid_transition, [[:event, 'park']])
|
32
|
-
assert_equal 'cannot park', @object.error
|
33
|
-
end
|
34
|
-
|
35
|
-
def teardown
|
36
|
-
StateMachines::Integrations.reset
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
@@ -1,57 +0,0 @@
|
|
1
|
-
require_relative '../../test_helper'
|
2
|
-
|
3
|
-
class MachineWithCustomNameTest < StateMachinesTest
|
4
|
-
def setup
|
5
|
-
@klass = Class.new
|
6
|
-
@machine = StateMachines::Machine.new(@klass, :status)
|
7
|
-
@object = @klass.new
|
8
|
-
end
|
9
|
-
|
10
|
-
def test_should_use_custom_name
|
11
|
-
assert_equal :status, @machine.name
|
12
|
-
end
|
13
|
-
|
14
|
-
def test_should_use_custom_name_for_attribute
|
15
|
-
assert_equal :status, @machine.attribute
|
16
|
-
end
|
17
|
-
|
18
|
-
def test_should_prefix_custom_attributes_with_custom_name
|
19
|
-
assert_equal :status_event, @machine.attribute(:event)
|
20
|
-
end
|
21
|
-
|
22
|
-
def test_should_define_a_reader_attribute_for_the_attribute
|
23
|
-
assert @object.respond_to?(:status)
|
24
|
-
end
|
25
|
-
|
26
|
-
def test_should_define_a_writer_attribute_for_the_attribute
|
27
|
-
assert @object.respond_to?(:status=)
|
28
|
-
end
|
29
|
-
|
30
|
-
def test_should_define_a_predicate_for_the_attribute
|
31
|
-
assert @object.respond_to?(:status?)
|
32
|
-
end
|
33
|
-
|
34
|
-
def test_should_define_a_name_reader_for_the_attribute
|
35
|
-
assert @object.respond_to?(:status_name)
|
36
|
-
end
|
37
|
-
|
38
|
-
def test_should_define_an_event_reader_for_the_attribute
|
39
|
-
assert @object.respond_to?(:status_events)
|
40
|
-
end
|
41
|
-
|
42
|
-
def test_should_define_a_transition_reader_for_the_attribute
|
43
|
-
assert @object.respond_to?(:status_transitions)
|
44
|
-
end
|
45
|
-
|
46
|
-
def test_should_define_an_event_runner_for_the_attribute
|
47
|
-
assert @object.respond_to?(:fire_status_event)
|
48
|
-
end
|
49
|
-
|
50
|
-
def test_should_define_a_human_attribute_name_reader_for_the_attribute
|
51
|
-
assert @klass.respond_to?(:human_status_name)
|
52
|
-
end
|
53
|
-
|
54
|
-
def test_should_define_a_human_event_name_reader_for_the_attribute
|
55
|
-
assert @klass.respond_to?(:human_status_event_name)
|
56
|
-
end
|
57
|
-
end
|
@@ -1,52 +0,0 @@
|
|
1
|
-
require_relative '../../test_helper'
|
2
|
-
|
3
|
-
class MachineWithCustomPluralTest < StateMachinesTest
|
4
|
-
def setup
|
5
|
-
@integration = Module.new do
|
6
|
-
include StateMachines::Integrations::Base
|
7
|
-
|
8
|
-
class << self; attr_accessor :with_scopes, :without_scopes; end
|
9
|
-
@with_scopes = []
|
10
|
-
@without_scopes = []
|
11
|
-
|
12
|
-
def create_with_scope(name)
|
13
|
-
MachineWithCustomPluralTest::Custom.with_scopes << name
|
14
|
-
lambda {}
|
15
|
-
end
|
16
|
-
|
17
|
-
def create_without_scope(name)
|
18
|
-
MachineWithCustomPluralTest::Custom.without_scopes << name
|
19
|
-
lambda {}
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
MachineWithCustomPluralTest.const_set('Custom', @integration)
|
24
|
-
StateMachines::Integrations.register(MachineWithCustomPluralTest::Custom)
|
25
|
-
end
|
26
|
-
|
27
|
-
def test_should_define_a_singular_and_plural_with_scope
|
28
|
-
StateMachines::Machine.new(Class.new, integration: :custom, plural: 'staties')
|
29
|
-
assert_equal %w(with_state with_staties), @integration.with_scopes
|
30
|
-
end
|
31
|
-
|
32
|
-
def test_should_define_a_singular_and_plural_without_scope
|
33
|
-
StateMachines::Machine.new(Class.new, integration: :custom, plural: 'staties')
|
34
|
-
assert_equal %w(without_state without_staties), @integration.without_scopes
|
35
|
-
end
|
36
|
-
|
37
|
-
def test_should_define_single_with_scope_if_singular_same_as_plural
|
38
|
-
StateMachines::Machine.new(Class.new, integration: :custom, plural: 'state')
|
39
|
-
assert_equal %w(with_state), @integration.with_scopes
|
40
|
-
end
|
41
|
-
|
42
|
-
def test_should_define_single_without_scope_if_singular_same_as_plural
|
43
|
-
StateMachines::Machine.new(Class.new, integration: :custom, plural: 'state')
|
44
|
-
assert_equal %w(without_state), @integration.without_scopes
|
45
|
-
end
|
46
|
-
|
47
|
-
def teardown
|
48
|
-
StateMachines::Integrations.reset
|
49
|
-
MachineWithCustomPluralTest.send(:remove_const, 'Custom')
|
50
|
-
end
|
51
|
-
end
|
52
|
-
|
@@ -1,65 +0,0 @@
|
|
1
|
-
require_relative '../../test_helper'
|
2
|
-
|
3
|
-
class MachineWithDynamicInitialStateTest < StateMachinesTest
|
4
|
-
def setup
|
5
|
-
@klass = Class.new do
|
6
|
-
attr_accessor :initial_state
|
7
|
-
end
|
8
|
-
@machine = StateMachines::Machine.new(@klass, initial: lambda { |object| object.initial_state || :default })
|
9
|
-
@machine.state :parked, :idling, :default
|
10
|
-
@object = @klass.new
|
11
|
-
end
|
12
|
-
|
13
|
-
def test_should_have_dynamic_initial_state
|
14
|
-
assert @machine.dynamic_initial_state?
|
15
|
-
end
|
16
|
-
|
17
|
-
def test_should_use_the_record_for_determining_the_initial_state
|
18
|
-
@object.initial_state = :parked
|
19
|
-
assert_equal :parked, @machine.initial_state(@object).name
|
20
|
-
|
21
|
-
@object.initial_state = :idling
|
22
|
-
assert_equal :idling, @machine.initial_state(@object).name
|
23
|
-
end
|
24
|
-
|
25
|
-
def test_should_write_to_attribute_when_initializing_state
|
26
|
-
object = @klass.allocate
|
27
|
-
object.initial_state = :parked
|
28
|
-
@machine.initialize_state(object)
|
29
|
-
assert_equal 'parked', object.state
|
30
|
-
end
|
31
|
-
|
32
|
-
def test_should_set_initial_state_on_created_object
|
33
|
-
assert_equal 'default', @object.state
|
34
|
-
end
|
35
|
-
|
36
|
-
def test_should_not_set_initial_state_even_if_not_empty
|
37
|
-
@klass.class_eval do
|
38
|
-
def initialize(_attributes = {})
|
39
|
-
self.state = 'parked'
|
40
|
-
super()
|
41
|
-
end
|
42
|
-
end
|
43
|
-
object = @klass.new
|
44
|
-
assert_equal 'parked', object.state
|
45
|
-
end
|
46
|
-
|
47
|
-
def test_should_set_initial_state_after_initialization
|
48
|
-
base = Class.new do
|
49
|
-
attr_accessor :state_on_init
|
50
|
-
|
51
|
-
def initialize
|
52
|
-
self.state_on_init = state
|
53
|
-
end
|
54
|
-
end
|
55
|
-
klass = Class.new(base)
|
56
|
-
machine = StateMachines::Machine.new(klass, initial: lambda { |_object| :parked })
|
57
|
-
machine.state :parked
|
58
|
-
|
59
|
-
assert_nil klass.new.state_on_init
|
60
|
-
end
|
61
|
-
|
62
|
-
def test_should_not_be_included_in_known_states
|
63
|
-
assert_equal [:parked, :idling, :default], @machine.states.map { |state| state.name }
|
64
|
-
end
|
65
|
-
end
|
@@ -1,41 +0,0 @@
|
|
1
|
-
require_relative '../../test_helper'
|
2
|
-
|
3
|
-
class MachineWithEventMatchersTest < StateMachinesTest
|
4
|
-
def setup
|
5
|
-
@klass = Class.new
|
6
|
-
@machine = StateMachines::Machine.new(@klass)
|
7
|
-
end
|
8
|
-
|
9
|
-
def test_should_empty_array_for_all_matcher
|
10
|
-
assert_equal [], @machine.event(StateMachines::AllMatcher.instance)
|
11
|
-
end
|
12
|
-
|
13
|
-
def test_should_return_referenced_events_for_blacklist_matcher
|
14
|
-
assert_instance_of StateMachines::Event, @machine.event(StateMachines::BlacklistMatcher.new([:park]))
|
15
|
-
end
|
16
|
-
|
17
|
-
def test_should_not_allow_configurations
|
18
|
-
exception = assert_raises(ArgumentError) { @machine.event(StateMachines::BlacklistMatcher.new([:park]), human_name: 'Park') }
|
19
|
-
assert_equal 'Cannot configure events when using matchers (using {:human_name=>"Park"})', exception.message
|
20
|
-
end
|
21
|
-
|
22
|
-
def test_should_track_referenced_events
|
23
|
-
@machine.event(StateMachines::BlacklistMatcher.new([:park]))
|
24
|
-
assert_equal [:park], @machine.events.map { |event| event.name }
|
25
|
-
end
|
26
|
-
|
27
|
-
def test_should_eval_context_for_matching_events
|
28
|
-
contexts_run = []
|
29
|
-
@machine.event(StateMachines::BlacklistMatcher.new([:park])) { contexts_run << name }
|
30
|
-
|
31
|
-
@machine.event :park
|
32
|
-
assert_equal [], contexts_run
|
33
|
-
|
34
|
-
@machine.event :ignite
|
35
|
-
assert_equal [:ignite], contexts_run
|
36
|
-
|
37
|
-
@machine.event :shift_up, :shift_down
|
38
|
-
assert_equal [:ignite, :shift_up, :shift_down], contexts_run
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
@@ -1,52 +0,0 @@
|
|
1
|
-
require_relative '../../test_helper'
|
2
|
-
|
3
|
-
class MachineWithEventsTest < StateMachinesTest
|
4
|
-
def setup
|
5
|
-
@klass = Class.new
|
6
|
-
@machine = StateMachines::Machine.new(@klass)
|
7
|
-
end
|
8
|
-
|
9
|
-
def test_should_return_the_created_event
|
10
|
-
assert_instance_of StateMachines::Event, @machine.event(:ignite)
|
11
|
-
end
|
12
|
-
|
13
|
-
def test_should_create_event_with_given_name
|
14
|
-
event = @machine.event(:ignite) {}
|
15
|
-
assert_equal :ignite, event.name
|
16
|
-
end
|
17
|
-
|
18
|
-
def test_should_evaluate_block_within_event_context
|
19
|
-
responded = false
|
20
|
-
@machine.event :ignite do
|
21
|
-
responded = respond_to?(:transition)
|
22
|
-
end
|
23
|
-
|
24
|
-
assert responded
|
25
|
-
end
|
26
|
-
|
27
|
-
def test_should_be_aliased_as_on
|
28
|
-
event = @machine.on(:ignite) {}
|
29
|
-
assert_equal :ignite, event.name
|
30
|
-
end
|
31
|
-
|
32
|
-
def test_should_have_events
|
33
|
-
event = @machine.event(:ignite)
|
34
|
-
assert_equal [event], @machine.events.to_a
|
35
|
-
end
|
36
|
-
|
37
|
-
def test_should_allow_human_state_name_lookup
|
38
|
-
@machine.event(:ignite)
|
39
|
-
assert_equal 'ignite', @klass.human_state_event_name(:ignite)
|
40
|
-
end
|
41
|
-
|
42
|
-
def test_should_raise_exception_on_invalid_human_state_event_name_lookup
|
43
|
-
exception = assert_raises(IndexError) { @klass.human_state_event_name(:invalid) }
|
44
|
-
assert_equal ':invalid is an invalid name', exception.message
|
45
|
-
end
|
46
|
-
|
47
|
-
def test_should_raise_exception_if_conflicting_type_used_for_name
|
48
|
-
@machine.event :park
|
49
|
-
exception = assert_raises(ArgumentError) { @machine.event 'ignite' }
|
50
|
-
assert_equal '"ignite" event defined as String, :park defined as Symbol; all events must be consistent', exception.message
|
51
|
-
end
|
52
|
-
end
|
@@ -1,18 +0,0 @@
|
|
1
|
-
require_relative '../../test_helper'
|
2
|
-
|
3
|
-
class MachineWithEventsWithCustomHumanNamesTest < StateMachinesTest
|
4
|
-
def setup
|
5
|
-
@klass = Class.new
|
6
|
-
@machine = StateMachines::Machine.new(@klass)
|
7
|
-
@event = @machine.event(:ignite, human_name: 'start')
|
8
|
-
end
|
9
|
-
|
10
|
-
def test_should_use_custom_human_name
|
11
|
-
assert_equal 'start', @event.human_name
|
12
|
-
end
|
13
|
-
|
14
|
-
def test_should_allow_human_state_name_lookup
|
15
|
-
assert_equal 'start', @klass.human_state_event_name(:ignite)
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
@@ -1,37 +0,0 @@
|
|
1
|
-
require_relative '../../test_helper'
|
2
|
-
|
3
|
-
class MachineWithEventsWithTransitionsTest < StateMachinesTest
|
4
|
-
def setup
|
5
|
-
@klass = Class.new
|
6
|
-
@machine = StateMachines::Machine.new(@klass, initial: :parked)
|
7
|
-
@event = @machine.event(:ignite) do
|
8
|
-
transition parked: :idling
|
9
|
-
transition stalled: :idling
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|
13
|
-
def test_should_have_events
|
14
|
-
assert_equal [@event], @machine.events.to_a
|
15
|
-
end
|
16
|
-
|
17
|
-
def test_should_track_states_defined_in_event_transitions
|
18
|
-
assert_equal [:parked, :idling, :stalled], @machine.states.map { |state| state.name }
|
19
|
-
end
|
20
|
-
|
21
|
-
def test_should_not_duplicate_states_defined_in_multiple_event_transitions
|
22
|
-
@machine.event :park do
|
23
|
-
transition idling: :parked
|
24
|
-
end
|
25
|
-
|
26
|
-
assert_equal [:parked, :idling, :stalled], @machine.states.map { |state| state.name }
|
27
|
-
end
|
28
|
-
|
29
|
-
def test_should_track_state_from_new_events
|
30
|
-
@machine.event :shift_up do
|
31
|
-
transition idling: :first_gear
|
32
|
-
end
|
33
|
-
|
34
|
-
assert_equal [:parked, :idling, :stalled, :first_gear], @machine.states.map { |state| state.name }
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
@@ -1,17 +0,0 @@
|
|
1
|
-
require_relative '../../test_helper'
|
2
|
-
|
3
|
-
class MachineWithExistingEventTest < StateMachinesTest
|
4
|
-
def setup
|
5
|
-
@machine = StateMachines::Machine.new(Class.new)
|
6
|
-
@event = @machine.event(:ignite)
|
7
|
-
@same_event = @machine.event(:ignite)
|
8
|
-
end
|
9
|
-
|
10
|
-
def test_should_not_create_new_event
|
11
|
-
assert_same @event, @same_event
|
12
|
-
end
|
13
|
-
|
14
|
-
def test_should_allow_accessing_event_without_block
|
15
|
-
assert_equal @event, @machine.event(:ignite)
|
16
|
-
end
|
17
|
-
end
|
@@ -1,20 +0,0 @@
|
|
1
|
-
require_relative '../../test_helper'
|
2
|
-
|
3
|
-
class MachineWithExistingMachinesOnOwnerClassTest < StateMachinesTest
|
4
|
-
def setup
|
5
|
-
@klass = Class.new
|
6
|
-
@machine = StateMachines::Machine.new(@klass, initial: :parked)
|
7
|
-
@second_machine = StateMachines::Machine.new(@klass, :status, initial: :idling)
|
8
|
-
@object = @klass.new
|
9
|
-
end
|
10
|
-
|
11
|
-
def test_should_track_each_state_machine
|
12
|
-
expected = { state: @machine, status: @second_machine }
|
13
|
-
assert_equal expected, @klass.state_machines
|
14
|
-
end
|
15
|
-
|
16
|
-
def test_should_initialize_state_for_both_machines
|
17
|
-
assert_equal 'parked', @object.state
|
18
|
-
assert_equal 'idling', @object.status
|
19
|
-
end
|
20
|
-
end
|
data/test/unit/machine/machine_with_existing_machines_with_same_attributes_on_owner_class_test.rb
DELETED
@@ -1,71 +0,0 @@
|
|
1
|
-
require_relative '../../test_helper'
|
2
|
-
|
3
|
-
class MachineWithExistingMachinesWithSameAttributesOnOwnerClassTest < StateMachinesTest
|
4
|
-
def setup
|
5
|
-
@klass = Class.new
|
6
|
-
@machine = StateMachines::Machine.new(@klass, initial: :parked)
|
7
|
-
@second_machine = StateMachines::Machine.new(@klass, :public_state, initial: :idling, attribute: :state)
|
8
|
-
@object = @klass.new
|
9
|
-
end
|
10
|
-
|
11
|
-
def test_should_track_each_state_machine
|
12
|
-
expected = { state: @machine, public_state: @second_machine }
|
13
|
-
assert_equal expected, @klass.state_machines
|
14
|
-
end
|
15
|
-
|
16
|
-
def test_should_write_to_state_only_once
|
17
|
-
@klass.class_eval do
|
18
|
-
attr_reader :write_count
|
19
|
-
|
20
|
-
def state=(_value)
|
21
|
-
@write_count ||= 0
|
22
|
-
@write_count += 1
|
23
|
-
end
|
24
|
-
end
|
25
|
-
object = @klass.new
|
26
|
-
|
27
|
-
assert_equal 1, object.write_count
|
28
|
-
end
|
29
|
-
|
30
|
-
def test_should_initialize_based_on_first_machine
|
31
|
-
assert_equal 'parked', @object.state
|
32
|
-
end
|
33
|
-
|
34
|
-
def test_should_not_allow_second_machine_to_initialize_state
|
35
|
-
@object.state = nil
|
36
|
-
@second_machine.initialize_state(@object)
|
37
|
-
assert_nil @object.state
|
38
|
-
end
|
39
|
-
|
40
|
-
def test_should_allow_transitions_on_both_machines
|
41
|
-
@machine.event :ignite do
|
42
|
-
transition parked: :idling
|
43
|
-
end
|
44
|
-
|
45
|
-
@second_machine.event :park do
|
46
|
-
transition idling: :parked
|
47
|
-
end
|
48
|
-
|
49
|
-
@object.ignite
|
50
|
-
assert_equal 'idling', @object.state
|
51
|
-
|
52
|
-
@object.park
|
53
|
-
assert_equal 'parked', @object.state
|
54
|
-
end
|
55
|
-
|
56
|
-
def test_should_copy_new_states_to_sibling_machines
|
57
|
-
@first_gear = @machine.state :first_gear
|
58
|
-
assert_equal @first_gear, @second_machine.state(:first_gear)
|
59
|
-
|
60
|
-
@second_gear = @second_machine.state :second_gear
|
61
|
-
assert_equal @second_gear, @machine.state(:second_gear)
|
62
|
-
end
|
63
|
-
|
64
|
-
def test_should_copy_all_existing_states_to_new_machines
|
65
|
-
third_machine = StateMachines::Machine.new(@klass, :protected_state, attribute: :state)
|
66
|
-
|
67
|
-
assert_equal @machine.state(:parked), third_machine.state(:parked)
|
68
|
-
assert_equal @machine.state(:idling), third_machine.state(:idling)
|
69
|
-
end
|
70
|
-
end
|
71
|
-
|
data/test/unit/machine/machine_with_existing_machines_with_same_attributes_on_owner_subclass_test.rb
DELETED
@@ -1,31 +0,0 @@
|
|
1
|
-
require_relative '../../test_helper'
|
2
|
-
|
3
|
-
class MachineWithExistingMachinesWithSameAttributesOnOwnerSubclassTest < StateMachinesTest
|
4
|
-
def setup
|
5
|
-
@klass = Class.new
|
6
|
-
@machine = StateMachines::Machine.new(@klass, initial: :parked)
|
7
|
-
@second_machine = StateMachines::Machine.new(@klass, :public_state, initial: :idling, attribute: :state)
|
8
|
-
|
9
|
-
@subclass = Class.new(@klass)
|
10
|
-
@object = @subclass.new
|
11
|
-
end
|
12
|
-
|
13
|
-
def test_should_not_copy_sibling_machines_to_subclass_after_initialization
|
14
|
-
@subclass.state_machine(:state) {}
|
15
|
-
assert_equal @klass.state_machine(:public_state), @subclass.state_machine(:public_state)
|
16
|
-
end
|
17
|
-
|
18
|
-
def test_should_copy_sibling_machines_to_subclass_after_new_state
|
19
|
-
subclass_machine = @subclass.state_machine(:state) {}
|
20
|
-
subclass_machine.state :first_gear
|
21
|
-
refute_equal @klass.state_machine(:public_state), @subclass.state_machine(:public_state)
|
22
|
-
end
|
23
|
-
|
24
|
-
def test_should_copy_new_states_to_sibling_machines
|
25
|
-
subclass_machine = @subclass.state_machine(:state) {}
|
26
|
-
@first_gear = subclass_machine.state :first_gear
|
27
|
-
|
28
|
-
second_subclass_machine = @subclass.state_machine(:public_state)
|
29
|
-
assert_equal @first_gear, second_subclass_machine.state(:first_gear)
|
30
|
-
end
|
31
|
-
end
|
@@ -1,27 +0,0 @@
|
|
1
|
-
require_relative '../../test_helper'
|
2
|
-
|
3
|
-
class MachineWithExistingStateTest < StateMachinesTest
|
4
|
-
def setup
|
5
|
-
@klass = Class.new
|
6
|
-
@machine = StateMachines::Machine.new(@klass)
|
7
|
-
@state = @machine.state :parked
|
8
|
-
@same_state = @machine.state :parked, value: 1
|
9
|
-
end
|
10
|
-
|
11
|
-
def test_should_not_create_a_new_state
|
12
|
-
assert_same @state, @same_state
|
13
|
-
end
|
14
|
-
|
15
|
-
def test_should_update_attributes
|
16
|
-
assert_equal 1, @state.value
|
17
|
-
end
|
18
|
-
|
19
|
-
def test_should_no_longer_be_able_to_look_up_state_by_original_value
|
20
|
-
assert_nil @machine.states['parked', :value]
|
21
|
-
end
|
22
|
-
|
23
|
-
def test_should_be_able_to_look_up_state_by_new_value
|
24
|
-
assert_equal @state, @machine.states[1, :value]
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
@@ -1,48 +0,0 @@
|
|
1
|
-
require_relative '../../test_helper'
|
2
|
-
|
3
|
-
class MachineWithFailureCallbacksTest < StateMachinesTest
|
4
|
-
def setup
|
5
|
-
@klass = Class.new do
|
6
|
-
attr_accessor :callbacks
|
7
|
-
end
|
8
|
-
|
9
|
-
@machine = StateMachines::Machine.new(@klass, initial: :parked)
|
10
|
-
@event = @machine.event :ignite
|
11
|
-
|
12
|
-
@object = @klass.new
|
13
|
-
@object.callbacks = []
|
14
|
-
end
|
15
|
-
|
16
|
-
def test_should_raise_exception_if_implicit_option_specified
|
17
|
-
exception = assert_raises(ArgumentError) { @machine.after_failure invalid: :valid, do: lambda {} }
|
18
|
-
assert_equal 'Unknown key: :invalid. Valid keys are: :on, :do, :if, :unless', exception.message
|
19
|
-
end
|
20
|
-
|
21
|
-
def test_should_raise_exception_if_method_not_specified
|
22
|
-
exception = assert_raises(ArgumentError) { @machine.after_failure on: :ignite }
|
23
|
-
assert_equal 'Method(s) for callback must be specified', exception.message
|
24
|
-
end
|
25
|
-
|
26
|
-
def test_should_invoke_callbacks_during_failed_transition
|
27
|
-
@machine.after_failure lambda { |object| object.callbacks << 'failure' }
|
28
|
-
|
29
|
-
@event.fire(@object)
|
30
|
-
assert_equal %w(failure), @object.callbacks
|
31
|
-
end
|
32
|
-
|
33
|
-
def test_should_allow_multiple_callbacks
|
34
|
-
@machine.after_failure lambda { |object| object.callbacks << 'failure1' }, lambda { |object| object.callbacks << 'failure2' }
|
35
|
-
|
36
|
-
@event.fire(@object)
|
37
|
-
assert_equal %w(failure1 failure2), @object.callbacks
|
38
|
-
end
|
39
|
-
|
40
|
-
def test_should_allow_multiple_callbacks_with_requirements
|
41
|
-
@machine.after_failure lambda { |object| object.callbacks << 'failure_ignite1' }, lambda { |object| object.callbacks << 'failure_ignite2' }, on: :ignite
|
42
|
-
@machine.after_failure lambda { |object| object.callbacks << 'failure_park1' }, lambda { |object| object.callbacks << 'failure_park2' }, on: :park
|
43
|
-
|
44
|
-
@event.fire(@object)
|
45
|
-
assert_equal %w(failure_ignite1 failure_ignite2), @object.callbacks
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|