【发布时间】:2011-10-26 20:26:54
【问题描述】:
试图围绕 rspec 和适当的测试,并且很难正确地执行以下操作
假设我们有三个类
Class User
belongs_to :company
has_and_belongs_to_many :roles
end
Class Company
has_many :users
end
Class Role
has_and_belongs_to_many :users
end
在 User 类中,如果用户是第一个与公司关联的用户,我有 before_create 回调分配用户默认的“company_admin”角色
def check_for_initial_company_admin_role
if self.company.users.count == 0
self.roles << Role.find_by_name("company_admin")
end
end
如果用户是与公司关联的第一个用户,如何在我的模型规范中正确测试该用户被分配了“company_admin”角色?
更新 解决方案
describe "#check_for_initial_company_admin_role" do
it "sets the first user created to be the administrator" do
Factory(:role)
user = Factory(:user)
user.roles.count.should be > 0
user.roles.should include Role.find_by_name("company_admin")
end
end
Factory.define :user do |f|
f.email { Factory.next(:email) }
f.password "secret"
f.password_confirmation "secret"
f.association :company
end
Factory.define :role do |f|
f.name "company_admin"
end
Factory.define :company do |f|
f.name "foobar"
f.vat_id "1234"
end
【问题讨论】:
标签: ruby-on-rails rspec