2017-10-24 6 views
0

은 내가 RSpec을 사용하여 테스트하고자하는 사용자 정의 AutorizationAdapter 있습니다 activeadmin AuthorizationAdapter를 테스트하는 방법은 무엇입니까?

class AdminAuthorization < ActiveAdmin::AuthorizationAdapter 
    def authorized?(_action, _subject = nil) 
    user.admin? 
    end 
end 

가 처음에 나는 사용자 정의 메소드를 사용을하지만 사용자 정의를 사용하여 고안를 사용하고 있기 때문에 AuthorizationAdapter 갈 방법이있을 것 같았다.

어떻게 테스트 해 보시겠습니까?

require 'rails_helper' 

RSpec.describe 'AdminUsers', type: :request do 
    describe 'GET /admin_users' do 

    context 'admin' do 
     let(:admin_user) { create(:admin_user) } 
     before { sign_in super_user } 
     get admin_users_path 
     expect(response).to have_http_status(200) 
    end 

    context 'non admin' do 
     let(:user) { create(:user) } 
     before { sign_in user } 
     it 'redirects to the login page' do 
     get admin_users_path 
     expect(response).to have_http_status(302) 
     expect(response).to redirected_to '/admin/login' 
     end 
    end 

    context 'non logged in user' do 
     it 'redirects to the login page' do 
     get admin_users_path 
     expect(response).to have_http_status(302) 
     expect(response).to redirected_to '/admin/login' 
     end 
    end 
    end 
end 

나는이 길을 가야하는 것입니다 확실하지 않다 : 나는 그런 상태 코드 & 리디렉션, 뭔가 컨트롤러 및 테스트 중 하나에 대한 요구 사양을 만드는 것입니다 테스트하는 한 가지 방법을 문질러서.

답변

0

이 광고는 저에게 이상적입니다. ActiveAdmin 테스트 스위트에있는 유닛 및 기능 스펙을 볼 수도 있습니다. 그러나 AuthorizationAdapter 자체는 PORO이므로 단위 테스트를 개별적으로 수행 할 수 있어야합니다. 위에 제공된 예제에서는 상당히 간단한 테스트입니다.