Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ## The relevant code
- module Attrist
- class ::Module
- alias_method :__public__, :public
- alias_method :__private__, :private
- alias_method :__protected__, :protected
- def public(*args)
- @__access__ = :public
- __public__(*args)
- end
- def private(*args)
- @__access__ = :private
- __private__(*args)
- end
- def protected(*args)
- @__access__ = :protected
- __protected__(*args)
- end
- end
- end
- ## The relevant specs
- require File.join( File.dirname(__FILE__), "..", "spec_helper" )
- require 'attrist'
- describe Attrist do
- before(:each) do
- module AttristSpecHelper; end
- class AttristSpecHelperClass
- include AttristSpecHelper
- end
- end
- describe '-', Module do
- describe '#private' do
- it "should allow access to the current access level" do
- module AttristSpecHelper
- private
- @__access__.should == :private
- end
- end
- it "shouldn't mess with normal functionality" do
- class AttristSpecHelperClass
- def a; end
- private :a
- private
- def b; end
- end
- @helper = AttristSpecHelperClass.new
- # pending('Doesn\'t let private work normally in the second case')
- lambda { @helper.a }.should raise_error(NoMethodError,
- /private method .a. called /)
- lambda { @helper.b }.should raise_error(NoMethodError,
- /private method .b. called /)
- end
- end
- describe '#protected' do
- it "should allow access to the current access level" do
- module AttristSpecHelper
- protected
- @__access__.should == :protected
- end
- end
- it "shouldn't mess with normal functionality" do
- class AttristSpecHelperClass
- def a; end
- protected :a
- protected
- def b; end
- end
- @helper = AttristSpecHelperClass.new
- # pending('Doesn\'t let protected work normally in the second case')
- lambda { @helper.a }.should raise_error(NoMethodError,
- /protected method .a. called /)
- lambda { @helper.b }.should raise_error(NoMethodError,
- /protected method .b. called /)
- end
- end
- describe '#public' do
- it "should allow access to the current access level" do
- module AttristSpecHelper
- private
- public
- @__access__.should == :public
- end
- end
- it "shouldn't mess with normal functionality" do
- class AttristSpecHelperClass
- private
- def a; end
- public :a
- private
- public
- def b; end
- end
- @helper = AttristSpecHelperClass.new
- lambda { @helper.a }.should_not raise_error
- lambda { @helper.b }.should_not raise_error
- end
- end
- end
- after(:each) do
- Object.send(:remove_const, :AttristSpecHelper)
- Object.send(:remove_const, :AttristSpecHelperClass)
- end
- end
Add Comment
Please, Sign In to add comment