rspec でコントローラーの仕様をテストするために、管理者にサインインしようとしています
ここで説明されている指示に従うために最善を尽くしましたが、admin
まだログインできないために何かを見逃したようで、コントローラーの仕様が失敗します
ここに私のコード
## spec/spec_helper.rb
RSpec.configure do |config|
config.include Devise::TestHelpers, :type => :controller
config.extend ControllerMacros, :type => :controller
end
## spec/support/controller_macros.rb
module ControllerMacros
def login_admin
before(:each) do
@request.env['devise.mapping'] = Devise.mappings[:admin]
admin = Admin.create(first_name: 'Admin',
last_name: 'User',
email: 'admin@poaster.me',
password: 'admin1234',
password_confirmation: 'admin1234',
active: true
)
admin.confirmed_at = Time.now
admin.confirm!
sign_in admin
## Did an idependent test over here using binding.pry not sure why
# binding.pry
# session => {"warden.user.admin.key"=>[[27], "$2a$04$6KicZPZUvYxOBiMadVyIqe"]}
# request['env'].warden.user => nil
# request['env'].warden.authenticated? => false
end
end
end
session
私のコントローラー仕様内に表示される出力
{"flash"=>
#<ActionDispatch::Flash::FlashHash:0x007f9bee570738
@closed=false,
@flashes={:alert=>"You have to confirm your account before continuing."},
@now=nil,
@used=#<Set: {}>>}
コントローラー仕様
## spec/controllers/users_controller_spec.rb
login_admin
describe UsersController do
context 'GET users/index' do
it 'render users index pages' do
get :index
#binding.pry
#session => {"flash"=> #<ActionDispatch::Flash::FlashHash:0x007f9bee570738 @closed=false,@flashes={:alert=>"You have to confirm your account before continuing."},@now=nil,@used=#<Set: {}>>}
expect(response).to render_template('index')
end
end
end
コントローラーコード
## app/controllers/users_controller.rb
class UsersController < ApplicationController
before_filter :authenticate_admin!
before_filter :require_admin?, :only => [:deactivate, :activate, :index]
def index
page = params[:page] || 1
@users = User.includes(:company).where(roles_mask: 1) params[:page])
@users = @users.page(page).per(10)
end
end