Module: TestBench::Fixture::Build

Defined in:
lib/test_bench/fixture/build.rb

Constant Summary collapse

Error =
::Class.new(RuntimeError)

Class Method Summary collapse

Class Method Details

.assure_fixture(fixture_class) ⇒ Object



26
27
28
29
30
31
32
33
34
35
36
# File 'lib/test_bench/fixture/build.rb', line 26

def self.assure_fixture(fixture_class)
  is_class = fixture_class.instance_of?(::Class)
  if not is_class
    raise Error, "Not a class (Class: #{fixture_class})"
  end

  is_fixture_class = fixture_class.included_modules.include?(Fixture)
  if not is_fixture_class
    raise Error, "Not a fixture class (Class: #{fixture_class})"
  end
end

.call(fixture_class, test_session: nil) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/test_bench/fixture/build.rb', line 6

def self.call(fixture_class, *, test_session: nil, **, &)
  assure_fixture(fixture_class)

  if fixture_class.respond_to?(:build)
    constructor = :build
  else
    constructor = :new
  end

  fixture = fixture_class.public_send(constructor, *, **, &)

  Session.configure(
    fixture,
    session: test_session,
    attr_name: :test_session
  )

  fixture
end