moving class dependency inline in specs
This commit is contained in:
		
							parent
							
								
									0b8b51b4fc
								
							
						
					
					
						commit
						d5f6e0570c
					
				@ -1,37 +1,14 @@
 | 
				
			|||||||
require File.dirname(__FILE__) + '/../spec_helper'
 | 
					require File.dirname(__FILE__) + '/../spec_helper'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class Ability
 | 
					describe CanCan::Ability do
 | 
				
			||||||
  include CanCan::Ability
 | 
					 | 
				
			||||||
  alias_action :update, :destroy, :to => :modify
 | 
					 | 
				
			||||||
  
 | 
					 | 
				
			||||||
  can :read, :all
 | 
					 | 
				
			||||||
  can :read, Symbol do |sym|
 | 
					 | 
				
			||||||
    sym
 | 
					 | 
				
			||||||
  end
 | 
					 | 
				
			||||||
  can :preview, :all do |object_class, object|
 | 
					 | 
				
			||||||
    [object_class, object]
 | 
					 | 
				
			||||||
  end
 | 
					 | 
				
			||||||
  can :manage, Array do |action, object|
 | 
					 | 
				
			||||||
    [action, object]
 | 
					 | 
				
			||||||
  end
 | 
					 | 
				
			||||||
  can :modify, :all do |object_class, object|
 | 
					 | 
				
			||||||
    :modify_called
 | 
					 | 
				
			||||||
  end
 | 
					 | 
				
			||||||
end
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
class AdminAbility
 | 
					 | 
				
			||||||
  include CanCan::Ability
 | 
					 | 
				
			||||||
  can :manage, :all do |action, object_class, object|
 | 
					 | 
				
			||||||
    [action, object_class, object]
 | 
					 | 
				
			||||||
  end
 | 
					 | 
				
			||||||
end
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
describe Ability do
 | 
					 | 
				
			||||||
  before(:each) do
 | 
					  before(:each) do
 | 
				
			||||||
    @ability = Ability.new
 | 
					    @ability_class = Class.new
 | 
				
			||||||
 | 
					    @ability_class.send(:include, CanCan::Ability)
 | 
				
			||||||
 | 
					    @ability = @ability_class.new
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
  it "should be able to :read anything" do
 | 
					  it "should be able to :read anything" do
 | 
				
			||||||
 | 
					    @ability_class.can :read, :all
 | 
				
			||||||
    @ability.can?(:read, String).should be_true
 | 
					    @ability.can?(:read, String).should be_true
 | 
				
			||||||
    @ability.can?(:read, 123).should be_true
 | 
					    @ability.can?(:read, 123).should be_true
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
@ -41,32 +18,48 @@ describe Ability do
 | 
				
			|||||||
  end
 | 
					  end
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
  it "should return what block returns on a can call" do
 | 
					  it "should return what block returns on a can call" do
 | 
				
			||||||
 | 
					    @ability_class.can :read, Symbol do |sym|
 | 
				
			||||||
 | 
					      sym
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
    @ability.can?(:read, Symbol).should be_nil
 | 
					    @ability.can?(:read, Symbol).should be_nil
 | 
				
			||||||
    @ability.can?(:read, :some_symbol).should == :some_symbol
 | 
					    @ability.can?(:read, :some_symbol).should == :some_symbol
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
  it "should pass class with object if :all objects are accepted" do
 | 
					  it "should pass class with object if :all objects are accepted" do
 | 
				
			||||||
 | 
					    @ability_class.can :preview, :all do |object_class, object|
 | 
				
			||||||
 | 
					      [object_class, object]
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
    @ability.can?(:preview, 123).should == [Fixnum, 123]
 | 
					    @ability.can?(:preview, 123).should == [Fixnum, 123]
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
  it "should pass class with no object if :all objects are accepted and class is passed directly" do
 | 
					  it "should pass class with no object if :all objects are accepted and class is passed directly" do
 | 
				
			||||||
 | 
					    @ability_class.can :preview, :all do |object_class, object|
 | 
				
			||||||
 | 
					      [object_class, object]
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
    @ability.can?(:preview, Hash).should == [Hash, nil]
 | 
					    @ability.can?(:preview, Hash).should == [Hash, nil]
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
  it "should pass action and object for global manage actions" do
 | 
					  it "should pass action and object for global manage actions" do
 | 
				
			||||||
 | 
					    @ability_class.can :manage, Array do |action, object|
 | 
				
			||||||
 | 
					      [action, object]
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
    @ability.can?(:stuff, [1, 2]).should == [:stuff, [1, 2]]
 | 
					    @ability.can?(:stuff, [1, 2]).should == [:stuff, [1, 2]]
 | 
				
			||||||
    @ability.can?(:stuff, Array).should == [:stuff, nil]
 | 
					    @ability.can?(:stuff, Array).should == [:stuff, nil]
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
  it "should alias update or destroy actions to modify action" do
 | 
					  it "should alias update or destroy actions to modify action" do
 | 
				
			||||||
 | 
					    @ability_class.alias_action :update, :destroy, :to => :modify
 | 
				
			||||||
 | 
					    @ability_class.can :modify, :all do |object_class, object|
 | 
				
			||||||
 | 
					      :modify_called
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
    @ability.can?(:update, 123).should == :modify_called
 | 
					    @ability.can?(:update, 123).should == :modify_called
 | 
				
			||||||
    @ability.can?(:destroy, 123).should == :modify_called
 | 
					    @ability.can?(:destroy, 123).should == :modify_called
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
end
 | 
					 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
describe AdminAbility do
 | 
					 | 
				
			||||||
  it "should return block result for action, object_class, and object for any action" do
 | 
					  it "should return block result for action, object_class, and object for any action" do
 | 
				
			||||||
    @ability = AdminAbility.new
 | 
					    @ability_class.can :manage, :all do |action, object_class, object|
 | 
				
			||||||
 | 
					      [action, object_class, object]
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
    @ability.can?(:foo, 123).should == [:foo, Fixnum, 123]
 | 
					    @ability.can?(:foo, 123).should == [:foo, Fixnum, 123]
 | 
				
			||||||
    @ability.can?(:bar, Fixnum).should == [:bar, Fixnum, nil]
 | 
					    @ability.can?(:bar, Fixnum).should == [:bar, Fixnum, nil]
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user