Class: FixtureFactory::Definition

Inherits:
Object
  • Object
show all
Defined in:
lib/fixture_factory/definition.rb

Overview

:nodoc:

Constant Summary collapse

EMPTY_BLOCK =
proc {}

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name, options = {}) ⇒ Definition

Returns a new instance of Definition.



10
11
12
13
14
15
16
17
# File 'lib/fixture_factory/definition.rb', line 10

def initialize(name, options = {})
  self.parent         = options.fetch(:parent) { default_parent_for(name) }
  self.proc_class     = options.fetch(:class)  { parent.proc_class }
  self.fixture_method = options.fetch(:via)    { parent.fixture_method }
  self.fixture_name   = options.fetch(:like)   { parent.fixture_name }
  self.block          = options.fetch(:block)  { EMPTY_BLOCK }
  self.sequence       = Sequence.new
end

Instance Attribute Details

#blockObject



19
20
21
22
23
24
25
26
27
28
29
# File 'lib/fixture_factory/definition.rb', line 19

def block
  all_blocks = [parent&.block, @block].compact
  -> (*args) do
    all_blocks.reduce({}) do |attributes, block|
      block_attributes = FixtureFactory.evaluate(
        block, args: args, context: self
      )
      attributes.merge(block_attributes)
    end
  end
end

#fixture_methodObject

Returns the value of attribute fixture_method.



8
9
10
# File 'lib/fixture_factory/definition.rb', line 8

def fixture_method
  @fixture_method
end

#fixture_nameObject

Returns the value of attribute fixture_name.



8
9
10
# File 'lib/fixture_factory/definition.rb', line 8

def fixture_name
  @fixture_name
end

#parentObject

Returns the value of attribute parent.



8
9
10
# File 'lib/fixture_factory/definition.rb', line 8

def parent
  @parent
end

#proc_classObject

Returns the value of attribute proc_class.



8
9
10
# File 'lib/fixture_factory/definition.rb', line 8

def proc_class
  @proc_class
end

#sequenceObject

Returns the value of attribute sequence.



8
9
10
# File 'lib/fixture_factory/definition.rb', line 8

def sequence
  @sequence
end

Instance Method Details

#fixture_argsObject



37
38
39
# File 'lib/fixture_factory/definition.rb', line 37

def fixture_args
  [fixture_method, fixture_name]
end

#from_fixture?Boolean

Returns:

  • (Boolean)


41
42
43
# File 'lib/fixture_factory/definition.rb', line 41

def from_fixture?
  fixture_name.present? && fixture_method.present?
end

#klassObject



31
32
33
34
35
# File 'lib/fixture_factory/definition.rb', line 31

def klass
  @klass ||= proc_class.call
rescue NameError
  raise WrongClassError, proc_class
end

#run(context:) ⇒ Object



45
46
47
# File 'lib/fixture_factory/definition.rb', line 45

def run(context:)
  FixtureFactory.evaluate(runner, context: context)
end