24 lines
740 B
Ruby
24 lines
740 B
Ruby
|
# encoding: utf-8
|
||
|
|
||
|
shared_examples 'it calls super' do |method|
|
||
|
around do |example|
|
||
|
# Restore original method after each example
|
||
|
original = "original_#{method}"
|
||
|
superclass.class_eval do
|
||
|
alias_method original, method
|
||
|
example.call
|
||
|
undef_method method
|
||
|
alias_method method, original
|
||
|
end
|
||
|
end
|
||
|
|
||
|
it "delegates to the superclass ##{method} method" do
|
||
|
# This is the most succinct approach I could think of to test whether the
|
||
|
# superclass method is called. All of the built-in rspec helpers did not
|
||
|
# seem to work for this.
|
||
|
called = false
|
||
|
superclass.class_eval { define_method(method) { |_| called = true } }
|
||
|
expect { subject }.to change { called }.from(false).to(true)
|
||
|
end
|
||
|
end
|