rico_mac
rico_mac

Reputation: 888

testing a redirect in rspec and devise

i want to to write a controler test to check that on a successful sign in, a user is redirected to a certain page. the current test I have at the moment is returning a 200.

require 'rails_helper'
RSpec.describe Admin::EntriesController, :type => :controller do

setup_factories
    describe "after login" do 
        it "should redirect to pending after logged in" do
            sign_in admin
        expect(response).to redirect_to('admin/entries/pending') 
        end
    end

end

which returns

   Failure/Error: expect(response).to redirect_to('admin/entries/pending')
       Expected response to be a <redirect>, but was <200>

the relevant controller

class AdminController < Devise::RegistrationsController

  before_filter :authenticate_admin!

  protected 

  def after_sign_in_path_for(admin)
    pending_admin_entries_path
  end

end

am I attempting this is in the right way, where am i going wrong?

thanks

Upvotes: 2

Views: 2070

Answers (1)

qcam
qcam

Reputation: 167

sign_in user in RSpec doesn't make a request so you cannot test the redirection.

For after_sign_in_path, you can test like this:

it 'redirects user to pending admin entries path' do    
  expect(controller.after_sign_in_path(user)).to eq pending_admin_entries_path
end

Upvotes: 2

Related Questions