Как проверить after_sign_in_path_for с помощью minitest - PullRequest
2 голосов
/ 14 марта 2019

Я изменил стандартное поведение after_sign_in_path_for метода следующим образом:

class ApplicationController < ActionController::Base
  private
  def after_sign_in_path_for(resource)
    return admin_root_path if resource.is_a?(AdminUser)
    request.referrer || root_path
  end
end

Это работает найти, и теперь я хочу проверить его по minitest. Но я не мог понять, как написать интеграционный тест для него.

Хотя есть ответ для rspec, я не могу переписать для minitest.

Как проверить after_sign_in_path_for (ресурс)?

Как мне написать тест для after_sign_in_path_for по minitest?

Рельсы: 5.1 разработка: 4.5.0

require 'test_helper'

class ApplicationControllerTest < ActionDispatch::IntegrationTest
  include Devise::Test::IntegrationHelpers
  setup do
    2.times{ create(:post) }
    @user = create(:user)
    @admin_user = create(:admin_user)
  end

  test "should redirect to '/posts/1' after login" do
    # get "/posts/1"
    # sign_in(@user)
    # test return back "/posts/1"
  end

  test "should redirect to '/posts/2' after login" do
    # get "/posts/2"
    # sign_in(@user)
    # test return back "/posts/2"
  end

  test "should redirect to admin root page after login" do
    # sign_in(@adminuser)
    # test go to admin root page
  end
end

1 Ответ

0 голосов
/ 21 марта 2019

Вы можете проверить их следующим образом:

require 'test_helper'

class ApplicationControllerTest < ActionDispatch::IntegrationTest
  include Devise::Test::IntegrationHelpers
  setup do
    @user = create(:user)
    @admin_user = create(:admin_user)
  end

  test "should redirect to current page after login" do
    sign_in(@user)
    get :index
    assert_redirected_to controller: "home", action: "index"
  end

  test "should redirect to admin root page after login" do
    sign_in(@adminuser)
    get :index
    assert_redirected_to controller: "admin", action: "index"
  end
end

assert_redirected_to API документы

...