Sha256: a5131a299c6e2243d641c8bba2e7babf7c7c2cdba73e3bac3ce58ba10bb0fbaa

Contents?: true

Size: 1.35 KB

Versions: 1

Compression:

Stored size: 1.35 KB

Contents

require 'spec_helper'

describe RenamedDelegate do
  class ToDelegate
    def method_key
    end

    def abcd
    end

    def key
    end

    def bla_key
    end

    def method_something
    end

    def key_something
    end
  end

  class TestClass
    extend RenamedDelegate

    attr_reader :delegate

    def initialize(delegate)
      @delegate = delegate
    end
  end

  TestClass.renamed_delegate_to :delegate,
                                ToDelegate.public_instance_methods(false),
                                'key' => 'shoes', 'something' => 'awesome'

  let(:delegate) { double('delegate').as_null_object }
  subject { TestClass.new delegate }

  def test_renaming(new_name, old_name)
    subject.public_send new_name
    expect(delegate).to have_received old_name
  end

  it 'delegates method_shoes to method_key' do
    test_renaming :method_shoes, :method_key
  end

  it 'delegates shoes to key' do
    test_renaming :shoes, :key
  end

  it 'delegates bla_shoes to bla_key' do
    test_renaming :bla_shoes, :bla_key
  end

  it 'delegates method_awesome to method_something' do
    test_renaming :method_awesome, :method_something
  end

  it 'also applies multiple renamings' do
    test_renaming :shoes_awesome, :key_something
  end

  it 'does not define a method for methods without renamings' do
    expect(subject).not_to respond_to :abcd
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
shoes-core-4.0.0.pre7 spec/shoes/renamed_delegate_spec.rb