photomix/spec/models/role_membership_spec.rb

100 lines
3.1 KiB
Ruby

require File.dirname(__FILE__) + '/../spec_helper'
describe "RoleMembership" do
describe "validations" do
before(:all) do
@roles = []
@roles[0] = Role.new(:name => "role0")
@roles[1] = Role.new(:name => "role1")
@roles[2] = Role.new(:name => "role2")
@roles[3] = Role.new(:name => "role3")
@roles[4] = Role.new(:name => "role4")
@roles[5] = Role.new(:name => "role5")
@roles[6] = Role.new(:name => "role6")
@roles[7] = Role.new(:name => "role7")
@roles[8] = Role.new(:name => "role8")
@roles[9] = Role.new(:name => "role9")
@roles[10] = Role.new(:name => "role10")
@roles[11] = Role.new(:name => "role11")
@roles.each {|role| role.save!}
end
before(:each) do
@membership = RoleMembership.new(:roleable_id => @roles[0].id, :roleable_type => "Role", :role_id => @roles[1].id)
end
it "should be valid" do
@membership.should be_valid
end
# roleable_id
it "should have a roleable_id" do
@membership.roleable_id = nil
@membership.should_not be_valid
end
it "roleable_id should be an integer" do
@membership.roleable_id = "asd"
@membership.should_not be_valid
end
# roleable_type
it "should have a roleable_type" do
@membership.roleable_type = nil
@membership.should_not be_valid
end
it "roleable_type should be a string" do
@membership.roleable_type = 123
@membership.should_not be_valid
end
it "roleable_type should have a class name format" do
@membership.roleable_type = "asd"
@membership.should_not be_valid
@membership.roleable_type = "User"
@membership.should be_valid
@membership.roleable_type = "Some95WierdClassN4m3"
@membership.should be_valid
end
# role_id
it "should have a role_id" do
@membership.role_id = nil
@membership.should_not be_valid
end
it "role_id should be an integer" do
@membership.role_id = "asd"
@membership.should_not be_valid
end
it "should not allow a role to belong to itself" do
@membership.role_id = @roles[0].id
@membership.should_not be_valid
end
# roles cannot belong to each other in a loop
it "should not a allow a role to belong to a role which belongs to it in a loop" do
@roles[0].roles << @roles[1]
@roles[1].roles << @roles[2]
@roles[2].roles << @roles[3]
@roles[2].roles << @roles[4]
@roles[2].roles << @roles[5]
@roles[3].roles << @roles[6]
@roles[1].roles << @roles[7]
@roles[3].roles << @roles[8]
@roles[4].roles << @roles[9]
@roles[4].roles << @roles[10]
@roles[5].roles << @roles[11]
@membership3 = RoleMembership.new(:roleable_id => @roles[11].id, :roleable_type => "Role", :role_id => @roles[0].id)
@membership3.should_not be_valid
@membership3.errors.full_messages.should include("A role cannot belong to a role which belongs to it.")
end
after(:all) do
@roles.each {|role| role.destroy}
end
end
end