如何使用参数测试创建操作的cancan功能?

时间:2011-08-09 11:49:34

标签: ruby rspec cancan

我的能力就是这个:

def initialize(user)
  partner_id ||= user.partner.id
  can :create, Employee, :partner_id => partner_id

这是在前面的块中:

before(:each) do
  @employee = Factory :employee, role: "manager"
  @partner = @employee.partner
  @some_other_partner = Factory :partner
  @subject = EmployeeAbility.new( @employee )
end

我的正面规范是这个(这个通过):

it { @subject.should be_able_to(:create, Employee, partner_id: @partner.id ) }

我的负面规格是这个(这个失败了):

it { @subject.should_not be_able_to(:create, Employee, partner_id: @some_other_partner.id ) }

我应该如何声明这种能力,以便我可以测试所创建的员工属于某个特定合作伙伴而不属于其他合作伙伴?

1 个答案:

答案 0 :(得分:1)

您可以使用类的实例而不是类本身来检查某项功能:

can? :create, Employee.new(:partner_id => 3)