Rails 5.2 мини-тест рефакторинга тестовых контроллеров - PullRequest
0 голосов
/ 13 ноября 2018

Я новичок в тестировании и использую мини-тест.В качестве примера у меня есть действие контроллера, которое будет авторизовано в зависимости от того, имеет ли пользователь право доступа к действию.

Таким образом, я выполняю одни и те же утверждения для одного и того же действия для 4 разных типов пользователей.Я уверен, что это может быть реорганизовано, но не уверен, как аналогичные утверждения будут также сделаны на контроллерах

require 'test_helper'
class ResourcesControllerTest < ActionDispatch::IntegrationTest
    include Devise::Test::IntegrationHelpers

    setup do
        @recording = recordings(:first_event_rec_1)
        @user= users(:non_admin)
    end

    test "request index not signed in" do
        #@user.centre= centres(:wales)
        get recording_resources_url(recording_id: @recording.id), xhr: true
        assert_redirected_to new_user_session_url(format: 'js')

    end

    test "request index by non admin" do
        sign_in @user
        @user.centre= centres(:wales)
        get recording_resources_url(recording_id: @recording.id), xhr: true
        assert_response :forbidden
        assert_equal "app cont You don't have access to this resource.<BR> Are you logged into your admin sections?", flash[:error]
    end

    ################################################################################################################################
    ################################################################################################################################

    test "request index by full welsh admin but signed into german admin centre" do
        @user= users(:welsh_admin)
        @user.centre= centres(:germany)
        sign_in @user
        get recording_resources_url(recording_id: @recording.id), xhr: true
        assert_response :forbidden
        assert_equal "app cont You don't have access to this resource.<BR> Are you logged into your admin sections?", flash[:error]
    end

    test "request index by full welsh admin" do
        @user= users(:welsh_admin)
        @user.centre= centres(:wales)
        sign_in @user
        get recording_resources_url(recording_id: @recording.id), xhr: true
        assert_response :success
    end

    test "request index by full welsh admin without public role" do
        @user= users(:welsh_admin)
        @user.centre= centres(:wales)
        sign_in @user
        @user.assignments.where(centre_id:2, role_id: 3).destroy_all
        get recording_resources_url(recording_id: @recording.id), xhr: true
        assert_response :forbidden
        assert_equal "app cont You don't have access to this resource.<BR> Are you logged into your admin sections?", flash[:error]
    end
    #######################################################################################################################
    #######################################################################################################################

    test "request index by full german admin but signed into welsh admin centre " do
        @user= users(:german_admin)
        @user.centre= centres(:wales)
        sign_in @user
        get recording_resources_url(recording_id: @recording.id), xhr: true
        assert_response :forbidden
        assert_equal "app cont You don't have access to this resource.<BR> Are you logged into your admin sections?", flash[:error]
    end
end
...