From e5879eb60628e1d9713c43875ea61273529ec8d9 Mon Sep 17 00:00:00 2001 From: Sebastian Serth Date: Mon, 22 Aug 2022 13:15:52 +0200 Subject: [PATCH] Simplify permission specs * Remove iteration if not required * Unify usage of parentheses for `permissions` call --- spec/policies/codeharbor_link_policy_spec.rb | 4 +- .../execution_environment_policy_spec.rb | 22 +++++----- spec/policies/exercise_policy_spec.rb | 44 ++++++++----------- spec/policies/external_user_policy_spec.rb | 14 +++--- 4 files changed, 37 insertions(+), 47 deletions(-) diff --git a/spec/policies/codeharbor_link_policy_spec.rb b/spec/policies/codeharbor_link_policy_spec.rb index 550700c1..f3541e50 100644 --- a/spec/policies/codeharbor_link_policy_spec.rb +++ b/spec/policies/codeharbor_link_policy_spec.rb @@ -54,7 +54,7 @@ describe CodeharborLinkPolicy do end end - permissions(:enabled?) do + permissions :enabled? do it 'reflects the config option' do %i[external_user admin teacher].each do |factory_name| expect(policy).to permit(create(factory_name), codeharbor_link) @@ -72,7 +72,7 @@ describe CodeharborLinkPolicy do allow(codeocean_config).to receive(:read).and_return(codeharbor_config) end - permissions(:enabled?) do + permissions :enabled? do it 'reflects the config option' do %i[external_user admin teacher].each do |factory_name| expect(policy).not_to permit(create(factory_name), codeharbor_link) diff --git a/spec/policies/execution_environment_policy_spec.rb b/spec/policies/execution_environment_policy_spec.rb index 651e9555..5654f920 100644 --- a/spec/policies/execution_environment_policy_spec.rb +++ b/spec/policies/execution_environment_policy_spec.rb @@ -7,19 +7,17 @@ describe ExecutionEnvironmentPolicy do let(:execution_environment) { build(:ruby) } - [:index?].each do |action| - permissions(action) do - it 'grants access to admins' do - expect(policy).to permit(build(:admin), execution_environment) - end + permissions :index? do + it 'grants access to admins' do + expect(policy).to permit(build(:admin), execution_environment) + end - it 'grants access to teachers' do - expect(policy).to permit(build(:teacher), execution_environment) - end + it 'grants access to teachers' do + expect(policy).to permit(build(:teacher), execution_environment) + end - it 'does not grant access to external users' do - expect(policy).not_to permit(build(:external_user), execution_environment) - end + it 'does not grant access to external users' do + expect(policy).not_to permit(build(:external_user), execution_environment) end end @@ -59,7 +57,7 @@ describe ExecutionEnvironmentPolicy do end end - permissions(:sync_all_to_runner_management?) do + permissions :sync_all_to_runner_management? do it 'grants access to the admin' do expect(policy).to permit(build(:admin)) end diff --git a/spec/policies/exercise_policy_spec.rb b/spec/policies/exercise_policy_spec.rb index d2b8aca3..e890fa7c 100644 --- a/spec/policies/exercise_policy_spec.rb +++ b/spec/policies/exercise_policy_spec.rb @@ -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 diff --git a/spec/policies/external_user_policy_spec.rb b/spec/policies/external_user_policy_spec.rb index 5494b6fc..8e752327 100644 --- a/spec/policies/external_user_policy_spec.rb +++ b/spec/policies/external_user_policy_spec.rb @@ -16,14 +16,12 @@ describe ExternalUserPolicy do end end - [:index?].each do |action| - permissions(action) do - it 'grants access to admins and teachers only' do - expect(policy).to permit(build(:admin), ExternalUser.new) - expect(policy).to permit(build(:teacher), ExternalUser.new) - [:external_user].each do |factory_name| - expect(policy).not_to permit(build(factory_name), ExternalUser.new) - end + permissions :index? do + it 'grants access to admins and teachers only' do + expect(policy).to permit(build(:admin), ExternalUser.new) + expect(policy).to permit(build(:teacher), ExternalUser.new) + [:external_user].each do |factory_name| + expect(policy).not_to permit(build(factory_name), ExternalUser.new) end end end