これは私が Refinery 1.0.9 で行っている方法です。Refinery 2 では微調整が必要になる場合があります。
「controller_macros.rb」という名前のファイルを作成し、spec/support/refinery/ の下に配置します。
controller_macros.rb で login_refinery_user を定義します
module Refinery
module ControllerMacros
def login_refinery_user
before (:each) do
@refinery_user = Factory(:refinery_user)
@request.env["devise.mapping"] = Devise.mappings[:admin]
sign_in @refinery_user
end
end
end
end
factory.rb ファイルに、次の 2 つのファクトリがあることを確認してください。
factory :user do
sequence(:username) { |n| "person#{n}" }
sequence(:email) { |n| "person#{n}@cucumber.com" }
password "greenandjuicy"
password_confirmation "greenandjuicy"
end
factory :refinery_user, :parent => :user do
roles { [ Role[:refinery] ] }
after_create do |user|
Refinery::Plugins.registered.each_with_index do |plugin, index|
user.plugins.create(:name => plugin.name, :position => index)
end
end
end
spec_helper.rb ファイルで、コントローラー マクロ モジュールをコントローラー テストにインクルードし、Devise テスト ヘルパーがあることを確認します。
RSpec.configure do |config|
config.include ::Devise::TestHelpers, :type => :controller
config.extend ::Refinery::ControllerMacros, :type => :controller
end