[Rails 5] Jak testować działania zalogowanego użytkownika?

W aplikacji, którą piszę tylko zalogowani użytkownicy będą mogli działać. W jaki sposób napisać testy kontrolerów? Chciałbym uzyskać coś takiego:

require 'test_helper'

class UsersControllerTest < ActionDispatch::IntegrationTest
  setup do
    @root = users(:root)
  end

  test "root should get users" do
    login_as @root
    get users_url
    # assert_equal current_user, @root
    assert_response :success
  end
end

W jaki sposób wywoływać helpery kontorlera - tutaj #current_user ?

Korzystasz z Devise’a? Jeśli tak - https://github.com/plataformatec/devise/wiki/How-To:-Test-controllers-with-Rails-3-and-4-(and-RSpec)

1 Like

Nie korzystam z Devise. Zresztą pytanie jest bardziej ogólne.

To skąd mamy wiedzieć jak zastubować zalogowanego usera, skoro Twój kod jest autorski?

jeśli masz gdzieś w application_helper.rb mniej więcej taką metodę:

def current_user?(user)
user == current_user
end
i zdefiniowanego użytkownika “:root”, w fixtures
to Twój “assert_equal current_user, @root” powinien działać