class TestBench::Fixtures::ConfigureReceiver

Attributes

cls[R]
default_attr_name[R]

Public Class Methods

build(cls, *args, attr_name:, **kwargs) click to toggle source
# File lib/test_bench/fixtures/configure_receiver.rb, line 24
def self.build(cls, *args, attr_name:, **kwargs)
  new(cls, attr_name, args, kwargs)
end
new(cls, default_attr_name, args=nil, kwargs=nil) click to toggle source
# File lib/test_bench/fixtures/configure_receiver.rb, line 17
def initialize(cls, default_attr_name, args=nil, kwargs=nil)
  @cls = cls
  @default_attr_name = default_attr_name
  @args = args
  @kwargs = kwargs
end

Public Instance Methods

args() click to toggle source
# File lib/test_bench/fixtures/configure_receiver.rb, line 9
def args
  @args ||= []
end
call() click to toggle source
# File lib/test_bench/fixtures/configure_receiver.rb, line 28
def call
  test "Responds to configure" do
    assert(cls.respond_to?(:configure))
  end or return

  context do
    receiver = OpenStruct.new

    instance = configure(receiver)

    test "Attribute is set on receiver" do
      refute(receiver.public_send(default_attr_name).nil?)
    end

    test "Returns the instance that was assigned" do
      assert(receiver.public_send(default_attr_name).equal?(instance))
    end
  end

  context "Optional Attribute Name" do
    context "Given" do
      receiver = OpenStruct.new
      attr_name = :given_attr_name

      configure(receiver, attr_name: attr_name)

      test "Given attribute is set on receiver (Attribute: #{attr_name})" do
        refute(receiver.public_send(attr_name).nil?)
      end

      test "Default attribute is not set on receiver" do
        assert(receiver.public_send(default_attr_name).nil?)
      end
    end

    context "Omitted" do
      receiver = OpenStruct.new

      configure(receiver)

      test "Default attribute is set on receiver (Attribute: #{default_attr_name})" do
        refute(receiver.public_send(default_attr_name).nil?)
      end
    end
  end
end
configure(receiver, attr_name: nil) click to toggle source
# File lib/test_bench/fixtures/configure_receiver.rb, line 75
def configure(receiver, attr_name: nil)
  cls.configure(receiver, *args, attr_name: attr_name, **kwargs)
end
kwargs() click to toggle source
# File lib/test_bench/fixtures/configure_receiver.rb, line 13
def kwargs
  @kwargs ||= {}
end