Created
July 9, 2018 16:08
-
-
Save Fcukit/a466fa49b04c4e482c96bd0217139f75 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
require 'rails_helper' | |
RSpec.describe AssetsController, type: :controller do | |
describe 'all AssetsController actions' do | |
let!(:sbi_department) { create(:sbi_department) } | |
let!(:sbi_terbank) { create(:terbank, department: sbi_department) } | |
let!(:sbi_terbank_other) { create(:terbank, department: sbi_department) } | |
let!(:sbi_borrower) { create(:borrower, terbank: sbi_terbank) } | |
let!(:sbi_borrower_other) { create(:borrower, terbank: sbi_terbank_other) } | |
describe 'GET #show' do | |
let!(:sberbank_asset) { create(:asset_drilling_rig) } | |
let!(:sbi_asset) { create(:asset_drilling_rig, borrower: sbi_borrower)} | |
context 'when user is not authorized' do | |
before do | |
get(:show, params: { id: sberbank_asset.id }) | |
end | |
it 'redirect to home page' do | |
expect(response).to have_http_status(:redirect) | |
end | |
end | |
context 'when user is superadmin' do | |
before do | |
superadmin = create(:superadmin) | |
sign_in superadmin | |
get(:show, params: { id: sberbank_asset.id }) | |
end | |
it 'has success status code' do | |
expect(response).to have_http_status(:success) | |
end | |
end | |
context 'when user is SBI-department admin' do | |
before do | |
sbi_admin = create(:user, role: :admin, terbanks: [sbi_terbank.id.to_s], department: sbi_department) | |
sign_in sbi_admin | |
end | |
it 'has success status code' do | |
get(:show, params: { id: sbi_asset.id }) | |
expect(response).to have_http_status(:success) | |
end | |
it 'not allow show asset from other department' do | |
get(:show, params: { id: sberbank_asset.id }) | |
expect(response).to have_http_status(:redirect) | |
end | |
end | |
context 'when user is SBI-department moderator' do | |
let!(:sbi_asset) { create(:asset_drilling_rig, borrower: sbi_borrower)} | |
let!(:sbi_asset_other) { create(:asset_drilling_rig, borrower: sbi_borrower_other)} | |
before do | |
sbi_moderator = create(:user, role: :moderator, terbanks: [sbi_terbank.id.to_s], department: sbi_department) | |
sign_in sbi_moderator | |
end | |
it 'allow show asset where terbank is from user.terbanks list' do | |
get :show, params: { id: sbi_asset.id } | |
expect(response).to have_http_status(:success) | |
end | |
it 'not allow show asset where terbank is not from user.terbanks list' do | |
get :show, params: { id: sbi_asset_other.id } | |
expect(response).to have_http_status(:redirect) | |
end | |
end | |
context 'when user is SBI-department db_manager' do | |
let!(:sbi_asset) { create(:asset_drilling_rig, borrower: sbi_borrower)} | |
let!(:sbi_asset_other) { create(:asset_drilling_rig, borrower: sbi_borrower_other)} | |
before do | |
sbi_db_manager = create(:user, role: :db_manager, terbanks: [sbi_terbank.id.to_s], department: sbi_department) | |
sign_in sbi_db_manager | |
end | |
it 'allow show all assets from user department' do | |
get :show, params: { id: sbi_asset.id } | |
expect(response).to have_http_status(:success) | |
get :show, params: { id: sbi_asset_other.id } | |
expect(response).to have_http_status(:success) | |
end | |
end | |
end | |
describe 'GET #index' do | |
let!(:sberbank_asset) { create(:asset_drilling_rig) } | |
let!(:sold_sberbank_asset) { create(:asset_drilling_rig, sold: true) } | |
let!(:edited_sberbank_asset) { create(:asset_drilling_rig, is_version: true) } | |
let!(:unvisible_sberbank_asset) { create(:asset_drilling_rig, visible: false) } | |
context 'when user is not authorized' do | |
before do | |
get :index | |
end | |
it 'has success status code' do | |
expect(response).to have_http_status(:success) | |
end | |
it 'empty list assets' do | |
expect(assigns(:assets).to_a).to eq([]) | |
end | |
end | |
context 'when user is superadmin' do | |
before do | |
superadmin = create(:superadmin) | |
sign_in superadmin | |
end | |
context 'when block mode' do | |
before do | |
get :index | |
end | |
it 'has success status code' do | |
expect(response).to have_http_status(:success) | |
end | |
it 'return assets criteria' do | |
expect(assigns(:assets)).to be_a(Mongoid::Criteria) | |
end | |
it 'not empty list assets' do | |
expect(assigns(:assets)).not_to eq([]) | |
end | |
it 'not contain edited assets' do | |
expect(assigns(:assets).to_a).not_to include(edited_sberbank_asset) | |
end | |
it 'not contain unvisible assets' do | |
expect(assigns(:assets).to_a).not_to include(unvisible_sberbank_asset) | |
end | |
end | |
context 'when list, table or map mode' do | |
before do | |
get :index, params: { mode: :list } | |
end | |
it 'not contain sold assets' do | |
expect(assigns(:assets).to_a).not_to include(sold_sberbank_asset) | |
end | |
it 'not contain edited assets' do | |
expect(assigns(:assets).to_a).not_to include(edited_sberbank_asset) | |
end | |
it 'not contain unvisible assets' do | |
expect(assigns(:assets).to_a).not_to include(unvisible_sberbank_asset) | |
end | |
end | |
end | |
context 'when user is SBI-department admin' do | |
let!(:sbi_asset) { create(:asset_drilling_rig, borrower: sbi_borrower)} | |
let!(:sbi_asset_other) { create(:asset_drilling_rig, borrower: sbi_borrower_other)} | |
before do | |
sbi_admin = create(:user, role: :admin, terbanks: [sbi_terbank.id.to_s], department: sbi_department) | |
sign_in sbi_admin | |
get :index | |
end | |
it 'show only SBI-department assets' do | |
expect(assigns(:assets).to_a.count).to eq(2) | |
end | |
end | |
context 'when user is SBI-department moderator' do | |
let!(:sbi_asset) { create(:asset_drilling_rig, borrower: sbi_borrower)} | |
let!(:sbi_asset_other) { create(:asset_drilling_rig, borrower: sbi_borrower_other)} | |
before do | |
sbi_moderator = create(:user, role: :moderator, terbanks: [sbi_terbank.id.to_s], department: sbi_department) | |
sign_in sbi_moderator | |
get :index | |
end | |
it 'show only SBI-department assets of certain terbanks' do | |
expect(assigns(:assets).to_a.count).to eq(1) | |
end | |
end | |
context 'when user is SBI-department db_manager' do | |
let!(:sbi_asset) { create(:asset_drilling_rig, borrower: sbi_borrower)} | |
let!(:sbi_asset_other) { create(:asset_drilling_rig, borrower: sbi_borrower_other)} | |
before do | |
sbi_db_manager = create(:user, role: :db_manager, terbanks: [sbi_terbank.id.to_s], department: sbi_department) | |
sign_in sbi_db_manager | |
get :index | |
end | |
it 'show only SBI-department assets of certain terbanks' do | |
expect(assigns(:assets).to_a.count).to eq(2) | |
end | |
end | |
end | |
end | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment