mirror of
https://github.com/openSUSE/osem.git
synced 2026-08-15 04:34:03 +00:00
Roles into their own controller. Rework interface. Add flash messages to ajax calls. Add description to roles. Possible to edit roles in use.
This commit is contained in:
parent
eda5c2bc07
commit
ccd7ecbb90
59 changed files with 618 additions and 356 deletions
137
spec/controllers/admin/roles_controller_spec.rb
Normal file
137
spec/controllers/admin/roles_controller_spec.rb
Normal file
|
|
@ -0,0 +1,137 @@
|
|||
require 'spec_helper'
|
||||
|
||||
describe Admin::RolesController do
|
||||
|
||||
let(:conference) { create(:conference) }
|
||||
let!(:first_user) { create(:user) }
|
||||
let(:organizer_role) { Role.find_by(name: 'organizer', resource: conference) }
|
||||
let(:cfp_role) { Role.find_by(name: 'cfp', resource: conference) }
|
||||
let(:admin) { create(:admin) }
|
||||
|
||||
let!(:user1) { create(:user, email: 'user1@osem.io') }
|
||||
let!(:user2) { create(:user, email: 'user2@osem.io') }
|
||||
|
||||
describe 'GET #index' do
|
||||
before :each do
|
||||
sign_in(admin)
|
||||
get :index, conference_id: conference.short_title
|
||||
end
|
||||
|
||||
it 'assigns default value to selection variable' do
|
||||
expect(assigns(:selection)).to eq 'organizer'
|
||||
end
|
||||
|
||||
it 'finds the correct role' do
|
||||
expect(assigns(:role)).to eq organizer_role
|
||||
end
|
||||
end
|
||||
|
||||
describe 'GET #show' do
|
||||
before :each do
|
||||
sign_in(admin)
|
||||
xhr :get, :show, conference_id: conference.short_title,
|
||||
id: 'organizer'
|
||||
end
|
||||
|
||||
it 'assigns correct value to selection variable' do
|
||||
expect(assigns(:selection)).to eq 'organizer'
|
||||
end
|
||||
|
||||
it 'assigns correct value to role variable' do
|
||||
expect(assigns(:role)).to eq organizer_role
|
||||
end
|
||||
end
|
||||
|
||||
describe 'PATCH #update' do
|
||||
before :each do
|
||||
sign_in admin
|
||||
patch :update, conference_id: conference.short_title,
|
||||
id: 'cfp',
|
||||
role: { description: 'New description for cfp role!' }
|
||||
end
|
||||
|
||||
it 'changes the description of the role' do
|
||||
expect(cfp_role.description).to eq 'New description for cfp role!'
|
||||
end
|
||||
end
|
||||
|
||||
describe 'POST #toggle' do
|
||||
before:each do
|
||||
sign_in admin
|
||||
post :toggle_user, conference_id: conference.short_title,
|
||||
user: { email: 'user1@osem.io' },
|
||||
id: 'cfp'
|
||||
end
|
||||
|
||||
context 'assigns correct values to variables' do
|
||||
it 'assigns correct value to selection variable' do
|
||||
expect(assigns(:selection)).to eq 'cfp'
|
||||
end
|
||||
|
||||
it 'assigns correct value to role variable' do
|
||||
expect(assigns(:role)).to eq cfp_role
|
||||
end
|
||||
|
||||
it 'assigns role to user' do
|
||||
expect(user1.roles).to eq [cfp_role]
|
||||
end
|
||||
end
|
||||
|
||||
context 'adds role to user' do
|
||||
it 'adds second user' do
|
||||
post :toggle_user, conference_id: conference.short_title,
|
||||
user: { email: 'user2@osem.io' },
|
||||
id: 'cfp'
|
||||
|
||||
expect(user2.roles).to eq [cfp_role]
|
||||
end
|
||||
|
||||
it 'assigns second role to user' do
|
||||
post :toggle_user, conference_id: conference.short_title,
|
||||
user: { email: 'user1@osem.io' },
|
||||
id: 'organizer'
|
||||
|
||||
expect(user1.roles).to eq [organizer_role, cfp_role]
|
||||
end
|
||||
end
|
||||
|
||||
context 'removes role from user' do
|
||||
it 'removes role from user' do
|
||||
post :toggle_user, conference_id: conference.short_title,
|
||||
user: { email: 'user1@osem.io', state: 'false' },
|
||||
id: 'cfp'
|
||||
|
||||
expect(user1.roles).to eq []
|
||||
end
|
||||
|
||||
it 'removes second role from user' do
|
||||
post :toggle_user, conference_id: conference.short_title,
|
||||
user: { email: 'user1@osem.io' },
|
||||
id: 'organizer'
|
||||
|
||||
expect(user1.roles).to eq [organizer_role, cfp_role]
|
||||
|
||||
post :toggle_user, conference_id: conference.short_title,
|
||||
user: { email: 'user1@osem.io', state: 'false' },
|
||||
id: 'cfp'
|
||||
|
||||
user1.reload
|
||||
expect(user1.roles).to eq [organizer_role]
|
||||
end
|
||||
end
|
||||
|
||||
it 'does not remove role if user is the last organizer' do
|
||||
# Add role organizer
|
||||
post :toggle_user, conference_id: conference.short_title,
|
||||
user: { email: 'user1@osem.io', state: 'true' },
|
||||
id: 'organizer'
|
||||
expect(organizer_role.users).to eq [user1]
|
||||
|
||||
# Try to remove role organizer, when there is only 1 user as organizer
|
||||
post :toggle_user, conference_id: conference.short_title,
|
||||
user: { email: 'user1@osem.io', state: 'false' },
|
||||
id: 'organizer'
|
||||
expect(organizer_role.users).to eq [user1]
|
||||
end
|
||||
end
|
||||
end
|
||||
Loading…
Add table
Add a link
Reference in a new issue