Sha256: 6115a0670177290a2a78aaec60978732ad2c384eb2343a30bfadfe363b410bf5

Contents?: true

Size: 1.08 KB

Versions: 159

Compression:

Stored size: 1.08 KB

Contents

RSpec::Matchers.define :delegate do |delegated_method|
  chain :to do |target_method|
    @target_method = target_method
  end

  chain :as do |method_on_target|
    @method_on_target = method_on_target
  end

  chain :with_arguments do |args|
    @args = args
  end

  match do |instance|
    extend Mocha::API

    @instance = instance
    @args ||= []
    return_value = 'stubbed return value'
    method_on_target = @method_on_target || delegated_method
    stubbed_target = stub('stubbed_target', method_on_target => return_value)
    @instance.stubs(@target_method => stubbed_target)
    begin
      @instance.send(delegated_method, *@args) == return_value
    rescue NoMethodError
      false
    end
  end

  failure_message_for_should do
    if Class === @instance
      message = "expected #{@instance.name} "
      prefix = '.'
    else
      message = "expected #{@instance.class.name} "
      prefix = '#'
    end
    message << "to delegate #{prefix}#{delegated_method} to #{prefix}#{@target_method}"
    if @method_on_target
      message << ".#{@method_on_target}"
    end
    message
  end
end

Version data entries

159 entries across 95 versions & 9 rubygems

Version Path
sc_core-0.0.7 test/dummy/vendor/bundle/ruby/2.2.0/gems/factory_girl-4.5.0/spec/support/matchers/delegate.rb
classiccms-0.7.5 vendor/bundle/gems/factory_girl-3.2.0/spec/support/matchers/delegate.rb
classiccms-0.7.5 vendor/bundle/gems/factory_girl-3.3.0/spec/support/matchers/delegate.rb
classiccms-0.7.4 vendor/bundle/gems/factory_girl-3.2.0/spec/support/matchers/delegate.rb
classiccms-0.7.4 vendor/bundle/gems/factory_girl-3.3.0/spec/support/matchers/delegate.rb
classiccms-0.7.3 vendor/bundle/gems/factory_girl-3.3.0/spec/support/matchers/delegate.rb
classiccms-0.7.3 vendor/bundle/gems/factory_girl-3.2.0/spec/support/matchers/delegate.rb
solidus_backend-1.0.0.pre3 vendor/bundle/gems/factory_girl-4.5.0/spec/support/matchers/delegate.rb
solidus_backend-1.0.0.pre2 vendor/bundle/gems/factory_girl-4.5.0/spec/support/matchers/delegate.rb
solidus_backend-1.0.0.pre vendor/bundle/gems/factory_girl-4.5.0/spec/support/matchers/delegate.rb
apl-library-0.0.90 vendor/bundle/ruby/2.1.0/gems/apl-library-0.0.90/vendor/bundle/ruby/1.9.1/gems/factory_girl-4.4.0/spec/support/matchers/delegate.rb
apl-library-0.0.90 vendor/bundle/ruby/2.1.0/gems/apl-library-0.0.90/vendor/bundle/ruby/2.1.0/gems/factory_girl-4.4.0/spec/support/matchers/delegate.rb
apl-library-0.0.90 vendor/bundle/ruby/1.9.1/gems/factory_girl-4.4.0/spec/support/matchers/delegate.rb
apl-library-0.0.90 vendor/bundle/ruby/2.1.0/gems/factory_girl-4.4.0/spec/support/matchers/delegate.rb
factory_girl-4.5.0 spec/support/matchers/delegate.rb
factory_girl-4.4.0 spec/support/matchers/delegate.rb
factory_girl-4.3.0 spec/support/matchers/delegate.rb
challah-1.0.0 vendor/bundle/gems/factory_girl-4.2.0/spec/support/matchers/delegate.rb
classiccms-0.7.2 vendor/bundle/gems/factory_girl-3.2.0/spec/support/matchers/delegate.rb
classiccms-0.7.2 vendor/bundle/gems/factory_girl-3.3.0/spec/support/matchers/delegate.rb