Class: HasHelpers::FactoryScenario::Runner

Inherits:
Object
  • Object
show all
Defined in:
lib/has_helpers/factory_scenario/runner.rb

Overview

Executes a scenario by composing:

  • scenario-defined build aliases
  • client-provided object overrides/new objects
  • lazy activation through run/response/activate references

Defined Under Namespace

Classes: Reference, RunContext

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(definition, objects_param, activate_aliases = [], response_aliases = nil) ⇒ Runner

Returns a new instance of Runner.



27
28
29
30
31
32
33
34
35
36
# File 'lib/has_helpers/factory_scenario/runner.rb', line 27

def initialize(definition, objects_param, activate_aliases = [], response_aliases = nil)
  @definition = definition
  @objects_param = normalize_objects_param(objects_param)
  @activate_aliases = Array(activate_aliases).map(&:to_sym)
  @response_aliases = response_aliases&.map(&:to_sym)
  @built = {}
  @alias_registry = build_alias_registry
  @run_context_instance = nil
  @explicit_keys = []
end

Instance Attribute Details

#explicit_keysObject (readonly)

Returns the value of attribute explicit_keys.



11
12
13
# File 'lib/has_helpers/factory_scenario/runner.rb', line 11

def explicit_keys
  @explicit_keys
end

Instance Method Details

#runObject



38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/has_helpers/factory_scenario/runner.rb', line 38

def run
  with_factorybot_overrides do
    @run_context_instance ||= build_run_context
    execute_run_block

    @activate_aliases.each { |alias_name| resolve_alias(alias_name) }
    response_targets.each { |alias_name| resolve_alias(alias_name) }
    build_remaining_request_objects
    persist_and_reload_records
  end

  @built
end