Я новичок в тестировании и использую мини-тест.В качестве примера у меня есть действие контроллера, которое будет авторизовано в зависимости от того, имеет ли пользователь право доступа к действию.
Таким образом, я выполняю одни и те же утверждения для одного и того же действия для 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