From d50220ec2a58b18cfe273fa511c296c2059d2f69 Mon Sep 17 00:00:00 2001 From: James McKinney Date: Thu, 5 Jul 2012 10:35:20 -0400 Subject: [PATCH] @_cancan_skipper should be inherited: add failing test --- spec/cancan/controller_additions_spec.rb | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/spec/cancan/controller_additions_spec.rb b/spec/cancan/controller_additions_spec.rb index cb8af3f1..2da66a81 100644 --- a/spec/cancan/controller_additions_spec.rb +++ b/spec/cancan/controller_additions_spec.rb @@ -134,4 +134,25 @@ @controller_class.cancan_skipper[:load][:project].should == {:only => [:index, :show]} @controller_class.cancan_skipper[:authorize][:project].should == {:only => [:index, :show]} end + + describe "when inheriting" do + before(:each) do + @super_controller_class = Class.new + @super_controller = @super_controller_class.new + mock(@super_controller_class).helper_method(:can?, :cannot?, :current_ability) + @super_controller_class.send(:include, CanCan::ControllerAdditions) + @super_controller_class.send(:skip_load_and_authorize_resource, :only => [:index, :show]) + + @sub_controller_class = Class.new(@super_controller_class) + @sub_controller = @sub_controller_class.new + end + + it "sub_classes should skip the same behaviors and actions as super_classes" do + @super_controller_class.cancan_skipper[:load][nil].should == {:only => [:index, :show]} + @super_controller_class.cancan_skipper[:authorize][nil].should == {:only => [:index, :show]} + + @sub_controller_class.cancan_skipper[:load][nil].should == {:only => [:index, :show]} + @sub_controller_class.cancan_skipper[:authorize][nil].should == {:only => [:index, :show]} + end + end end