module TestBench::Fixture
Constants
- Error
Attributes
session=[W]
test_session[W]
Public Class Methods
assure_fixture(cls)
click to toggle source
# File lib/test_bench/fixture/fixture.rb, line 21 def self.assure_fixture(cls) unless cls.included_modules.include?(self) raise Error, "Not a fixture class (Class: #{cls.inspect})" end end
build(cls, *args, session: nil, output: nil, error_policy: nil, factory_method: nil, **kwargs, &block)
click to toggle source
# File lib/test_bench/fixture/fixture.rb, line 5 def self.build(cls, *args, session: nil, output: nil, error_policy: nil, factory_method: nil, **kwargs, &block) assure_fixture(cls) factory_method = factory_method(cls) if kwargs.empty? instance = factory_method.(*args, &block) else instance = factory_method.(*args, **kwargs, &block) end Session.configure(instance, session: session, output: output, error_policy: error_policy) instance end
call(cls, *args, **kwargs, &block)
click to toggle source
# File lib/test_bench/fixture/fixture.rb, line 37 def self.call(cls, *args, **kwargs, &block) factory_method = factory_method(cls) if factory_method.name == :new last_parameter_type, _ = cls.instance_method(:initialize).parameters.last else last_parameter_type, _ = factory_method.parameters.last end if last_parameter_type == :block instance = build(cls, *args, **kwargs, &block) block = nil else instance = build(cls, *args, **kwargs) end instance.test_session.fixture(instance, &block) instance end
factory_method(cls)
click to toggle source
# File lib/test_bench/fixture/fixture.rb, line 27 def self.factory_method(cls) if cls.respond_to?(:build) cls.method(:build) elsif cls.respond_to?(:new) cls.method(:new) else raise Error, "Must be given a class (Argument: #{cls.inspect})" end end
Public Instance Methods
assert(value, caller_location: nil)
click to toggle source
# File lib/test_bench/fixture/fixture.rb, line 81 def assert(value, caller_location: nil) caller_location ||= caller[0] test_session.assert(value, caller_location: caller_location) end
assert_raises(error_class=nil, message=nil, strict: nil, caller_location: nil, &block)
click to toggle source
# File lib/test_bench/fixture/fixture.rb, line 93 def assert_raises(error_class=nil, message=nil, strict: nil, caller_location: nil, &block) if error_class.nil? strict ||= false error_class = StandardError else strict = true if strict.nil? end caller_location ||= caller[0] detail "Expected Error: #{error_class}#{' (strict)' if strict}" detail "Expected Message: #{message.inspect}" unless message.nil? block.() detail "(No error was raised)" rescue error_class => error detail "Raised error: #{error.inspect}#{" (subclass of #{error_class})" if error.class < error_class}" if strict && !error.instance_of?(error_class) raise error end if message.nil? result = true else result = error.message == message end assert(result, caller_location: caller_location) else assert(false, caller_location: caller_location) end
comment(text, *additional_lines)
click to toggle source
# File lib/test_bench/fixture/fixture.rb, line 65 def comment(text, *additional_lines) test_session.comment(text) additional_lines.each do |text| test_session.comment(text) end end
context(text=nil, &block)
click to toggle source
# File lib/test_bench/fixture/fixture.rb, line 164 def context(text=nil, &block) test_session.context(text, &block) end
detail(text, *additional_lines)
click to toggle source
# File lib/test_bench/fixture/fixture.rb, line 73 def detail(text, *additional_lines) test_session.detail(text) additional_lines.each do |text| test_session.detail(text) end end
fixture(cls, *args, **kwargs, &block)
click to toggle source
# File lib/test_bench/fixture/fixture.rb, line 182 def fixture(cls, *args, **kwargs, &block) Fixture.(cls, *args, session: test_session, **kwargs, &block) end
refute(value, caller_location: nil)
click to toggle source
# File lib/test_bench/fixture/fixture.rb, line 87 def refute(value, caller_location: nil) caller_location ||= caller[0] test_session.assert(!value, caller_location: caller_location) end
refute_raises(error_class=nil, strict: nil, caller_location: nil, &block)
click to toggle source
# File lib/test_bench/fixture/fixture.rb, line 130 def refute_raises(error_class=nil, strict: nil, caller_location: nil, &block) if error_class.nil? strict ||= false error_class = StandardError else strict = true if strict.nil? end caller_location ||= caller[0] detail "Prohibited Error: #{error_class}#{' (strict)' if strict}" block.() detail "(No error was raised)" result = true rescue error_class => error detail "Raised Error: #{error.inspect}" if strict && !error.instance_of?(error_class) raise error end result = false ensure unless result.nil? assert(result, caller_location: caller_location) end end
test(text=nil, &block)
click to toggle source
# File lib/test_bench/fixture/fixture.rb, line 168 def test(text=nil, &block) test_session.test(text, &block) end
test!(text=nil, &block)
click to toggle source
# File lib/test_bench/fixture/fixture.rb, line 172 def test!(text=nil, &block) result = test(text, &block) unless result raise Session::Abort.new, "Context aborted" end result end
test_session()
click to toggle source
# File lib/test_bench/fixture/fixture.rb, line 58 def test_session @test_session ||= Session::Substitute.build end
Also aliased as: session