Module: Philiprehberger::TestFactory

Defined in:
lib/philiprehberger/test_factory.rb,
lib/philiprehberger/test_factory/builder.rb,
lib/philiprehberger/test_factory/version.rb,
lib/philiprehberger/test_factory/registry.rb,
lib/philiprehberger/test_factory/sequence.rb,
lib/philiprehberger/test_factory/definition_proxy.rb

Overview

Lightweight DSL for building test data objects without ActiveRecord.

Defined Under Namespace

Classes: Builder, DefinitionProxy, Error, NullProxy, Registry, Sequence, TransientCollector

Constant Summary collapse

VERSION =
'0.3.0'

Class Method Summary collapse

Class Method Details

.build(name, traits: [], **overrides) ⇒ Hash

Build a single data hash from a factory.

Parameters:

  • name (Symbol)

    factory name

  • traits (Array<Symbol>) (defaults to: [])

    trait names to apply

  • overrides (Hash)

    explicit attribute overrides

Returns:

  • (Hash)

    the built data hash



49
50
51
# File 'lib/philiprehberger/test_factory.rb', line 49

def build(name, traits: [], **overrides)
  builder.build(name, traits: traits, **overrides)
end

.build_list(name, count, traits: [], **overrides) ⇒ Array<Hash>

Build a list of data hashes from a factory.

Parameters:

  • name (Symbol)

    factory name

  • count (Integer)

    number of items to build

  • traits (Array<Symbol>) (defaults to: [])

    trait names to apply

  • overrides (Hash)

    explicit attribute overrides

Returns:

  • (Array<Hash>)

    the built data hashes



60
61
62
# File 'lib/philiprehberger/test_factory.rb', line 60

def build_list(name, count, traits: [], **overrides)
  builder.build_list(name, count, traits: traits, **overrides)
end

.define(name) ⇒ void

This method returns an undefined value.

Register a factory definition.

Parameters:

  • name (Symbol)

    factory name

  • block (Proc)

    block returning a hash of default attributes



20
21
22
# File 'lib/philiprehberger/test_factory.rb', line 20

def define(name, &)
  registry.define(name, &)
end

.reset!void

This method returns an undefined value.

Clear all factory definitions, traits, and sequences.



67
68
69
70
# File 'lib/philiprehberger/test_factory.rb', line 67

def reset!
  @registry = nil
  @builder = nil
end

.sequence(name) ⇒ void

This method returns an undefined value.

Register a sequence generator.

Parameters:

  • name (Symbol)

    sequence name

  • block (Proc)

    block receiving an integer counter



39
40
41
# File 'lib/philiprehberger/test_factory.rb', line 39

def sequence(name, &)
  registry.sequence(name, &)
end

.trait(factory_name, trait_name) ⇒ void

This method returns an undefined value.

Register a trait override for a factory.

Parameters:

  • factory_name (Symbol)

    factory name

  • trait_name (Symbol)

    trait name

  • block (Proc)

    block returning overridden attributes



30
31
32
# File 'lib/philiprehberger/test_factory.rb', line 30

def trait(factory_name, trait_name, &)
  registry.trait(factory_name, trait_name, &)
end