Add test for every action of admin panel

This commit is contained in:
riggraz
2019-08-29 12:11:18 +02:00
parent fdcb942e78
commit 4cb60cf2ed
9 changed files with 444 additions and 70 deletions

View File

@@ -0,0 +1,148 @@
require 'rails_helper'
RSpec.describe 'requests to boards in the admin panel', :admin_panel, type: :request do
let(:user) { FactoryBot.create(:user) }
let(:moderator) { FactoryBot.create(:moderator) }
let(:admin) { FactoryBot.create(:admin) }
let(:board) { FactoryBot.create(:board) }
context 'when user is not logged in' do
it 'redirects index action' do
get admin_boards_path
expect(response).to redirect_to(new_user_session_path)
end
it 'redirects show action' do
get admin_board_path(board)
expect(response).to redirect_to(new_user_session_path)
end
it 'redirects new action' do
get new_admin_board_path
expect(response).to redirect_to(new_user_session_path)
end
it 'redirects edit action' do
get edit_admin_board_path(board)
expect(response).to redirect_to(new_user_session_path)
end
it 'redirects create action' do
post admin_boards_path, params: { board: { name: board.name + 'a' } }
expect(response).to redirect_to(new_user_session_path)
end
it 'redirects update action' do
patch admin_board_path(board), params: { board: { name: board.name + 'a' } }
expect(response).to redirect_to(new_user_session_path)
end
it 'redirects destroy action' do
delete admin_board_path(board)
expect(response).to redirect_to(new_user_session_path)
end
end
context 'when user has role "user"' do
before(:each) do
user.confirm
sign_in user
end
it 'redirects index action' do
get admin_boards_path
expect(response).to redirect_to(root_path)
end
it 'redirects show action' do
get admin_board_path(board)
expect(response).to redirect_to(root_path)
end
it 'redirects new action' do
get new_admin_board_path
expect(response).to redirect_to(root_path)
end
it 'redirects edit action' do
get edit_admin_board_path(board)
expect(response).to redirect_to(root_path)
end
it 'redirects create action' do
post admin_boards_path, params: { board: { name: board.name + 'a' } }
expect(response).to redirect_to(root_path)
end
it 'redirects update action' do
patch admin_board_path(board), params: { board: { name: board.name + 'a' } }
expect(response).to redirect_to(root_path)
end
it 'redirects destroy action' do
delete admin_board_path(board)
expect(response).to redirect_to(root_path)
end
end
context 'when user has role "moderator"' do
before(:each) do
moderator.confirm
sign_in moderator
end
it 'fulfills index action' do
get admin_boards_path
expect(response).to have_http_status(:success)
end
it 'fulfills show action' do
get admin_board_path(board)
expect(response).to have_http_status(:success)
end
it 'fulfills new action' do
get new_admin_board_path
expect(response).to have_http_status(:success)
end
it 'fulfills edit action' do
get edit_admin_board_path(board)
expect(response).to have_http_status(:success)
end
it 'fulfills create action' do
post admin_boards_path, params: { board: { name: board.name + 'a' } }
expect(response).to redirect_to(admin_board_path(board.id + 1))
end
it 'fulfills update action' do
patch admin_board_path(board), params: { board: { name: board.name + 'a' } }
expect(response).to redirect_to(admin_board_path(board))
end
it 'fulfills destroy action' do
delete admin_board_path(board)
expect(response).to redirect_to(admin_root_path)
end
end
context 'when user has role "admin"' do
before(:each) do
admin.confirm
sign_in admin
end
it 'fulfills index action' do
get admin_boards_path
expect(response).to have_http_status(:success)
end
it 'fulfills show action' do
get admin_board_path(board)
expect(response).to have_http_status(:success)
end
it 'fulfills new action' do
get new_admin_board_path
expect(response).to have_http_status(:success)
end
it 'fulfills edit action' do
get edit_admin_board_path(board)
expect(response).to have_http_status(:success)
end
it 'fulfills create action' do
post admin_boards_path, params: { board: { name: board.name + 'a' } }
expect(response).to redirect_to(admin_board_path(board.id + 1))
end
it 'fulfills update action' do
patch admin_board_path(board), params: { board: { name: board.name + 'a' } }
expect(response).to redirect_to(admin_board_path(board))
end
it 'fulfills destroy action' do
delete admin_board_path(board)
expect(response).to redirect_to(admin_root_path)
end
end
end

View File

@@ -0,0 +1,148 @@
require 'rails_helper'
RSpec.describe 'requests to post statuses in the admin panel', :admin_panel, type: :request do
let(:user) { FactoryBot.create(:user) }
let(:moderator) { FactoryBot.create(:moderator) }
let(:admin) { FactoryBot.create(:admin) }
let(:post_status) { FactoryBot.create(:post_status) }
context 'when user is not logged in' do
it 'redirects index action' do
get admin_post_statuses_path
expect(response).to redirect_to(new_user_session_path)
end
it 'redirects show action' do
get admin_post_status_path(post_status)
expect(response).to redirect_to(new_user_session_path)
end
it 'redirects new action' do
get new_admin_post_status_path
expect(response).to redirect_to(new_user_session_path)
end
it 'redirects edit action' do
get edit_admin_post_status_path(post_status)
expect(response).to redirect_to(new_user_session_path)
end
it 'redirects create action' do
post admin_post_statuses_path, params: { post_status: { name: post_status.name + 'a' } }
expect(response).to redirect_to(new_user_session_path)
end
it 'redirects update action' do
patch admin_post_status_path(post_status), params: { post_status: { name: post_status.name + 'a' } }
expect(response).to redirect_to(new_user_session_path)
end
it 'redirects destroy action' do
delete admin_post_status_path(post_status)
expect(response).to redirect_to(new_user_session_path)
end
end
context 'when user has role "user"' do
before(:each) do
user.confirm
sign_in user
end
it 'redirects index action' do
get admin_post_statuses_path
expect(response).to redirect_to(root_path)
end
it 'redirects show action' do
get admin_post_status_path(post_status)
expect(response).to redirect_to(root_path)
end
it 'redirects new action' do
get new_admin_post_status_path
expect(response).to redirect_to(root_path)
end
it 'redirects edit action' do
get edit_admin_post_status_path(post_status)
expect(response).to redirect_to(root_path)
end
it 'redirects create action' do
post admin_post_statuses_path, params: { post_status: { name: post_status.name + 'a' } }
expect(response).to redirect_to(root_path)
end
it 'redirects update action' do
patch admin_post_status_path(post_status), params: { post_status: { name: post_status.name + 'a' } }
expect(response).to redirect_to(root_path)
end
it 'redirects destroy action' do
delete admin_post_status_path(post_status)
expect(response).to redirect_to(root_path)
end
end
context 'when user has role "moderator"' do
before(:each) do
moderator.confirm
sign_in moderator
end
it 'fulfills index action' do
get admin_post_statuses_path
expect(response).to have_http_status(:success)
end
it 'fulfills show action' do
get admin_post_status_path(post_status)
expect(response).to have_http_status(:success)
end
it 'fulfills new action' do
get new_admin_post_status_path
expect(response).to have_http_status(:success)
end
it 'fulfills edit action' do
get edit_admin_post_status_path(post_status)
expect(response).to have_http_status(:success)
end
it 'fulfills create action' do
post admin_post_statuses_path, params: { post_status: { name: post_status.name + 'a', color: post_status.color } }
expect(response).to redirect_to(admin_post_status_path(post_status.id + 1))
end
it 'fulfills update action' do
patch admin_post_status_path(post_status), params: { post_status: { name: post_status.name + 'a' } }
expect(response).to redirect_to(admin_post_status_path(post_status))
end
it 'fulfills destroy action' do
delete admin_post_status_path(post_status)
expect(response).to redirect_to(admin_post_statuses_path)
end
end
context 'when user has role "admin"' do
before(:each) do
admin.confirm
sign_in admin
end
it 'fulfills index action' do
get admin_post_statuses_path
expect(response).to have_http_status(:success)
end
it 'fulfills show action' do
get admin_post_status_path(post_status)
expect(response).to have_http_status(:success)
end
it 'fulfills new action' do
get new_admin_post_status_path
expect(response).to have_http_status(:success)
end
it 'fulfills edit action' do
get edit_admin_post_status_path(post_status)
expect(response).to have_http_status(:success)
end
it 'fulfills create action' do
post admin_post_statuses_path, params: { post_status: { name: post_status.name + 'a', color: post_status.color } }
expect(response).to redirect_to(admin_post_status_path(post_status.id + 1))
end
it 'fulfills update action' do
patch admin_post_status_path(post_status), params: { post_status: { name: post_status.name + 'a' } }
expect(response).to redirect_to(admin_post_status_path(post_status))
end
it 'fulfills destroy action' do
delete admin_post_status_path(post_status)
expect(response).to redirect_to(admin_post_statuses_path)
end
end
end

View File

@@ -1,64 +0,0 @@
require 'rails_helper'
RSpec.describe 'Requests to the admin panel', type: :request do
let(:user) { FactoryBot.create(:user) }
let(:moderator) { FactoryBot.create(:moderator) }
let(:admin) { FactoryBot.create(:admin) }
before(:each) do
user.confirm
moderator.confirm
admin.confirm
end
it 'requires a logged-in admin to view Users admin panel' do
get admin_users_path
expect(response).to redirect_to(new_user_session_path)
sign_in user
get admin_users_path
expect(response).to redirect_to(root_path)
sign_in moderator
get admin_users_path
expect(response).to redirect_to(root_path)
sign_in admin
get admin_users_path
expect(response).to have_http_status(:success)
end
it 'requires at least a logged-in moderator to view Boards admin panel' do
get admin_boards_path
expect(response).to redirect_to(new_user_session_path)
sign_in user
get admin_boards_path
expect(response).to redirect_to(root_path)
sign_in moderator
get admin_boards_path
expect(response).to have_http_status(:success)
sign_in admin
get admin_boards_path
expect(response).to have_http_status(:success)
end
it 'requires at least a logged-in moderator to view PostStatuses admin panel' do
get admin_post_statuses_path
expect(response).to redirect_to(new_user_session_path)
sign_in user
get admin_post_statuses_path
expect(response).to redirect_to(root_path)
sign_in moderator
get admin_post_statuses_path
expect(response).to have_http_status(:success)
sign_in admin
get admin_post_statuses_path
expect(response).to have_http_status(:success)
end
end

View File

@@ -0,0 +1,146 @@
require 'rails_helper'
RSpec.describe 'requests to users in the admin panel', :admin_panel, type: :request do
let(:user) { FactoryBot.create(:user) }
let(:moderator) { FactoryBot.create(:moderator) }
let(:admin) { FactoryBot.create(:admin) }
context 'when user is not logged in' do
it 'redirects index action' do
get admin_users_path
expect(response).to redirect_to(new_user_session_path)
end
it 'redirects show action' do
get admin_user_path(user)
expect(response).to redirect_to(new_user_session_path)
end
it 'redirects new action' do
get new_admin_user_path
expect(response).to redirect_to(new_user_session_path)
end
it 'redirects edit action' do
get edit_admin_user_path(user)
expect(response).to redirect_to(new_user_session_path)
end
it 'redirects create action' do
post admin_users_path, params: { user: { full_name: user.full_name, email: user.email + 'a', password: user.password } }
expect(response).to redirect_to(new_user_session_path)
end
it 'redirects update action' do
patch admin_user_path(user), params: { user: { full_name: user.full_name } }
expect(response).to redirect_to(new_user_session_path)
end
it 'redirects destroy action' do
delete admin_user_path(user)
expect(response).to redirect_to(new_user_session_path)
end
end
context 'when user has role "user"' do
before(:each) do
user.confirm
sign_in user
end
it 'redirects index action' do
get admin_users_path
expect(response).to redirect_to(root_path)
end
it 'redirects show action' do
get admin_user_path(user)
expect(response).to redirect_to(root_path)
end
it 'redirects new action' do
get new_admin_user_path
expect(response).to redirect_to(root_path)
end
it 'redirects edit action' do
get edit_admin_user_path(user)
expect(response).to redirect_to(root_path)
end
it 'redirects create action' do
post admin_users_path, params: { user: { full_name: user.full_name, email: user.email + 'a', password: user.password } }
expect(response).to redirect_to(root_path)
end
it 'redirects update action' do
patch admin_user_path(user), params: { user: { full_name: user.full_name } }
expect(response).to redirect_to(root_path)
end
it 'redirects destroy action' do
delete admin_user_path(user)
expect(response).to redirect_to(root_path)
end
end
context 'when user has role "moderator"' do
before(:each) do
moderator.confirm
sign_in moderator
end
it 'redirects index action' do
get admin_users_path
expect(response).to redirect_to(root_path)
end
it 'redirects show action' do
get admin_user_path(user)
expect(response).to redirect_to(root_path)
end
it 'redirects new action' do
get new_admin_user_path
expect(response).to redirect_to(root_path)
end
it 'redirects edit action' do
get edit_admin_user_path(user)
expect(response).to redirect_to(root_path)
end
it 'redirects create action' do
post admin_users_path, params: { user: { full_name: user.full_name, email: user.email + 'a', password: user.password } }
expect(response).to redirect_to(root_path)
end
it 'redirects update action' do
patch admin_user_path(user), params: { user: { full_name: user.full_name } }
expect(response).to redirect_to(root_path)
end
it 'redirects destroy action' do
delete admin_user_path(user)
expect(response).to redirect_to(root_path)
end
end
context 'when user has role "admin"' do
before(:each) do
admin.confirm
sign_in admin
end
it 'fulfills index action' do
get admin_users_path
expect(response).to have_http_status(:success)
end
it 'fulfills show action' do
get admin_user_path(user)
expect(response).to have_http_status(:success)
end
it 'fulfills new action' do
get new_admin_user_path
expect(response).to have_http_status(:success)
end
it 'fulfills edit action' do
get edit_admin_user_path(user)
expect(response).to have_http_status(:success)
end
it 'fulfills create action' do
post admin_users_path, params: { user: { full_name: user.full_name, email: user.email + 'a', password: user.password } }
expect(response).to redirect_to(admin_user_path(user.id + 1))
end
it 'fulfills update action' do
patch admin_user_path(user), params: { user: { full_name: user.full_name + 'a', password: '' } }
expect(response).to redirect_to(admin_user_path(user))
end
it 'fulfills destroy action' do
delete admin_user_path(user)
expect(response).to redirect_to(admin_users_path)
end
end
end