Drop knapsack
It constantly fails with "Mysql2::Error: This connection is in use by...". Might be because of database cleaner? But until we can get this stable, rip it out again. Replaced by a matrix based on test type
This commit is contained in:
parent
da91ff8371
commit
a0b79c7789
10 changed files with 24 additions and 692 deletions
|
|
@ -1,270 +0,0 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
require 'spec_helper'
|
||||
require 'cancan/matchers'
|
||||
|
||||
describe 'User' do
|
||||
describe 'Abilities' do
|
||||
let!(:admin) { create(:admin) }
|
||||
|
||||
# see https://github.com/CanCanCommunity/cancancan/wiki/Testing-Abilities
|
||||
subject(:ability){ Ability.new(user) }
|
||||
let(:user){ nil }
|
||||
|
||||
let!(:organization) { create(:organization) }
|
||||
let!(:my_conference) { create(:full_conference, organization: organization) }
|
||||
|
||||
let(:my_room) { create(:room, venue: my_conference.venue) }
|
||||
|
||||
let(:conference_not_public) { create(:conference, splashpage: create(:splashpage, public: false)) }
|
||||
let(:conference_public) { create(:full_conference, splashpage: create(:splashpage, public: true)) }
|
||||
|
||||
let(:event_confirmed) { create(:event, state: 'confirmed') }
|
||||
let(:event_unconfirmed) { create(:event) }
|
||||
|
||||
let(:commercial_event_confirmed) { create(:commercial, commercialable: event_confirmed) }
|
||||
let(:commercial_event_unconfirmed) { create(:commercial, commercialable: event_unconfirmed) }
|
||||
let(:registration) { create(:registration) }
|
||||
|
||||
let(:program_with_cfp) { create(:program, :with_cfp) }
|
||||
let(:program_without_cfp) { create(:program) }
|
||||
let(:program_with_call_for_tracks) { create(:cfp, cfp_type: 'tracks').program }
|
||||
let(:conference_with_open_registration) { create(:conference) }
|
||||
let!(:open_registration_period) { create(:registration_period, conference: conference_with_open_registration, start_date: Date.current - 6.days) }
|
||||
let(:conference_with_closed_registration) { create(:conference) }
|
||||
let!(:closed_registration_period) { create(:registration_period, conference: conference_with_closed_registration, start_date: Date.current - 6.days, end_date: Date.current - 6.days) }
|
||||
|
||||
# Test abilities for not signed in users
|
||||
context 'when user is not signed in' do
|
||||
it{ should be_able_to(:index, Organization)}
|
||||
it{ should be_able_to(:index, Conference)}
|
||||
|
||||
it{ should be_able_to(:show, conference_public)}
|
||||
it{ should_not be_able_to(:show, conference_not_public)}
|
||||
|
||||
it do
|
||||
conference_public.program.schedule_public = true
|
||||
conference_public.program.save
|
||||
should be_able_to(:schedule, conference_public)
|
||||
end
|
||||
it{ should_not be_able_to(:schedule, conference_not_public)}
|
||||
|
||||
it{ should be_able_to(:show, event_confirmed)}
|
||||
it{ should_not be_able_to(:show, event_unconfirmed)}
|
||||
|
||||
it{ should be_able_to(:show, commercial_event_confirmed)}
|
||||
it{ should_not be_able_to(:show, commercial_event_unconfirmed)}
|
||||
|
||||
it{ should be_able_to(:show, User)}
|
||||
it{ should be_able_to(:create, User)}
|
||||
|
||||
it{ should be_able_to(:show, Registration.new)}
|
||||
it{ should be_able_to(:create, Registration.new(conference_id: conference_with_open_registration.id))}
|
||||
it{ should be_able_to(:new, Registration.new(conference_id: conference_with_open_registration.id))}
|
||||
it{ should_not be_able_to(:new, Registration.new(conference_id: conference_with_closed_registration.id))}
|
||||
it{ should_not be_able_to(:create, Registration.new(conference_id: conference_with_closed_registration.id))}
|
||||
it{ should_not be_able_to(:manage, registration)}
|
||||
|
||||
it{ should be_able_to(:new, Event.new(program: program_with_cfp)) }
|
||||
it{ should_not be_able_to(:new, Event.new(program: program_without_cfp)) }
|
||||
it{ should_not be_able_to(:create, Event.new(program: program_without_cfp))}
|
||||
it{ should be_able_to(:show, Event.new)}
|
||||
|
||||
it{ should_not be_able_to(:manage, :any)}
|
||||
end
|
||||
|
||||
# Test abilities for signed in users (without any role)
|
||||
context 'when user is signed in' do
|
||||
let(:user) { create(:user) }
|
||||
let(:user2) { create(:user) }
|
||||
let(:event_user2) { create(:submitter, user: user2) }
|
||||
|
||||
let(:subscription) { create(:subscription, user: user) }
|
||||
let(:registration_public) { create(:registration, conference: conference_public, user: user) }
|
||||
let(:registration_not_public) { create(:registration, conference: conference_not_public, user: user) }
|
||||
|
||||
let(:user_event_with_cfp) { create(:event, users: [user], program: program_with_cfp) }
|
||||
let(:user_commercial) { create(:commercial, commercialable: user_event_with_cfp) }
|
||||
let(:user_self_organized_track) { create(:track, :self_organized, submitter: user) }
|
||||
let(:accepted_user_self_organized_track) { create(:track, :self_organized, submitter: user, state: 'accepted') }
|
||||
let(:confirmed_user_self_organized_track) { create(:track, :self_organized, submitter: user, state: 'confirmed') }
|
||||
let(:other_self_organized_track) { create(:track, :self_organized) }
|
||||
|
||||
it{ should be_able_to(:manage, user) }
|
||||
it{ should be_able_to(:manage, registration_public) }
|
||||
it{ should be_able_to(:manage, registration_not_public) }
|
||||
|
||||
# Test for user can register or not
|
||||
context 'when user is not a speaker with event confirmed' do
|
||||
let(:conference) { create(:conference) }
|
||||
|
||||
context 'when the registration is closed' do
|
||||
before :each do
|
||||
create(:registration_period, conference: conference, start_date: Date.current - 6.days, end_date: Date.current - 6.days)
|
||||
end
|
||||
|
||||
it{ should_not be_able_to(:new, Registration.new(conference: conference)) }
|
||||
it{ should_not be_able_to(:create, Registration.new(conference: conference)) }
|
||||
end
|
||||
|
||||
context 'when the registration period is not set' do
|
||||
it{ should_not be_able_to(:new, Registration.new(conference: conference)) }
|
||||
it{ should_not be_able_to(:create, Registration.new(conference: conference)) }
|
||||
end
|
||||
|
||||
context 'when user has already registered' do
|
||||
before :each do
|
||||
create(:registration, conference: conference, user: user)
|
||||
end
|
||||
|
||||
it{ should_not be_able_to(:new, Registration.new(conference: conference)) }
|
||||
it{ should_not be_able_to(:create, Registration.new(conference: conference)) }
|
||||
end
|
||||
|
||||
context 'when registrations are open' do
|
||||
before :each do
|
||||
create(:registration_period, conference: conference)
|
||||
end
|
||||
|
||||
it{ should be_able_to(:new, Registration.new(conference: conference)) }
|
||||
it{ should be_able_to(:create, Registration.new(conference: conference)) }
|
||||
|
||||
context 'when user has not registered with no registration_limit_exceeded' do
|
||||
before :each do
|
||||
conference.registration_limit = 1
|
||||
end
|
||||
|
||||
it{ should be_able_to(:new, Registration.new(conference: conference)) }
|
||||
it{ should be_able_to(:create, Registration.new(conference: conference)) }
|
||||
end
|
||||
|
||||
context 'when user has not registered with registration_limit_exceeded' do
|
||||
before :each do
|
||||
conference.registration_limit = 1
|
||||
create(:registration, conference: conference, user: user2)
|
||||
end
|
||||
|
||||
it{ should_not be_able_to(:new, Registration.new(conference: conference)) }
|
||||
it{ should_not be_able_to(:create, Registration.new(conference: conference)) }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
context 'when user is a speaker with event confirmed' do
|
||||
let(:conference_with_speaker_confirmed) { create(:conference) }
|
||||
let(:event_with_speaker_confirmed) { create(:event, state: 'confirmed', program: conference_with_speaker_confirmed.program) }
|
||||
|
||||
before :each do
|
||||
event_with_speaker_confirmed.speakers << user
|
||||
end
|
||||
|
||||
context 'when registration period is not set' do
|
||||
it{ should_not be_able_to(:new, Registration.new(conference: conference_with_speaker_confirmed)) }
|
||||
it{ should_not be_able_to(:create, Registration.new(conference: conference_with_speaker_confirmed)) }
|
||||
end
|
||||
|
||||
context 'when speaker has already registered' do
|
||||
before :each do
|
||||
create(:registration, conference: conference_with_speaker_confirmed, user: user)
|
||||
end
|
||||
|
||||
it{ should_not be_able_to(:new, Registration.new(conference: conference_with_speaker_confirmed)) }
|
||||
it{ should_not be_able_to(:create, Registration.new(conference: conference_with_speaker_confirmed)) }
|
||||
end
|
||||
|
||||
context 'when registration period is set' do
|
||||
before :each do
|
||||
create(:registration_period, conference: conference_with_speaker_confirmed)
|
||||
end
|
||||
|
||||
context 'when registrations are open' do
|
||||
context 'when speaker has not registered' do
|
||||
it{ should be_able_to(:new, Registration.new(conference: conference_with_speaker_confirmed)) }
|
||||
it{ should be_able_to(:create, Registration.new(conference: conference_with_speaker_confirmed)) }
|
||||
end
|
||||
|
||||
context 'when registration_limit_exceeded' do
|
||||
before :each do
|
||||
conference_with_speaker_confirmed.registration_limit = 1
|
||||
create(:registration, conference: conference_with_speaker_confirmed, user: user2)
|
||||
end
|
||||
|
||||
it{ should be_able_to(:new, Registration.new(conference: conference_with_speaker_confirmed)) }
|
||||
it{ should be_able_to(:create, Registration.new(conference: conference_with_speaker_confirmed)) }
|
||||
end
|
||||
end
|
||||
|
||||
context 'when registrations are closed' do
|
||||
before :each do
|
||||
create(:registration_period, conference: conference_with_speaker_confirmed, start_date: Date.current - 6.days, end_date: Date.current - 6.days)
|
||||
end
|
||||
|
||||
context 'when speaker has not registered' do
|
||||
it{ should be_able_to(:new, Registration.new(conference: conference_with_speaker_confirmed)) }
|
||||
it{ should be_able_to(:create, Registration.new(conference: conference_with_speaker_confirmed)) }
|
||||
end
|
||||
|
||||
context 'with registration_limit_exceeded' do
|
||||
before :each do
|
||||
conference_with_speaker_confirmed.registration_limit = 1
|
||||
create(:registration, conference: conference_with_speaker_confirmed, user: user2)
|
||||
end
|
||||
|
||||
it{ should be_able_to(:new, Registration.new(conference: conference_with_speaker_confirmed)) }
|
||||
it{ should be_able_to(:create, Registration.new(conference: conference_with_speaker_confirmed)) }
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
it{ should be_able_to(:index, Ticket) }
|
||||
it{ should be_able_to(:manage, TicketPurchase.new(user_id: user.id)) }
|
||||
|
||||
it{ should be_able_to(:new, Payment.new(user_id: user.id)) }
|
||||
it{ should be_able_to(:create, Payment.new(user_id: user.id)) }
|
||||
|
||||
it{ should be_able_to(:create, Subscription.new(user_id: user.id)) }
|
||||
it{ should be_able_to(:destroy, subscription) }
|
||||
|
||||
it{ should be_able_to(:update, user_event_with_cfp) }
|
||||
it{ should be_able_to(:show, user_event_with_cfp) }
|
||||
it{ should_not be_able_to(:new, Event.new(program: program_without_cfp)) }
|
||||
it{ should_not be_able_to(:create, Event.new(program: program_without_cfp)) }
|
||||
# TODO: At moment it's not possible to manually add someone else as event_user
|
||||
# This needs some more work once we allow user to add event_user
|
||||
it 'should_not be_able to :new, Event.new(program: program_with_cfp, event_users: [event_user2])'
|
||||
it 'should_not be_able to :create, Event.new(program: program_with_cfp, event_users: [event_user2])'
|
||||
|
||||
it{ should_not be_able_to(:manage, event_unconfirmed) }
|
||||
|
||||
it{ should be_able_to(:create, user_event_with_cfp.commercials.new) }
|
||||
it{ should be_able_to(:manage, user_commercial) }
|
||||
it{ should_not be_able_to(:manage, commercial_event_unconfirmed) }
|
||||
|
||||
it{ should be_able_to(:new, Track.new(program: program_with_call_for_tracks)) }
|
||||
it{ should be_able_to(:create, Track.new(program: program_with_call_for_tracks)) }
|
||||
it{ should_not be_able_to(:new, Track.new(program: program_without_cfp)) }
|
||||
it{ should_not be_able_to(:create, Track.new(program: program_without_cfp)) }
|
||||
|
||||
it{ should be_able_to(:index, user_self_organized_track) }
|
||||
it{ should be_able_to(:show, user_self_organized_track) }
|
||||
it{ should be_able_to(:restart, user_self_organized_track) }
|
||||
it{ should be_able_to(:confirm, user_self_organized_track) }
|
||||
it{ should be_able_to(:withdraw, user_self_organized_track) }
|
||||
it{ should_not be_able_to(:index, other_self_organized_track) }
|
||||
it{ should_not be_able_to(:show, other_self_organized_track) }
|
||||
it{ should_not be_able_to(:restart, other_self_organized_track) }
|
||||
it{ should_not be_able_to(:confirm, other_self_organized_track) }
|
||||
it{ should_not be_able_to(:withdraw, other_self_organized_track) }
|
||||
|
||||
it{ should be_able_to(:edit, user_self_organized_track) }
|
||||
it{ should be_able_to(:update, user_self_organized_track) }
|
||||
it{ should_not be_able_to(:edit, accepted_user_self_organized_track) }
|
||||
it{ should_not be_able_to(:update, accepted_user_self_organized_track) }
|
||||
it{ should_not be_able_to(:edit, confirmed_user_self_organized_track) }
|
||||
it{ should_not be_able_to(:update, confirmed_user_self_organized_track) }
|
||||
it{ should_not be_able_to(:edit, other_self_organized_track) }
|
||||
it{ should_not be_able_to(:update, other_self_organized_track) }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -1,550 +0,0 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
require 'spec_helper'
|
||||
require 'cancan/matchers'
|
||||
|
||||
describe 'User with admin role' do
|
||||
describe 'Abilities' do
|
||||
let!(:admin) { create(:admin) }
|
||||
|
||||
# see https://github.com/CanCanCommunity/cancancan/wiki/Testing-Abilities
|
||||
subject(:ability){ AdminAbility.new(user) }
|
||||
let(:user){ nil }
|
||||
|
||||
let!(:organization) { create(:organization) }
|
||||
let!(:my_conference) { create(:full_conference, organization: organization) }
|
||||
let!(:registration_ticket) { create(:registration_ticket, conference: my_conference) }
|
||||
let(:my_venue) { my_conference.venue || create(:venue, conference: my_conference) }
|
||||
let(:my_registration) { create(:registration, conference: my_conference, user: admin) }
|
||||
|
||||
let(:other_registration) { create(:registration, conference: conference_public) }
|
||||
let(:my_event) { create(:event_full, program: my_conference.program) }
|
||||
let(:my_room) { create(:room, venue: my_conference.venue) }
|
||||
let!(:my_event_scheduled) { create(:event_full, program: my_conference.program, room_id: my_room.id) }
|
||||
let(:other_event) { create(:event_full, program: conference_public.program) }
|
||||
|
||||
let(:conference_not_public) { create(:conference, splashpage: create(:splashpage, public: false)) }
|
||||
let(:conference_public) { create(:full_conference, splashpage: create(:splashpage, public: true)) }
|
||||
|
||||
let(:event_confirmed) { create(:event, state: 'confirmed') }
|
||||
let(:event_unconfirmed) { create(:event) }
|
||||
|
||||
let(:commercial_event_confirmed) { create(:commercial, commercialable: event_confirmed) }
|
||||
let(:commercial_event_unconfirmed) { create(:commercial, commercialable: event_unconfirmed) }
|
||||
let(:resource) { create(:resource, conference: my_conference) }
|
||||
let(:registration) { create(:registration) }
|
||||
|
||||
let(:program_with_cfp) { create(:program, :with_cfp) }
|
||||
let(:program_without_cfp) { create(:program) }
|
||||
let(:conference_with_open_registration) { create(:conference) }
|
||||
let!(:open_registration_period) { create(:registration_period, conference: conference_with_open_registration, start_date: Date.current - 6.days) }
|
||||
let(:conference_with_closed_registration) { create(:conference) }
|
||||
let!(:closed_registration_period) { create(:registration_period, conference: conference_with_closed_registration, start_date: Date.current - 6.days, end_date: Date.current - 6.days) }
|
||||
|
||||
let!(:my_schedule) { create(:schedule, program: my_conference.program) }
|
||||
let!(:other_schedule) { create(:schedule, program: conference_public.program) }
|
||||
|
||||
let!(:my_event_schedule) { create(:event_schedule, schedule: my_schedule) }
|
||||
let!(:other_event_schedule) { create(:event_schedule, schedule: other_schedule) }
|
||||
|
||||
let!(:my_self_organized_track) { create(:track, :self_organized, program: my_conference.program, state: 'confirmed') }
|
||||
|
||||
context 'user #is_admin?' do
|
||||
let(:venue) { my_conference.venue }
|
||||
let(:room) { create(:room, venue: venue) }
|
||||
let!(:event) { create(:event_full, program: my_conference.program, room_id: room.id) }
|
||||
let(:user) { create(:admin) }
|
||||
it{ should be_able_to(:manage, :all) }
|
||||
it{ should_not be_able_to(:destroy, my_conference.program) }
|
||||
it{ should_not be_able_to(:destroy, my_venue) }
|
||||
end
|
||||
|
||||
shared_examples 'user with any role' do
|
||||
let!(:other_organization) { create(:organization) }
|
||||
let!(:other_conference) { create(:conference, organization: other_organization) }
|
||||
|
||||
it{ should_not be_able_to(:update, Role.find_by(name: 'organization_admin', resource: other_organization)) }
|
||||
it{ should_not be_able_to(:edit, Role.find_by(name: 'organization_admin', resource: other_organization)) }
|
||||
it{ should be_able_to(:admins, organization) }
|
||||
|
||||
it{ should_not be_able_to(:new, User.new) }
|
||||
it{ should_not be_able_to(:create, User.new) }
|
||||
it{ should_not be_able_to(:manage, User) }
|
||||
|
||||
%w[organizer cfp info_desk volunteers_coordinator].each do |role|
|
||||
it{ should_not be_able_to(:toggle_user, Role.find_by(name: role, resource: other_conference)) }
|
||||
it{ should_not be_able_to(:update, Role.find_by(name: role, resource: other_conference)) }
|
||||
it{ should_not be_able_to(:edit, Role.find_by(name: role, resource: other_conference)) }
|
||||
it{ should be_able_to(:show, Role.find_by(name: role, resource: other_conference)) }
|
||||
it{ should be_able_to(:index, Role.find_by(name: role, resource: other_conference)) }
|
||||
end
|
||||
|
||||
context 'accesses track organizers' do
|
||||
before :each do
|
||||
other_self_organized_track = create(:track, :self_organized)
|
||||
@other_track_organizer_role = Role.where(name: 'track_organizer', resource: other_self_organized_track).first_or_create
|
||||
end
|
||||
|
||||
it{ should_not be_able_to(:toggle_user, @other_track_organizer_role) }
|
||||
it{ should_not be_able_to(:update, @other_track_organizer_role) }
|
||||
it{ should_not be_able_to(:edit, @other_track_organizer_role) }
|
||||
it{ should be_able_to(:show, @other_track_organizer_role) }
|
||||
it{ should be_able_to(:index, @other_track_organizer_role) }
|
||||
end
|
||||
end
|
||||
|
||||
shared_examples 'user with non-organizer role' do |role_name|
|
||||
%w[organizer cfp info_desk volunteers_coordinator].each do |role|
|
||||
if role == role_name
|
||||
it{ should be_able_to(:toggle_user, Role.find_by(name: role, resource: my_conference)) }
|
||||
else
|
||||
it{ should_not be_able_to(:toggle_user, Role.find_by(name: role, resource: my_conference)) }
|
||||
end
|
||||
it{ should_not be_able_to(:update, Role.find_by(name: role, resource: my_conference)) }
|
||||
it{ should_not be_able_to(:edit, Role.find_by(name: role, resource: my_conference)) }
|
||||
it{ should be_able_to(:show, Role.find_by(name: role, resource: my_conference)) }
|
||||
it{ should be_able_to(:index, Role.find_by(name: role, resource: my_conference)) }
|
||||
end
|
||||
|
||||
context 'accesses track organizers' do
|
||||
before :each do
|
||||
@track_organizer_role = Role.where(name: 'track_organizer', resource: my_self_organized_track).first_or_create
|
||||
end
|
||||
|
||||
if role_name == 'track_organizer'
|
||||
it{ should be_able_to(:toggle_user, @track_organizer_role) }
|
||||
else
|
||||
it{ should_not be_able_to(:toggle_user, @track_organizer_role) }
|
||||
end
|
||||
it{ should_not be_able_to(:update, @track_organizer_role) }
|
||||
it{ should_not be_able_to(:edit, @track_organizer_role) }
|
||||
it{ should be_able_to(:show, @track_organizer_role) }
|
||||
it{ should be_able_to(:index, @track_organizer_role) }
|
||||
end
|
||||
end
|
||||
|
||||
context 'when user has the role organization_admin' do
|
||||
let(:role) { Role.find_by(name: 'organization_admin', resource: organization) }
|
||||
let(:user) { create(:user, role_ids: [role.id]) }
|
||||
let(:other_organization) { create(:organization) }
|
||||
let(:other_conference) { create(:conference, organization: other_organization) }
|
||||
|
||||
it{ should be_able_to(:assign_org_admins, organization) }
|
||||
it{ should be_able_to(:unassign_org_admins, organization) }
|
||||
it{ should be_able_to(:manage, my_conference) }
|
||||
it{ should be_able_to(:read, organization) }
|
||||
it{ should be_able_to(:update, organization) }
|
||||
it{ should be_able_to(:destroy, organization) }
|
||||
it{ should be_able_to(:new, Conference.new) }
|
||||
it{ should be_able_to(:create, Conference.new(organization_id: organization.id)) }
|
||||
it{ should_not be_able_to(:manage, other_conference) }
|
||||
it{ should_not be_able_to(:create, Conference.new(organization_id: other_organization.id)) }
|
||||
it{ should_not be_able_to(:new, Organization.new) }
|
||||
it{ should_not be_able_to(:create, Organization.new) }
|
||||
|
||||
it_behaves_like 'user with any role'
|
||||
end
|
||||
|
||||
context 'when user has the role organizer' do
|
||||
let(:role) { Role.find_by(name: 'organizer', resource: my_conference) }
|
||||
let(:user) { create(:user, role_ids: [role.id]) }
|
||||
|
||||
it{ should_not be_able_to(:destroy, my_conference.program) }
|
||||
it 'when there is a room assigned to an event' do
|
||||
should_not be_able_to(:destroy, my_venue)
|
||||
end
|
||||
|
||||
it 'when there are no rooms used' do
|
||||
my_event_scheduled.room_id = nil
|
||||
my_event_scheduled.save!
|
||||
my_event_scheduled.reload
|
||||
should be_able_to(:destroy, my_venue)
|
||||
end
|
||||
|
||||
it{ should_not be_able_to(:new, Organization.new) }
|
||||
it{ should_not be_able_to(:create, Organization.new) }
|
||||
it{ should_not be_able_to(:new, Conference.new) }
|
||||
it{ should_not be_able_to(:create, Conference.new) }
|
||||
it{ should be_able_to(:read, my_conference) }
|
||||
it{ should be_able_to(:update, my_conference) }
|
||||
it{ should be_able_to(:destroy, my_conference) }
|
||||
it{ should_not be_able_to(:manage, conference_public) }
|
||||
it{ should be_able_to(:manage, my_conference.splashpage) }
|
||||
it{ should_not be_able_to(:manage, conference_public.splashpage) }
|
||||
it{ should be_able_to(:manage, my_conference.contact) }
|
||||
it{ should_not be_able_to(:manage, conference_public.contact) }
|
||||
it{ should be_able_to(:manage, my_conference.email_settings) }
|
||||
it{ should_not be_able_to(:manage, conference_public.email_settings) }
|
||||
it{ should be_able_to(:manage, my_conference.campaigns.first) }
|
||||
it{ should_not be_able_to(:manage, conference_public.campaigns.first) }
|
||||
it{ should be_able_to(:manage, my_conference.targets.first) }
|
||||
it{ should_not be_able_to(:manage, conference_public.targets.first) }
|
||||
it{ should be_able_to(:manage, my_conference.commercials.first) }
|
||||
it{ should_not be_able_to(:manage, conference_public.commercials.first) }
|
||||
it{ should be_able_to(:manage, my_conference.registration_period) }
|
||||
it{ should_not be_able_to(:manage, conference_public.registration_period) }
|
||||
it{ should be_able_to(:manage, my_conference.questions.first) }
|
||||
it{ should_not be_able_to(:manage, conference_public.questions.first) }
|
||||
it{ should be_able_to(:manage, my_conference.program.cfp) }
|
||||
it{ should_not be_able_to(:manage, conference_public.program.cfp) }
|
||||
it{ should be_able_to(:manage, my_schedule) }
|
||||
it{ should_not be_able_to(:manage, other_schedule) }
|
||||
it{ should be_able_to(:manage, my_event_schedule) }
|
||||
it{ should_not be_able_to(:manage, other_event_schedule) }
|
||||
it{ should be_able_to(:manage, my_conference.venue) }
|
||||
it{ should_not be_able_to(:manage, conference_public.venue) }
|
||||
it{ should be_able_to(:manage, my_conference.lodgings.first) }
|
||||
it{ should_not be_able_to(:manage, conference_public.lodgings.first) }
|
||||
it{ should be_able_to(:manage, my_conference.sponsors.first) }
|
||||
it{ should_not be_able_to(:manage, conference_public.sponsors.first) }
|
||||
it{ should be_able_to(:manage, my_conference.sponsorship_levels.first) }
|
||||
it{ should_not be_able_to(:manage, conference_public.sponsorship_levels.first) }
|
||||
it{ should be_able_to(:manage, my_conference.tickets.first) }
|
||||
it{ should_not be_able_to(:manage, conference_public.tickets.first) }
|
||||
|
||||
it{ should be_able_to(:manage, my_registration) }
|
||||
it{ should_not be_able_to(:manage, other_registration) }
|
||||
|
||||
it{ should be_able_to(:manage, my_event) }
|
||||
it{ should_not be_able_to(:manage, other_event) }
|
||||
it{ should be_able_to(:manage, my_event.event_type) }
|
||||
it{ should_not be_able_to(:manage, other_event.event_type) }
|
||||
it{ should be_able_to(:manage, my_event.track) }
|
||||
it{ should_not be_able_to(:manage, other_event.track) }
|
||||
it{ should be_able_to(:manage, my_event.difficulty_level) }
|
||||
it{ should_not be_able_to(:manage, other_event.difficulty_level) }
|
||||
it{ should be_able_to(:manage, my_event.commercials.first) }
|
||||
it{ should_not be_able_to(:manage, other_event.commercials.first) }
|
||||
it{ should be_able_to(:index, my_event.comment_threads.first) }
|
||||
it{ should_not be_able_to(:index, other_event.comment_threads.first) }
|
||||
|
||||
it{ should be_able_to(:manage, resource) }
|
||||
|
||||
it{ should_not be_able_to(:assign_org_admins, organization) }
|
||||
it{ should_not be_able_to(:unassign_org_admins, organization) }
|
||||
|
||||
%w[organizer cfp info_desk volunteers_coordinator].each do |role|
|
||||
it{ should be_able_to(:toggle_user, Role.find_by(name: role, resource: my_conference)) }
|
||||
it{ should be_able_to(:edit, Role.find_by(name: role, resource: my_conference)) }
|
||||
it{ should be_able_to(:update, Role.find_by(name: role, resource: my_conference)) }
|
||||
it{ should be_able_to(:show, Role.find_by(name: role, resource: my_conference)) }
|
||||
it{ should be_able_to(:index, Role.find_by(name: role, resource: my_conference)) }
|
||||
end
|
||||
|
||||
context 'can manage track organizers' do
|
||||
before :each do
|
||||
@track_organizer_role = Role.where(name: 'track_organizer', resource: my_self_organized_track).first_or_create
|
||||
end
|
||||
|
||||
it{ should be_able_to(:toggle_user, @track_organizer_role) }
|
||||
it{ should be_able_to(:edit, @track_organizer_role) }
|
||||
it{ should be_able_to(:update, @track_organizer_role) }
|
||||
it{ should be_able_to(:show, @track_organizer_role) }
|
||||
it{ should be_able_to(:index, @track_organizer_role) }
|
||||
end
|
||||
|
||||
it_behaves_like 'user with any role'
|
||||
end
|
||||
|
||||
context 'when user has the role cfp' do
|
||||
let(:role) { Role.find_by(name: 'cfp', resource: my_conference) }
|
||||
let(:user) { create(:user, role_ids: [role.id]) }
|
||||
|
||||
it{ should_not be_able_to(:new, Conference.new) }
|
||||
it{ should_not be_able_to(:create, Conference.new) }
|
||||
it{ should_not be_able_to(:manage, my_conference) }
|
||||
it{ should_not be_able_to(:manage, conference_public) }
|
||||
it{ should_not be_able_to(:manage, my_conference.splashpage) }
|
||||
it{ should_not be_able_to(:manage, conference_public.splashpage) }
|
||||
it{ should_not be_able_to(:manage, my_conference.contact) }
|
||||
it{ should_not be_able_to(:manage, conference_public.contact) }
|
||||
it{ should be_able_to(:manage, my_conference.email_settings) }
|
||||
it{ should_not be_able_to(:manage, conference_public.email_settings) }
|
||||
it{ should_not be_able_to(:manage, my_conference.campaigns.first) }
|
||||
it{ should_not be_able_to(:manage, conference_public.campaigns.first) }
|
||||
it{ should_not be_able_to(:manage, my_conference.targets.first) }
|
||||
it{ should_not be_able_to(:manage, conference_public.targets.first) }
|
||||
it{ should_not be_able_to(:manage, my_conference.commercials.first) }
|
||||
it{ should_not be_able_to(:manage, conference_public.commercials.first) }
|
||||
it{ should_not be_able_to(:manage, my_conference.registration_period) }
|
||||
it{ should_not be_able_to(:manage, conference_public.registration_period) }
|
||||
it{ should_not be_able_to(:manage, my_conference.questions.first) }
|
||||
it{ should_not be_able_to(:manage, conference_public.questions.first) }
|
||||
it{ should be_able_to(:manage, my_conference.program.cfp) }
|
||||
it{ should_not be_able_to(:manage, conference_public.program.cfp) }
|
||||
it{ should be_able_to(:manage, my_schedule) }
|
||||
it{ should_not be_able_to(:manage, other_schedule) }
|
||||
it{ should_not be_able_to(:manage, my_event_schedule) }
|
||||
it{ should_not be_able_to(:manage, other_event_schedule) }
|
||||
it{ should_not be_able_to(:manage, my_conference.venue) }
|
||||
it{ should be_able_to(:show, my_conference.venue) }
|
||||
it{ should_not be_able_to(:manage, conference_public.venue) }
|
||||
it{ should_not be_able_to(:manage, my_conference.lodgings.first) }
|
||||
it{ should_not be_able_to(:manage, conference_public.lodgings.first) }
|
||||
it{ should_not be_able_to(:manage, my_conference.sponsors.first) }
|
||||
it{ should_not be_able_to(:manage, conference_public.sponsors.first) }
|
||||
it{ should_not be_able_to(:manage, my_conference.sponsorship_levels.first) }
|
||||
it{ should_not be_able_to(:manage, conference_public.sponsorship_levels.first) }
|
||||
it{ should_not be_able_to(:manage, my_conference.tickets.first) }
|
||||
it{ should_not be_able_to(:manage, conference_public.tickets.first) }
|
||||
|
||||
it{ should_not be_able_to(:manage, my_registration) }
|
||||
it{ should_not be_able_to(:manage, other_registration) }
|
||||
|
||||
it{ should be_able_to(:manage, my_event) }
|
||||
it{ should_not be_able_to(:manage, other_event) }
|
||||
it{ should be_able_to(:manage, my_event.event_type) }
|
||||
it{ should_not be_able_to(:manage, other_event.event_type) }
|
||||
it{ should be_able_to(:manage, my_event.track) }
|
||||
it{ should_not be_able_to(:manage, other_event.track) }
|
||||
it{ should be_able_to(:manage, my_event.difficulty_level) }
|
||||
it{ should_not be_able_to(:manage, other_event.difficulty_level) }
|
||||
it{ should be_able_to(:manage, my_event.commercials.first) }
|
||||
it{ should_not be_able_to(:manage, other_event.commercials.first) }
|
||||
it{ should be_able_to(:index, my_event.comment_threads.first) }
|
||||
it{ should_not be_able_to(:index, other_event.comment_threads.first) }
|
||||
|
||||
it{ should_not be_able_to(:manage, resource) }
|
||||
it{ should be_able_to(:index, resource) }
|
||||
it{ should be_able_to(:show, resource) }
|
||||
it{ should be_able_to(:update, resource) }
|
||||
it{ should_not be_able_to(:assign_org_admins, organization) }
|
||||
it{ should_not be_able_to(:unassign_org_admins, organization) }
|
||||
|
||||
it_behaves_like 'user with any role'
|
||||
it_behaves_like 'user with non-organizer role', 'cfp'
|
||||
end
|
||||
|
||||
context 'when user has the role info_desk' do
|
||||
let(:role) { Role.find_by(name: 'info_desk', resource: my_conference) }
|
||||
let(:user) { create(:user, role_ids: [role.id]) }
|
||||
|
||||
it{ should_not be_able_to(:new, Conference.new) }
|
||||
it{ should_not be_able_to(:create, Conference.new) }
|
||||
it{ should_not be_able_to(:manage, my_conference) }
|
||||
it{ should_not be_able_to(:manage, conference_public) }
|
||||
it{ should_not be_able_to(:manage, my_conference.splashpage) }
|
||||
it{ should_not be_able_to(:manage, conference_public.splashpage) }
|
||||
it{ should_not be_able_to(:manage, my_conference.contact) }
|
||||
it{ should_not be_able_to(:manage, conference_public.contact) }
|
||||
it{ should_not be_able_to(:manage, my_conference.email_settings) }
|
||||
it{ should_not be_able_to(:manage, conference_public.email_settings) }
|
||||
it{ should_not be_able_to(:manage, my_conference.campaigns.first) }
|
||||
it{ should_not be_able_to(:manage, conference_public.campaigns.first) }
|
||||
it{ should_not be_able_to(:manage, my_conference.targets.first) }
|
||||
it{ should_not be_able_to(:manage, conference_public.targets.first) }
|
||||
it{ should_not be_able_to(:manage, my_conference.commercials.first) }
|
||||
it{ should_not be_able_to(:manage, conference_public.commercials.first) }
|
||||
it{ should_not be_able_to(:manage, my_conference.registration_period) }
|
||||
it{ should_not be_able_to(:manage, conference_public.registration_period) }
|
||||
it{ should be_able_to(:manage, my_conference.questions.first) }
|
||||
it{ should_not be_able_to(:manage, conference_public.questions.first) }
|
||||
it{ should_not be_able_to(:manage, my_conference.program.cfp) }
|
||||
it{ should_not be_able_to(:manage, conference_public.program.cfp) }
|
||||
it{ should_not be_able_to(:manage, my_schedule) }
|
||||
it{ should_not be_able_to(:manage, other_schedule) }
|
||||
it{ should_not be_able_to(:manage, my_event_schedule) }
|
||||
it{ should_not be_able_to(:manage, other_event_schedule) }
|
||||
it{ should_not be_able_to(:manage, my_conference.venue) }
|
||||
it{ should_not be_able_to(:show, my_conference.venue) }
|
||||
it{ should_not be_able_to(:manage, conference_public.venue) }
|
||||
it{ should_not be_able_to(:manage, my_conference.lodgings.first) }
|
||||
it{ should_not be_able_to(:manage, conference_public.lodgings.first) }
|
||||
it{ should_not be_able_to(:manage, my_conference.sponsors.first) }
|
||||
it{ should_not be_able_to(:manage, conference_public.sponsors.first) }
|
||||
it{ should_not be_able_to(:manage, my_conference.sponsorship_levels.first) }
|
||||
it{ should_not be_able_to(:manage, conference_public.sponsorship_levels.first) }
|
||||
it{ should_not be_able_to(:manage, my_conference.tickets.first) }
|
||||
it{ should_not be_able_to(:manage, conference_public.tickets.first) }
|
||||
|
||||
it{ should be_able_to(:manage, my_registration) }
|
||||
it{ should_not be_able_to(:manage, other_registration) }
|
||||
|
||||
it{ should_not be_able_to(:manage, my_event) }
|
||||
it{ should_not be_able_to(:manage, other_event) }
|
||||
it{ should_not be_able_to(:manage, my_event.event_type) }
|
||||
it{ should_not be_able_to(:manage, other_event.event_type) }
|
||||
it{ should_not be_able_to(:manage, my_event.track) }
|
||||
it{ should_not be_able_to(:manage, other_event.track) }
|
||||
it{ should_not be_able_to(:manage, my_event.difficulty_level) }
|
||||
it{ should_not be_able_to(:manage, other_event.difficulty_level) }
|
||||
it{ should_not be_able_to(:manage, my_event.commercials.first) }
|
||||
it{ should_not be_able_to(:manage, other_event.commercials.first) }
|
||||
it{ should_not be_able_to(:index, my_event.comment_threads.first) }
|
||||
it{ should_not be_able_to(:index, other_event.comment_threads.first) }
|
||||
|
||||
it{ should_not be_able_to(:manage, resource) }
|
||||
it{ should be_able_to(:index, resource) }
|
||||
it{ should be_able_to(:show, resource) }
|
||||
it{ should be_able_to(:update, resource) }
|
||||
it{ should_not be_able_to(:assign_org_admins, organization) }
|
||||
it{ should_not be_able_to(:unassign_org_admins, organization) }
|
||||
|
||||
it_behaves_like 'user with any role'
|
||||
it_behaves_like 'user with non-organizer role', 'info_desk'
|
||||
end
|
||||
|
||||
context 'when user has the role volunteers_coordinator' do
|
||||
let(:role) { Role.find_by(name: 'volunteers_coordinator', resource: my_conference) }
|
||||
let(:user) { create(:user, role_ids: [role.id]) }
|
||||
|
||||
it{ should_not be_able_to(:new, Conference.new) }
|
||||
it{ should_not be_able_to(:create, Conference.new) }
|
||||
it{ should_not be_able_to(:manage, my_conference) }
|
||||
it{ should_not be_able_to(:manage, conference_public) }
|
||||
it{ should_not be_able_to(:manage, my_conference.splashpage) }
|
||||
it{ should_not be_able_to(:manage, conference_public.splashpage) }
|
||||
it{ should_not be_able_to(:manage, my_conference.contact) }
|
||||
it{ should_not be_able_to(:manage, conference_public.contact) }
|
||||
it{ should_not be_able_to(:manage, my_conference.email_settings) }
|
||||
it{ should_not be_able_to(:manage, conference_public.email_settings) }
|
||||
it{ should_not be_able_to(:manage, my_conference.campaigns.first) }
|
||||
it{ should_not be_able_to(:manage, conference_public.campaigns.first) }
|
||||
it{ should_not be_able_to(:manage, my_conference.targets.first) }
|
||||
it{ should_not be_able_to(:manage, conference_public.targets.first) }
|
||||
it{ should_not be_able_to(:manage, my_conference.commercials.first) }
|
||||
it{ should_not be_able_to(:manage, conference_public.commercials.first) }
|
||||
it{ should_not be_able_to(:manage, my_conference.registration_period) }
|
||||
it{ should_not be_able_to(:manage, conference_public.registration_period) }
|
||||
it{ should_not be_able_to(:manage, my_conference.questions.first) }
|
||||
it{ should_not be_able_to(:manage, conference_public.questions.first) }
|
||||
it{ should_not be_able_to(:manage, my_conference.program.cfp) }
|
||||
it{ should_not be_able_to(:manage, conference_public.program.cfp) }
|
||||
it{ should_not be_able_to(:manage, my_schedule) }
|
||||
it{ should_not be_able_to(:manage, other_schedule) }
|
||||
it{ should_not be_able_to(:manage, my_event_schedule) }
|
||||
it{ should_not be_able_to(:manage, other_event_schedule) }
|
||||
it{ should_not be_able_to(:manage, my_conference.venue) }
|
||||
it{ should_not be_able_to(:show, my_conference.venue) }
|
||||
it{ should_not be_able_to(:manage, conference_public.venue) }
|
||||
it{ should_not be_able_to(:manage, my_conference.lodgings.first) }
|
||||
it{ should_not be_able_to(:manage, conference_public.lodgings.first) }
|
||||
it{ should_not be_able_to(:manage, my_conference.sponsors.first) }
|
||||
it{ should_not be_able_to(:manage, conference_public.sponsors.first) }
|
||||
it{ should_not be_able_to(:manage, my_conference.sponsorship_levels.first) }
|
||||
it{ should_not be_able_to(:manage, conference_public.sponsorship_levels.first) }
|
||||
it{ should_not be_able_to(:manage, my_conference.tickets.first) }
|
||||
it{ should_not be_able_to(:manage, conference_public.tickets.first) }
|
||||
|
||||
it{ should_not be_able_to(:manage, registration) }
|
||||
it{ should_not be_able_to(:manage, other_registration) }
|
||||
|
||||
it{ should_not be_able_to(:manage, my_event) }
|
||||
it{ should_not be_able_to(:manage, other_event) }
|
||||
it{ should_not be_able_to(:manage, my_event.event_type) }
|
||||
it{ should_not be_able_to(:manage, other_event.event_type) }
|
||||
it{ should_not be_able_to(:manage, my_event.track) }
|
||||
it{ should_not be_able_to(:manage, other_event.track) }
|
||||
it{ should_not be_able_to(:manage, my_event.difficulty_level) }
|
||||
it{ should_not be_able_to(:manage, other_event.difficulty_level) }
|
||||
it{ should_not be_able_to(:manage, my_event.commercials.first) }
|
||||
it{ should_not be_able_to(:manage, other_event.commercials.first) }
|
||||
it{ should_not be_able_to(:index, my_event.comment_threads.first) }
|
||||
it{ should_not be_able_to(:index, other_event.comment_threads.first) }
|
||||
|
||||
it{ should_not be_able_to(:manage, resource) }
|
||||
it{ should be_able_to(:index, resource) }
|
||||
it{ should be_able_to(:show, resource) }
|
||||
it{ should be_able_to(:update, resource) }
|
||||
it{ should_not be_able_to(:assign_org_admins, organization) }
|
||||
it{ should_not be_able_to(:unassign_org_admins, organization) }
|
||||
|
||||
it 'should be_able to :manage Vposition'
|
||||
it 'should be_able to :manage Vday'
|
||||
|
||||
it_behaves_like 'user with any role'
|
||||
it_behaves_like 'user with non-organizer role', 'volunteers_coordinator'
|
||||
end
|
||||
|
||||
context 'when user has the role track_organizer' do
|
||||
|
||||
let(:role) { Role.where(name: 'track_organizer', resource: my_self_organized_track).first_or_create }
|
||||
let(:user) { create(:user, role_ids: [role.id]) }
|
||||
let(:new_track) { build(:track, program: my_conference.program) }
|
||||
let(:new_event) { build(:event, program: my_conference.program) }
|
||||
let(:new_schedule) { build(:schedule, program: my_conference.program) }
|
||||
let(:new_track_schedule) { build(:schedule, program: my_conference.program, track: new_track) }
|
||||
let(:my_self_organized_track_event) { create(:event, program: my_conference.program, track: my_self_organized_track) }
|
||||
let(:my_self_organized_track_event_commercial) { create(:commercial, commercialable: my_self_organized_track_event) }
|
||||
let(:my_self_organized_track_schedule) { create(:schedule, program: my_conference.program, track: my_self_organized_track) }
|
||||
let(:my_self_organized_track_event_schedule) { create(:event_schedule, event: my_self_organized_track_event, schedule: my_self_organized_track_schedule, room: my_self_organized_track.room) }
|
||||
|
||||
it{ should_not be_able_to(:new, Conference.new) }
|
||||
it{ should_not be_able_to(:create, Conference.new) }
|
||||
it{ should_not be_able_to(:manage, my_conference) }
|
||||
it{ should_not be_able_to(:manage, conference_public) }
|
||||
it{ should_not be_able_to(:manage, my_conference.splashpage) }
|
||||
it{ should_not be_able_to(:manage, conference_public.splashpage) }
|
||||
it{ should_not be_able_to(:manage, my_conference.contact) }
|
||||
it{ should_not be_able_to(:manage, conference_public.contact) }
|
||||
it{ should_not be_able_to(:manage, my_conference.email_settings) }
|
||||
it{ should_not be_able_to(:manage, conference_public.email_settings) }
|
||||
it{ should_not be_able_to(:manage, my_conference.campaigns.first) }
|
||||
it{ should_not be_able_to(:manage, conference_public.campaigns.first) }
|
||||
it{ should_not be_able_to(:manage, my_conference.targets.first) }
|
||||
it{ should_not be_able_to(:manage, conference_public.targets.first) }
|
||||
it{ should_not be_able_to(:manage, my_conference.commercials.first) }
|
||||
it{ should_not be_able_to(:manage, conference_public.commercials.first) }
|
||||
it{ should_not be_able_to(:manage, my_conference.registration_period) }
|
||||
it{ should_not be_able_to(:manage, conference_public.registration_period) }
|
||||
it{ should_not be_able_to(:manage, my_conference.questions.first) }
|
||||
it{ should_not be_able_to(:manage, conference_public.questions.first) }
|
||||
it{ should_not be_able_to(:manage, my_conference.program.cfp) }
|
||||
it{ should_not be_able_to(:manage, conference_public.program.cfp) }
|
||||
it{ should_not be_able_to(:manage, my_schedule) }
|
||||
it{ should_not be_able_to(:manage, other_schedule) }
|
||||
it{ should_not be_able_to(:manage, my_event_schedule) }
|
||||
it{ should_not be_able_to(:manage, other_event_schedule) }
|
||||
it{ should_not be_able_to(:manage, my_conference.venue) }
|
||||
it{ should_not be_able_to(:show, my_conference.venue) }
|
||||
it{ should_not be_able_to(:manage, conference_public.venue) }
|
||||
it{ should_not be_able_to(:manage, my_conference.lodgings.first) }
|
||||
it{ should_not be_able_to(:manage, conference_public.lodgings.first) }
|
||||
it{ should_not be_able_to(:manage, my_conference.sponsors.first) }
|
||||
it{ should_not be_able_to(:manage, conference_public.sponsors.first) }
|
||||
it{ should_not be_able_to(:manage, my_conference.sponsorship_levels.first) }
|
||||
it{ should_not be_able_to(:manage, conference_public.sponsorship_levels.first) }
|
||||
it{ should_not be_able_to(:manage, my_conference.tickets.first) }
|
||||
it{ should_not be_able_to(:manage, conference_public.tickets.first) }
|
||||
|
||||
it{ should_not be_able_to(:manage, registration) }
|
||||
it{ should_not be_able_to(:manage, other_registration) }
|
||||
|
||||
it{ should_not be_able_to(:manage, my_event) }
|
||||
it{ should_not be_able_to(:manage, other_event) }
|
||||
it{ should_not be_able_to(:manage, my_event.event_type) }
|
||||
it{ should_not be_able_to(:manage, other_event.event_type) }
|
||||
it{ should_not be_able_to(:manage, my_event.track) }
|
||||
it{ should_not be_able_to(:manage, other_event.track) }
|
||||
it{ should_not be_able_to(:manage, my_event.difficulty_level) }
|
||||
it{ should_not be_able_to(:manage, other_event.difficulty_level) }
|
||||
it{ should_not be_able_to(:manage, my_event.commercials.first) }
|
||||
it{ should_not be_able_to(:manage, other_event.commercials.first) }
|
||||
it{ should_not be_able_to(:index, my_event.comment_threads.first) }
|
||||
it{ should_not be_able_to(:index, other_event.comment_threads.first) }
|
||||
|
||||
it{ should_not be_able_to(:manage, resource) }
|
||||
|
||||
it{ should be_able_to(:show, my_conference.program) }
|
||||
it{ should be_able_to(:update, new_track) }
|
||||
it{ should be_able_to(:manage, my_self_organized_track) }
|
||||
it{ should_not be_able_to(:edit, my_self_organized_track) }
|
||||
it{ should_not be_able_to(:update, my_self_organized_track) }
|
||||
|
||||
it{ should_not be_able_to(:assign_org_admins, organization) }
|
||||
it{ should_not be_able_to(:unassign_org_admins, organization) }
|
||||
|
||||
it{ should be_able_to(:update, new_event) }
|
||||
it{ should be_able_to(:manage, my_self_organized_track_event) }
|
||||
it{ should be_able_to(:manage, my_self_organized_track_event_commercial) }
|
||||
|
||||
it{ should be_able_to(:update, new_schedule) }
|
||||
it{ should be_able_to(:new, new_track_schedule) }
|
||||
it{ should be_able_to(:manage, my_self_organized_track_schedule) }
|
||||
it{ should be_able_to(:manage, my_self_organized_track_event_schedule) }
|
||||
|
||||
it_behaves_like 'user with any role'
|
||||
it_behaves_like 'user with non-organizer role', 'track_organizer'
|
||||
end
|
||||
end
|
||||
end
|
||||
Loading…
Add table
Add a link
Reference in a new issue