Sha256: 2f1a4b0a61c1a080db9991452edcaf3989656e2eefcf9e37cc78d9a491eaf5fd

Contents?: true

Size: 1.62 KB

Versions: 1

Compression:

Stored size: 1.62 KB

Contents

require File.expand_path(File.dirname(__FILE__) + '/spec_helper')

describe Advice do
  context '#before_advice' do
    before do
      @class = Class.new do
        extend Advice
        attr_accessor :closed_over
        define_method :silly do
          self.closed_over ||= 1
          self.closed_over += 5
        end
        define_method :checkin do
          self.closed_over ||= 1
          self.closed_over *= 2
        end
        before_advice :silly, :checkin
      end
    end

    it 'causes the advised method to run the suggested advice before running' do
      @class.new.silly.should == 7
    end
  end

  context '#after_advice' do
    before do
      @class = Class.new do
        extend Advice
        attr_accessor :closed_over
        define_method :silly do
          self.closed_over ||= 1
          self.closed_over += 5
        end
        define_method :checkout do
          self.closed_over ||= 1
          self.closed_over *= 2
        end
        after_advice :silly, :checkout
      end
    end

    it 'causes the advised method to run the suggested advice after running' do
      object = @class.new
      object.silly
      object.closed_over.should == 12
    end
  end

  context '#argument_advice' do
    before do
      @class = Class.new do
        extend Advice
        attr_accessor :closed_over
        define_method :silly do |arg|
          arg + 5
        end
        define_method :twiddle do |arg|
          arg * 2
        end
        argument_advice :silly, :twiddle
      end
    end

    it 'causes the advised method to run, rewriting the arguments' do
      @class.new.silly(1).should == 7
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
wool-0.5.1 spec/advice_specs/advice_spec.rb