Я создал свою систему аутентификации на основе Rails Tutorial Hartl и у меня проблемы с проверками контроллера.Rails custom auth не регистрирует пользователя sign_in в тестах контроллера
engagements_controller_spec.rb
require 'spec_helper'
describe EngagementsController do
describe "GET show" do
let(:user) { FactoryGirl.create(:user) }
before { sign_in user }
it "assigns requested engagement to @engagement" do
engagement = FactoryGirl.create(:engagement, user: user)
get :show, id: engagement
assigns[:engagement].should eq(engagement)
end
it "renders :show" do
engagement = FactoryGirl.create(:engagement, user: user)
get :show, :id => engagement.id
expect(response).to render_template("show")
end
end
end
Ошибки я получаю:
EngagementsController GET show renders :show
Failure/Error: expect(response).to render_template("show")
expecting <"show"> but rendering with <[]>
# ./spec/controllers/engagements_controller_spec.rb:37:in `block (3 levels) in < top (required)>'
EngagementsController GET show assigns requested engagement to @engagement
Failure/Error: assigns[:engagement].should eq(engagement)
expected: #<Engagement id: 42, title: "Coding", content: "Got in the zone with coding", user_id: 46, created_at: "2014-08-28 21:08:43", updated_at: "2014-08-28 21:08:43", photo_file_name: nil, photo_content_type: nil, photo_file_size: nil, photo_updated_at: nil>
got: nil
(compared using ==)
# ./spec/controllers/engagements_controller_spec.rb:31:in `block (3 levels) in < top (required)>'
engagements_controller.rb
class EngagementsController < ApplicationController
before_action :signed_in_user
before_action :correct_user, only: [:show]
def show
@engagement = Engagement.find(params[:id])
end
private
def correct_user
@engagement = current_user.engagements.find_by_id(params[:id])
if @engagement.nil? && !current_user.try(:admin)
redirect_to root_url
end
end
Я пробовал каждый ответ, который я мог найти без везения. Любая помощь будет высоко оценена!
Спасибо за изменения, @zishe. Это был мой первый пост на SO, но я буду уверен, что это не повторится. :) – rgpass