、、およびモデルUser
があります。ユーザーは単独で存在できます。アカウントは、ロールを通じてユーザーに関連付ける必要があります。アカウントには、「所有者」タイプのロール レコードが少なくとも 1 つ必要です。RSpec と FactoryGirl でこれをテストする方法がわかりません。Account
Role
# user_id, account_id, role
Role < ActiveRecord::Base
belongs_to :user
belongs_to :account
end
User < ActiveRecord::Base
has_many :roles
has_many :accounts, through: roles
accepts_nested_properties_for :accounts
end
Account < ActiveRecord::Base
has_many :roles
has_many :users, through: roles
end
ユーザーがサインインしていない場合、Accounts.new はユーザー フォームとアカウント フォームを表示します。ユーザーがサインインしている場合、アカウント フォームのみが表示されます。問題は、関連付けをテストしようとするときに、RSpec で Role と Account がどのように表示されるかがわからないことです。
このテストは失敗します (配列は空に戻ります)。
describe Account do
let(:user) { FactoryGirl.create(:user) }
before { @account = user.accounts.build(title: "ACME Corporation", subdomain: "acme") }
subject { @account }
it { should respond_to(:users) }
its(:users) { should include(user) }
次に、ユーザーがサインインしている場合とそうでない場合のテストがさらに複雑になります。同様のユースケースで参照できるサンプルコードはありますか? また、roles_spec で何をテストすればよいのか、accounts_spec/user_spec に何が属しているのかもわかりません。
工場:
FactoryGirl.define do
factory :user do
name "Mickey Mouse"
email "mickey@disney.com"
password "m1ckey"
password_confirmation "m1ckey"
end
factory :account do
title "ACME Corporation"
subdomain "acme"
end
factory :role do
user
account
end
end