diff --git a/spec/controllers/admin/base_controller_spec.rb b/spec/controllers/admin/base_controller_spec.rb index 6e78ccb3b1..d739b54644 100644 --- a/spec/controllers/admin/base_controller_spec.rb +++ b/spec/controllers/admin/base_controller_spec.rb @@ -3,40 +3,54 @@ require 'rails_helper' RSpec.describe Admin::BaseController do + render_views + controller do def success authorize :dashboard, :index? - render 'admin/reports/show' + render html: '

success

', layout: true end end - it 'requires administrator or moderator' do - routes.draw { get 'success' => 'admin/base#success' } - sign_in(Fabricate(:user)) - get :success + before { routes.draw { get 'success' => 'admin/base#success' } } - expect(response).to have_http_status(403) - end + context 'when signed in as regular user' do + before { sign_in Fabricate(:user) } - it 'returns private cache control headers' do - routes.draw { get 'success' => 'admin/base#success' } - sign_in(Fabricate(:moderator_user)) - get :success + it 'responds with unauthorized' do + get :success - expect(response.headers['Cache-Control']).to include('private, no-store') + expect(response).to have_http_status(403) + end end - it 'renders admin layout as a moderator' do - routes.draw { get 'success' => 'admin/base#success' } - sign_in(Fabricate(:moderator_user)) - get :success - expect(response).to render_template layout: 'admin' + context 'when signed in as moderator' do + before { sign_in Fabricate(:moderator_user) } + + it 'returns success with private headers and admin layout' do + get :success + + expect(response) + .to have_http_status(200) + expect(response.headers['Cache-Control']) + .to include('private, no-store') + expect(response.parsed_body) + .to have_css('body.admin') + end end - it 'renders admin layout as an admin' do - routes.draw { get 'success' => 'admin/base#success' } - sign_in(Fabricate(:admin_user)) - get :success - expect(response).to render_template layout: 'admin' + context 'when signed in as admin' do + before { sign_in Fabricate(:admin_user) } + + it 'returns success with private headers and admin layout' do + get :success + + expect(response) + .to have_http_status(200) + expect(response.headers['Cache-Control']) + .to include('private, no-store') + expect(response.parsed_body) + .to have_css('body.admin') + end end end