Simplify permission specs

* Remove iteration if not required
* Unify usage of parentheses for `permissions` call
This commit is contained in:
Sebastian Serth
2022-08-22 13:15:52 +02:00
committed by Sebastian Serth
parent e0c2c7b806
commit e5879eb606
4 changed files with 37 additions and 47 deletions

View File

@ -104,41 +104,35 @@ describe ExercisePolicy do
end
end
[:show?].each do |action|
permissions(action) do
it 'not grants access to external users' do
expect(policy).not_to permit(build(:external_user), exercise)
permissions :show? do
it 'not grants access to external users' do
expect(policy).not_to permit(build(:external_user), exercise)
end
end
permissions :implement? do
it 'grants access to anyone' do
%i[admin external_user teacher].each do |factory_name|
expect(policy).to permit(build(factory_name), Exercise.new)
end
end
end
%i[implement?].each do |action|
permissions(action) do
permissions :submit? do
context 'when teacher-defined assessments are available' do
before { create(:test_file, context: exercise) }
it 'grants access to anyone' do
%i[admin external_user teacher].each do |factory_name|
expect(policy).to permit(build(factory_name), Exercise.new)
expect(policy).to permit(build(factory_name), exercise)
end
end
end
end
%i[submit?].each do |action|
permissions(action) do
context 'when teacher-defined assessments are available' do
before { create(:test_file, context: exercise) }
it 'grants access to anyone' do
%i[admin external_user teacher].each do |factory_name|
expect(policy).to permit(build(factory_name), exercise)
end
end
end
context 'when teacher-defined assessments are not available' do
it 'does not grant access to anyone' do
%i[admin external_user teacher].each do |factory_name|
expect(policy).not_to permit(build(factory_name), exercise)
end
context 'when teacher-defined assessments are not available' do
it 'does not grant access to anyone' do
%i[admin external_user teacher].each do |factory_name|
expect(policy).not_to permit(build(factory_name), exercise)
end
end
end