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,160 +0,0 @@
|
|
1
|
-
require_relative '../../test_helper'
|
2
|
-
|
3
|
-
class MachineByDefaultTest < StateMachinesTest
|
4
|
-
def setup
|
5
|
-
@klass = Class.new
|
6
|
-
@machine = StateMachines::Machine.new(@klass)
|
7
|
-
@object = @klass.new
|
8
|
-
end
|
9
|
-
|
10
|
-
def test_should_have_an_owner_class
|
11
|
-
assert_equal @klass, @machine.owner_class
|
12
|
-
end
|
13
|
-
|
14
|
-
def test_should_have_a_name
|
15
|
-
assert_equal :state, @machine.name
|
16
|
-
end
|
17
|
-
|
18
|
-
def test_should_have_an_attribute
|
19
|
-
assert_equal :state, @machine.attribute
|
20
|
-
end
|
21
|
-
|
22
|
-
def test_should_prefix_custom_attributes_with_attribute
|
23
|
-
assert_equal :state_event, @machine.attribute(:event)
|
24
|
-
end
|
25
|
-
|
26
|
-
def test_should_have_an_initial_state
|
27
|
-
refute_nil @machine.initial_state(@object)
|
28
|
-
end
|
29
|
-
|
30
|
-
def test_should_have_a_nil_initial_state
|
31
|
-
assert_nil @machine.initial_state(@object).value
|
32
|
-
end
|
33
|
-
|
34
|
-
def test_should_not_have_any_events
|
35
|
-
refute @machine.events.any?
|
36
|
-
end
|
37
|
-
|
38
|
-
def test_should_not_have_any_before_callbacks
|
39
|
-
assert @machine.callbacks[:before].empty?
|
40
|
-
end
|
41
|
-
|
42
|
-
def test_should_not_have_any_after_callbacks
|
43
|
-
assert @machine.callbacks[:after].empty?
|
44
|
-
end
|
45
|
-
|
46
|
-
def test_should_not_have_any_failure_callbacks
|
47
|
-
assert @machine.callbacks[:failure].empty?
|
48
|
-
end
|
49
|
-
|
50
|
-
def test_should_not_have_an_action
|
51
|
-
assert_nil @machine.action
|
52
|
-
end
|
53
|
-
|
54
|
-
def test_should_use_tranactions
|
55
|
-
assert_equal true, @machine.use_transactions
|
56
|
-
end
|
57
|
-
|
58
|
-
def test_should_not_have_a_namespace
|
59
|
-
assert_nil @machine.namespace
|
60
|
-
end
|
61
|
-
|
62
|
-
def test_should_have_a_nil_state
|
63
|
-
assert_equal [nil], @machine.states.keys
|
64
|
-
end
|
65
|
-
|
66
|
-
def test_should_set_initial_on_nil_state
|
67
|
-
assert @machine.state(nil).initial
|
68
|
-
end
|
69
|
-
|
70
|
-
def test_should_generate_default_messages
|
71
|
-
assert_equal 'is invalid', @machine.generate_message(:invalid)
|
72
|
-
assert_equal 'cannot transition when parked', @machine.generate_message(:invalid_event, [[:state, :parked]])
|
73
|
-
assert_equal 'cannot transition via "park"', @machine.generate_message(:invalid_transition, [[:event, :park]])
|
74
|
-
end
|
75
|
-
|
76
|
-
def test_should_define_a_reader_attribute_for_the_attribute
|
77
|
-
assert @object.respond_to?(:state)
|
78
|
-
end
|
79
|
-
|
80
|
-
def test_should_define_a_writer_attribute_for_the_attribute
|
81
|
-
assert @object.respond_to?(:state=)
|
82
|
-
end
|
83
|
-
|
84
|
-
def test_should_define_a_predicate_for_the_attribute
|
85
|
-
assert @object.respond_to?(:state?)
|
86
|
-
end
|
87
|
-
|
88
|
-
def test_should_define_a_name_reader_for_the_attribute
|
89
|
-
assert @object.respond_to?(:state_name)
|
90
|
-
end
|
91
|
-
|
92
|
-
def test_should_define_an_event_reader_for_the_attribute
|
93
|
-
assert @object.respond_to?(:state_events)
|
94
|
-
end
|
95
|
-
|
96
|
-
def test_should_define_a_transition_reader_for_the_attribute
|
97
|
-
assert @object.respond_to?(:state_transitions)
|
98
|
-
end
|
99
|
-
|
100
|
-
def test_should_define_a_path_reader_for_the_attribute
|
101
|
-
assert @object.respond_to?(:state_paths)
|
102
|
-
end
|
103
|
-
|
104
|
-
def test_should_define_an_event_runner_for_the_attribute
|
105
|
-
assert @object.respond_to?(:fire_state_event)
|
106
|
-
end
|
107
|
-
|
108
|
-
def test_should_not_define_an_event_attribute_reader
|
109
|
-
refute @object.respond_to?(:state_event)
|
110
|
-
end
|
111
|
-
|
112
|
-
def test_should_not_define_an_event_attribute_writer
|
113
|
-
refute @object.respond_to?(:state_event=)
|
114
|
-
end
|
115
|
-
|
116
|
-
def test_should_not_define_an_event_transition_attribute_reader
|
117
|
-
refute @object.respond_to?(:state_event_transition)
|
118
|
-
end
|
119
|
-
|
120
|
-
def test_should_not_define_an_event_transition_attribute_writer
|
121
|
-
refute @object.respond_to?(:state_event_transition=)
|
122
|
-
end
|
123
|
-
|
124
|
-
def test_should_define_a_human_attribute_name_reader_for_the_attribute
|
125
|
-
assert @klass.respond_to?(:human_state_name)
|
126
|
-
end
|
127
|
-
|
128
|
-
def test_should_define_a_human_event_name_reader_for_the_attribute
|
129
|
-
assert @klass.respond_to?(:human_state_event_name)
|
130
|
-
end
|
131
|
-
|
132
|
-
def test_should_not_define_singular_with_scope
|
133
|
-
refute @klass.respond_to?(:with_state)
|
134
|
-
end
|
135
|
-
|
136
|
-
def test_should_not_define_singular_without_scope
|
137
|
-
refute @klass.respond_to?(:without_state)
|
138
|
-
end
|
139
|
-
|
140
|
-
def test_should_not_define_plural_with_scope
|
141
|
-
refute @klass.respond_to?(:with_states)
|
142
|
-
end
|
143
|
-
|
144
|
-
def test_should_not_define_plural_without_scope
|
145
|
-
refute @klass.respond_to?(:without_states)
|
146
|
-
end
|
147
|
-
|
148
|
-
def test_should_extend_owner_class_with_class_methods
|
149
|
-
assert((class << @klass; ancestors; end).include?(StateMachines::ClassMethods))
|
150
|
-
end
|
151
|
-
|
152
|
-
def test_should_include_instance_methods_in_owner_class
|
153
|
-
assert @klass.included_modules.include?(StateMachines::InstanceMethods)
|
154
|
-
end
|
155
|
-
|
156
|
-
def test_should_define_state_machines_reader
|
157
|
-
expected = { state: @machine }
|
158
|
-
assert_equal expected, @klass.state_machines
|
159
|
-
end
|
160
|
-
end
|
@@ -1,17 +0,0 @@
|
|
1
|
-
require_relative '../../test_helper'
|
2
|
-
|
3
|
-
class MachineFinderCustomOptionsTest < StateMachinesTest
|
4
|
-
def setup
|
5
|
-
@klass = Class.new
|
6
|
-
@machine = StateMachines::Machine.find_or_create(@klass, :status, initial: :parked)
|
7
|
-
@object = @klass.new
|
8
|
-
end
|
9
|
-
|
10
|
-
def test_should_use_custom_attribute
|
11
|
-
assert_equal :status, @machine.attribute
|
12
|
-
end
|
13
|
-
|
14
|
-
def test_should_set_custom_initial_state
|
15
|
-
assert_equal :parked, @machine.initial_state(@object).name
|
16
|
-
end
|
17
|
-
end
|
@@ -1,85 +0,0 @@
|
|
1
|
-
require_relative '../../test_helper'
|
2
|
-
|
3
|
-
class MachineFinderWithExistingMachineOnSuperclassTest < StateMachinesTest
|
4
|
-
module Custom
|
5
|
-
include StateMachines::Integrations::Base
|
6
|
-
|
7
|
-
def self.matches?(_klass)
|
8
|
-
false
|
9
|
-
end
|
10
|
-
end
|
11
|
-
|
12
|
-
def setup
|
13
|
-
StateMachines::Integrations.register(MachineFinderWithExistingMachineOnSuperclassTest::Custom)
|
14
|
-
|
15
|
-
@base_class = Class.new
|
16
|
-
@base_machine = StateMachines::Machine.new(@base_class, :status, action: :save, integration: :custom)
|
17
|
-
@base_machine.event(:ignite) {}
|
18
|
-
@base_machine.before_transition(-> {})
|
19
|
-
@base_machine.after_transition(-> {})
|
20
|
-
@base_machine.around_transition(-> {})
|
21
|
-
|
22
|
-
@klass = Class.new(@base_class)
|
23
|
-
@machine = StateMachines::Machine.find_or_create(@klass, :status) {}
|
24
|
-
end
|
25
|
-
|
26
|
-
def test_should_accept_a_block
|
27
|
-
called = false
|
28
|
-
StateMachines::Machine.find_or_create(Class.new(@base_class)) do
|
29
|
-
called = respond_to?(:event)
|
30
|
-
end
|
31
|
-
|
32
|
-
assert called
|
33
|
-
end
|
34
|
-
|
35
|
-
def test_should_not_create_a_new_machine_if_no_block_or_options
|
36
|
-
machine = StateMachines::Machine.find_or_create(Class.new(@base_class), :status)
|
37
|
-
|
38
|
-
assert_same machine, @base_machine
|
39
|
-
end
|
40
|
-
|
41
|
-
def test_should_create_a_new_machine_if_given_options
|
42
|
-
machine = StateMachines::Machine.find_or_create(@klass, :status, initial: :parked)
|
43
|
-
|
44
|
-
refute_nil machine
|
45
|
-
refute_same machine, @base_machine
|
46
|
-
end
|
47
|
-
|
48
|
-
def test_should_create_a_new_machine_if_given_block
|
49
|
-
refute_nil @machine
|
50
|
-
refute_same @machine, @base_machine
|
51
|
-
end
|
52
|
-
|
53
|
-
def test_should_copy_the_base_attribute
|
54
|
-
assert_equal :status, @machine.attribute
|
55
|
-
end
|
56
|
-
|
57
|
-
def test_should_copy_the_base_configuration
|
58
|
-
assert_equal :save, @machine.action
|
59
|
-
end
|
60
|
-
|
61
|
-
def test_should_copy_events
|
62
|
-
# Can't assert equal arrays since their machines change
|
63
|
-
assert_equal 1, @machine.events.length
|
64
|
-
end
|
65
|
-
|
66
|
-
def test_should_copy_before_callbacks
|
67
|
-
assert_equal @base_machine.callbacks[:before], @machine.callbacks[:before]
|
68
|
-
end
|
69
|
-
|
70
|
-
def test_should_copy_after_transitions
|
71
|
-
assert_equal @base_machine.callbacks[:after], @machine.callbacks[:after]
|
72
|
-
end
|
73
|
-
|
74
|
-
def test_should_use_the_same_integration
|
75
|
-
class_ancestors = class << @machine
|
76
|
-
ancestors
|
77
|
-
end
|
78
|
-
|
79
|
-
assert(class_ancestors.include?(MachineFinderWithExistingMachineOnSuperclassTest::Custom))
|
80
|
-
end
|
81
|
-
|
82
|
-
def teardown
|
83
|
-
StateMachines::Integrations.reset
|
84
|
-
end
|
85
|
-
end
|
@@ -1,23 +0,0 @@
|
|
1
|
-
require_relative '../../test_helper'
|
2
|
-
|
3
|
-
class MachineFinderWithExistingOnSameClassTest < StateMachinesTest
|
4
|
-
def setup
|
5
|
-
@klass = Class.new
|
6
|
-
@existing_machine = StateMachines::Machine.new(@klass)
|
7
|
-
@machine = StateMachines::Machine.find_or_create(@klass)
|
8
|
-
end
|
9
|
-
|
10
|
-
def test_should_accept_a_block
|
11
|
-
called = false
|
12
|
-
StateMachines::Machine.find_or_create(@klass) do
|
13
|
-
called = respond_to?(:event)
|
14
|
-
end
|
15
|
-
|
16
|
-
assert called
|
17
|
-
end
|
18
|
-
|
19
|
-
def test_should_not_create_a_new_machine
|
20
|
-
assert_same @machine, @existing_machine
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
@@ -1,25 +0,0 @@
|
|
1
|
-
require_relative '../../test_helper'
|
2
|
-
|
3
|
-
class MachineFinderWithoutExistingMachineTest < StateMachinesTest
|
4
|
-
def setup
|
5
|
-
@klass = Class.new
|
6
|
-
@machine = StateMachines::Machine.find_or_create(@klass)
|
7
|
-
end
|
8
|
-
|
9
|
-
def test_should_accept_a_block
|
10
|
-
called = false
|
11
|
-
StateMachines::Machine.find_or_create(Class.new) do
|
12
|
-
called = respond_to?(:event)
|
13
|
-
end
|
14
|
-
|
15
|
-
assert called
|
16
|
-
end
|
17
|
-
|
18
|
-
def test_should_create_a_new_machine
|
19
|
-
refute_nil @machine
|
20
|
-
end
|
21
|
-
|
22
|
-
def test_should_use_default_state
|
23
|
-
assert_equal :state, @machine.attribute
|
24
|
-
end
|
25
|
-
end
|
@@ -1,52 +0,0 @@
|
|
1
|
-
require_relative '../../test_helper'
|
2
|
-
|
3
|
-
class MachinePersistenceTest < StateMachinesTest
|
4
|
-
def setup
|
5
|
-
@klass = Class.new do
|
6
|
-
attr_accessor :state_event
|
7
|
-
end
|
8
|
-
@machine = StateMachines::Machine.new(@klass, initial: :parked)
|
9
|
-
@object = @klass.new
|
10
|
-
end
|
11
|
-
|
12
|
-
def test_should_allow_reading_state
|
13
|
-
assert_equal 'parked', @machine.read(@object, :state)
|
14
|
-
end
|
15
|
-
|
16
|
-
def test_should_allow_reading_custom_attributes
|
17
|
-
assert_nil @machine.read(@object, :event)
|
18
|
-
|
19
|
-
@object.state_event = 'ignite'
|
20
|
-
assert_equal 'ignite', @machine.read(@object, :event)
|
21
|
-
end
|
22
|
-
|
23
|
-
def test_should_allow_reading_custom_instance_variables
|
24
|
-
@klass.class_eval do
|
25
|
-
attr_writer :state_value
|
26
|
-
end
|
27
|
-
|
28
|
-
@object.state_value = 1
|
29
|
-
assert_raises(NoMethodError) { @machine.read(@object, :value) }
|
30
|
-
assert_equal 1, @machine.read(@object, :value, true)
|
31
|
-
end
|
32
|
-
|
33
|
-
def test_should_allow_writing_state
|
34
|
-
@machine.write(@object, :state, 'idling')
|
35
|
-
assert_equal 'idling', @object.state
|
36
|
-
end
|
37
|
-
|
38
|
-
def test_should_allow_writing_custom_attributes
|
39
|
-
@machine.write(@object, :event, 'ignite')
|
40
|
-
assert_equal 'ignite', @object.state_event
|
41
|
-
end
|
42
|
-
|
43
|
-
def test_should_allow_writing_custom_instance_variables
|
44
|
-
@klass.class_eval do
|
45
|
-
attr_reader :state_value
|
46
|
-
end
|
47
|
-
|
48
|
-
assert_raises(NoMethodError) { @machine.write(@object, :value, 1) }
|
49
|
-
assert_equal 1, @machine.write(@object, :value, 1, true)
|
50
|
-
assert_equal 1, @object.state_value
|
51
|
-
end
|
52
|
-
end
|
@@ -1,56 +0,0 @@
|
|
1
|
-
require_relative '../../test_helper'
|
2
|
-
|
3
|
-
class MachineStateInitializationTest < StateMachinesTest
|
4
|
-
def setup
|
5
|
-
@klass = Class.new
|
6
|
-
@machine = StateMachines::Machine.new(@klass, :state, initial: :parked, initialize: false)
|
7
|
-
|
8
|
-
@object = @klass.new
|
9
|
-
@object.state = nil
|
10
|
-
end
|
11
|
-
|
12
|
-
def test_should_set_states_if_nil
|
13
|
-
@machine.initialize_state(@object)
|
14
|
-
|
15
|
-
assert_equal 'parked', @object.state
|
16
|
-
end
|
17
|
-
|
18
|
-
def test_should_set_states_if_empty
|
19
|
-
@object.state = ''
|
20
|
-
@machine.initialize_state(@object)
|
21
|
-
|
22
|
-
assert_equal 'parked', @object.state
|
23
|
-
end
|
24
|
-
|
25
|
-
def test_should_not_set_states_if_not_empty
|
26
|
-
@object.state = 'idling'
|
27
|
-
@machine.initialize_state(@object)
|
28
|
-
|
29
|
-
assert_equal 'idling', @object.state
|
30
|
-
end
|
31
|
-
|
32
|
-
def test_should_set_states_if_not_empty_and_forced
|
33
|
-
@object.state = 'idling'
|
34
|
-
@machine.initialize_state(@object, force: true)
|
35
|
-
|
36
|
-
assert_equal 'parked', @object.state
|
37
|
-
end
|
38
|
-
|
39
|
-
def test_should_not_set_state_if_nil_and_nil_is_valid_state
|
40
|
-
@machine.state :initial, value: nil
|
41
|
-
@machine.initialize_state(@object)
|
42
|
-
|
43
|
-
assert_nil @object.state
|
44
|
-
end
|
45
|
-
|
46
|
-
def test_should_write_to_hash_if_specified
|
47
|
-
@machine.initialize_state(@object, to: hash = {})
|
48
|
-
assert_equal({ 'state' => 'parked' }, hash)
|
49
|
-
end
|
50
|
-
|
51
|
-
def test_should_not_write_to_object_if_writing_to_hash
|
52
|
-
@machine.initialize_state(@object, to: {})
|
53
|
-
assert_nil @object.state
|
54
|
-
end
|
55
|
-
end
|
56
|
-
|
@@ -1,30 +0,0 @@
|
|
1
|
-
require_relative '../../test_helper'
|
2
|
-
|
3
|
-
class MachineTest < StateMachinesTest
|
4
|
-
def test_should_raise_exception_if_invalid_option_specified
|
5
|
-
assert_raises(ArgumentError) { StateMachines::Machine.new(Class.new, invalid: true) }
|
6
|
-
end
|
7
|
-
|
8
|
-
def test_should_not_raise_exception_if_custom_messages_specified
|
9
|
-
StateMachines::Machine.new(Class.new, messages: { invalid_transition: 'custom' })
|
10
|
-
end
|
11
|
-
|
12
|
-
def test_should_evaluate_a_block_during_initialization
|
13
|
-
called = true
|
14
|
-
StateMachines::Machine.new(Class.new) do
|
15
|
-
called = respond_to?(:event)
|
16
|
-
end
|
17
|
-
|
18
|
-
assert called
|
19
|
-
end
|
20
|
-
|
21
|
-
def test_should_provide_matcher_helpers_during_initialization
|
22
|
-
matchers = []
|
23
|
-
|
24
|
-
StateMachines::Machine.new(Class.new) do
|
25
|
-
matchers = [all, any, same]
|
26
|
-
end
|
27
|
-
|
28
|
-
assert_equal [StateMachines::AllMatcher.instance, StateMachines::AllMatcher.instance, StateMachines::LoopbackMatcher.instance], matchers
|
29
|
-
end
|
30
|
-
end
|
@@ -1,23 +0,0 @@
|
|
1
|
-
require_relative '../../test_helper'
|
2
|
-
|
3
|
-
class MachineWithActionAlreadyOverriddenTest < StateMachinesTest
|
4
|
-
def setup
|
5
|
-
@superclass = Class.new do
|
6
|
-
def save
|
7
|
-
end
|
8
|
-
end
|
9
|
-
@klass = Class.new(@superclass)
|
10
|
-
|
11
|
-
StateMachines::Machine.new(@klass, action: :save)
|
12
|
-
@machine = StateMachines::Machine.new(@klass, :status, action: :save)
|
13
|
-
@object = @klass.new
|
14
|
-
end
|
15
|
-
|
16
|
-
def test_should_not_redefine_action
|
17
|
-
assert_equal 1, @klass.ancestors.select { |ancestor| ![@klass, @superclass].include?(ancestor) && ancestor.method_defined?(:save) }.length
|
18
|
-
end
|
19
|
-
|
20
|
-
def test_should_mark_action_hook_as_defined
|
21
|
-
assert @machine.action_hook?
|
22
|
-
end
|
23
|
-
end
|
@@ -1,37 +0,0 @@
|
|
1
|
-
require_relative '../../test_helper'
|
2
|
-
|
3
|
-
class MachineWithActionDefinedInClassTest < StateMachinesTest
|
4
|
-
def setup
|
5
|
-
@klass = Class.new do
|
6
|
-
def save
|
7
|
-
end
|
8
|
-
end
|
9
|
-
|
10
|
-
@machine = StateMachines::Machine.new(@klass, action: :save)
|
11
|
-
@object = @klass.new
|
12
|
-
end
|
13
|
-
|
14
|
-
def test_should_define_an_event_attribute_reader
|
15
|
-
assert @object.respond_to?(:state_event)
|
16
|
-
end
|
17
|
-
|
18
|
-
def test_should_define_an_event_attribute_writer
|
19
|
-
assert @object.respond_to?(:state_event=)
|
20
|
-
end
|
21
|
-
|
22
|
-
def test_should_define_an_event_transition_attribute_reader
|
23
|
-
assert @object.respond_to?(:state_event_transition, true)
|
24
|
-
end
|
25
|
-
|
26
|
-
def test_should_define_an_event_transition_attribute_writer
|
27
|
-
assert @object.respond_to?(:state_event_transition=, true)
|
28
|
-
end
|
29
|
-
|
30
|
-
def test_should_not_define_action
|
31
|
-
refute @klass.ancestors.any? { |ancestor| ancestor != @klass && ancestor.method_defined?(:save) }
|
32
|
-
end
|
33
|
-
|
34
|
-
def test_should_not_mark_action_hook_as_defined
|
35
|
-
refute @machine.action_hook?
|
36
|
-
end
|
37
|
-
end
|
@@ -1,46 +0,0 @@
|
|
1
|
-
require_relative '../../test_helper'
|
2
|
-
|
3
|
-
class MachineWithActionDefinedInIncludedModuleTest < StateMachinesTest
|
4
|
-
def setup
|
5
|
-
@mod = mod = Module.new do
|
6
|
-
def save
|
7
|
-
end
|
8
|
-
end
|
9
|
-
|
10
|
-
@klass = Class.new do
|
11
|
-
include mod
|
12
|
-
end
|
13
|
-
|
14
|
-
@machine = StateMachines::Machine.new(@klass, action: :save)
|
15
|
-
@object = @klass.new
|
16
|
-
end
|
17
|
-
|
18
|
-
def test_should_define_an_event_attribute_reader
|
19
|
-
assert @object.respond_to?(:state_event)
|
20
|
-
end
|
21
|
-
|
22
|
-
def test_should_define_an_event_attribute_writer
|
23
|
-
assert @object.respond_to?(:state_event=)
|
24
|
-
end
|
25
|
-
|
26
|
-
def test_should_define_an_event_transition_attribute_reader
|
27
|
-
assert @object.respond_to?(:state_event_transition, true)
|
28
|
-
end
|
29
|
-
|
30
|
-
def test_should_define_an_event_transition_attribute_writer
|
31
|
-
assert @object.respond_to?(:state_event_transition=, true)
|
32
|
-
end
|
33
|
-
|
34
|
-
def test_should_define_action
|
35
|
-
assert @klass.ancestors.any? { |ancestor| ![@klass, @mod].include?(ancestor) && ancestor.method_defined?(:save) }
|
36
|
-
end
|
37
|
-
|
38
|
-
def test_should_keep_action_public
|
39
|
-
assert @klass.public_method_defined?(:save)
|
40
|
-
end
|
41
|
-
|
42
|
-
def test_should_mark_action_hook_as_defined
|
43
|
-
assert @machine.action_hook?
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
@@ -1,43 +0,0 @@
|
|
1
|
-
require_relative '../../test_helper'
|
2
|
-
|
3
|
-
class MachineWithActionDefinedInSuperclassTest < StateMachinesTest
|
4
|
-
def setup
|
5
|
-
@superclass = Class.new do
|
6
|
-
def save
|
7
|
-
end
|
8
|
-
end
|
9
|
-
@klass = Class.new(@superclass)
|
10
|
-
|
11
|
-
@machine = StateMachines::Machine.new(@klass, action: :save)
|
12
|
-
@object = @klass.new
|
13
|
-
end
|
14
|
-
|
15
|
-
def test_should_define_an_event_attribute_reader
|
16
|
-
assert @object.respond_to?(:state_event)
|
17
|
-
end
|
18
|
-
|
19
|
-
def test_should_define_an_event_attribute_writer
|
20
|
-
assert @object.respond_to?(:state_event=)
|
21
|
-
end
|
22
|
-
|
23
|
-
def test_should_define_an_event_transition_attribute_reader
|
24
|
-
assert @object.respond_to?(:state_event_transition, true)
|
25
|
-
end
|
26
|
-
|
27
|
-
def test_should_define_an_event_transition_attribute_writer
|
28
|
-
assert @object.respond_to?(:state_event_transition=, true)
|
29
|
-
end
|
30
|
-
|
31
|
-
def test_should_define_action
|
32
|
-
assert @klass.ancestors.any? { |ancestor| ![@klass, @superclass].include?(ancestor) && ancestor.method_defined?(:save) }
|
33
|
-
end
|
34
|
-
|
35
|
-
def test_should_keep_action_public
|
36
|
-
assert @klass.public_method_defined?(:save)
|
37
|
-
end
|
38
|
-
|
39
|
-
def test_should_mark_action_hook_as_defined
|
40
|
-
assert @machine.action_hook?
|
41
|
-
end
|
42
|
-
end
|
43
|
-
|
@@ -1,33 +0,0 @@
|
|
1
|
-
require_relative '../../test_helper'
|
2
|
-
|
3
|
-
class MachineWithActionUndefinedTest < StateMachinesTest
|
4
|
-
def setup
|
5
|
-
@klass = Class.new
|
6
|
-
@machine = StateMachines::Machine.new(@klass, action: :save)
|
7
|
-
@object = @klass.new
|
8
|
-
end
|
9
|
-
|
10
|
-
def test_should_define_an_event_attribute_reader
|
11
|
-
assert @object.respond_to?(:state_event)
|
12
|
-
end
|
13
|
-
|
14
|
-
def test_should_define_an_event_attribute_writer
|
15
|
-
assert @object.respond_to?(:state_event=)
|
16
|
-
end
|
17
|
-
|
18
|
-
def test_should_define_an_event_transition_attribute_reader
|
19
|
-
assert @object.respond_to?(:state_event_transition, true)
|
20
|
-
end
|
21
|
-
|
22
|
-
def test_should_define_an_event_transition_attribute_writer
|
23
|
-
assert @object.respond_to?(:state_event_transition=, true)
|
24
|
-
end
|
25
|
-
|
26
|
-
def test_should_not_define_action
|
27
|
-
refute @object.respond_to?(:save)
|
28
|
-
end
|
29
|
-
|
30
|
-
def test_should_not_mark_action_hook_as_defined
|
31
|
-
refute @machine.action_hook?
|
32
|
-
end
|
33
|
-
end
|
@@ -1,20 +0,0 @@
|
|
1
|
-
require_relative '../../test_helper'
|
2
|
-
|
3
|
-
class MachineWithCachedStateTest < StateMachinesTest
|
4
|
-
def setup
|
5
|
-
@klass = Class.new
|
6
|
-
@machine = StateMachines::Machine.new(@klass, initial: :parked)
|
7
|
-
@state = @machine.state :parked, value: -> { Object.new }, cache: true
|
8
|
-
|
9
|
-
@object = @klass.new
|
10
|
-
end
|
11
|
-
|
12
|
-
def test_should_use_evaluated_value
|
13
|
-
assert_instance_of Object, @object.state
|
14
|
-
end
|
15
|
-
|
16
|
-
def test_use_same_value_across_multiple_objects
|
17
|
-
assert_equal @object.state, @klass.new.state
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|