the new and create actions will now build the resource with attributes based on ability conditions hash - closes #114
This commit is contained in:
@@ -257,6 +257,14 @@ describe CanCan::Ability do
|
||||
@ability.can?(:read, 123 => Range).should be_true
|
||||
end
|
||||
|
||||
it "should have initial attributes based on hash conditions of 'new' action" do
|
||||
@ability.can :manage, Range, :foo => "foo", :hash => {:skip => "hashes"}
|
||||
@ability.can :create, Range, :bar => 123, :array => %w[skip arrays]
|
||||
@ability.can :new, Range, :baz => "baz", :range => 1..3
|
||||
@ability.cannot :new, Range, :ignore => "me"
|
||||
@ability.attributes_for(:new, Range).should == {:foo => "foo", :bar => 123, :baz => "baz"}
|
||||
end
|
||||
|
||||
describe "unauthorized message" do
|
||||
after(:each) do
|
||||
I18n.backend = nil
|
||||
|
||||
@@ -5,6 +5,7 @@ describe CanCan::ControllerResource do
|
||||
@params = HashWithIndifferentAccess.new(:controller => "abilities")
|
||||
@controller = Object.new # simple stub for now
|
||||
stub(@controller).params { @params }
|
||||
stub(@controller).current_ability.stub!.attributes_for { {} }
|
||||
end
|
||||
|
||||
it "should load the resource into an instance variable if params[:id] is specified" do
|
||||
@@ -47,12 +48,16 @@ describe CanCan::ControllerResource do
|
||||
@controller.instance_variable_get(:@ability).should == :some_resource
|
||||
end
|
||||
|
||||
it "should build a new resource with no arguments if attribute hash isn't specified" do
|
||||
it "should build a new resource with attributes from current ability" do
|
||||
@params[:controller] = "people"
|
||||
@params[:action] = "new"
|
||||
mock(Ability).new { :some_resource }
|
||||
person = Object.new
|
||||
mock(Person).new { person }
|
||||
mock(person).name = "foobar"
|
||||
stub(@controller).current_ability.stub!.attributes_for(:new, Person) { {:name => "foobar"} }
|
||||
resource = CanCan::ControllerResource.new(@controller)
|
||||
resource.load_resource
|
||||
@controller.instance_variable_get(:@ability).should == :some_resource
|
||||
@controller.instance_variable_get(:@person).should == person
|
||||
end
|
||||
|
||||
it "should not build a resource when on index action" do
|
||||
|
||||
Reference in New Issue
Block a user