How to test after_sign_in_path_for(resource)?

后端 未结 5 986
日久生厌
日久生厌 2020-12-09 10:07

I have devise authentication and registration set up on my Rails app. I\'m using after_sign_in_path_for() to customise the redirect when the user signs in based

5条回答
  •  我在风中等你
    2020-12-09 11:06

    On a similar note - if you want to test the redirect after sign-up, you have two options.

    First, you can follow a pattern similar to above and very directly test the method in RegistrationsController:

    require 'spec_helper'
    
    describe RegistrationsController do
    
      controller(RegistrationsController) do
        def after_sign_up_path_for(resource)
            super resource
        end
      end
    
      describe "After sign-up" do
        it "redirects to the /organizations/new page" do
            @user = FactoryGirl.build(:user)
            controller.after_sign_up_path_for(@user).should == new_organization_path
        end
      end
    end
    

    Or, you can take a more integration-testing sort of approach and do the following:

    require 'spec_helper'
    
    describe RegistrationsController do
    
      describe "After successfully completing the sign-up form" do
    
        before do
            @request.env["devise.mapping"] = Devise.mappings[:user]
        end
    
        it "redirects to the new organization page" do
            post :create, :user => {"name" => "Test User", "email" => "test@example.com", "password" => "please"}
            response.should redirect_to(new_organization_path)
        end
      end
    end
    

提交回复
热议问题