From a0ad5fc4e6ee37d69023ca04673ced34e82545fe Mon Sep 17 00:00:00 2001 From: Aaron Contreras Date: Mon, 8 Jan 2024 10:53:56 -0500 Subject: [PATCH] Extract base permission set into shared example caller This cleans up the readability of the spec given it's used in multiple contexts. Easier to parse when you can refer directly from the caller you're trying to inspect. --- .../projects/available_assignees_api_spec.rb | 1 + .../available_responsibles_api_spec.rb | 1 + .../available_assignees_api_spec.rb | 1 + .../shared_available_principals_examples.rb | 24 +++---------------- 4 files changed, 6 insertions(+), 21 deletions(-) diff --git a/spec/requests/api/v3/projects/available_assignees_api_spec.rb b/spec/requests/api/v3/projects/available_assignees_api_spec.rb index 66aefc2e7b6..7132418a418 100644 --- a/spec/requests/api/v3/projects/available_assignees_api_spec.rb +++ b/spec/requests/api/v3/projects/available_assignees_api_spec.rb @@ -32,6 +32,7 @@ RSpec.describe "API::V3::Projects::AvailableAssigneesAPI" do include API::V3::Utilities::PathHelper it_behaves_like 'available principals', :assignees do + let(:base_permissions) { %i[add_work_packages] } let(:href) { api_v3_paths.available_assignees_in_project(project.id) } end end diff --git a/spec/requests/api/v3/projects/available_responsibles_api_spec.rb b/spec/requests/api/v3/projects/available_responsibles_api_spec.rb index 9a2ab272006..59535db24a5 100644 --- a/spec/requests/api/v3/projects/available_responsibles_api_spec.rb +++ b/spec/requests/api/v3/projects/available_responsibles_api_spec.rb @@ -32,6 +32,7 @@ RSpec.describe "API::V3::Projects::AvailableResponsiblesAPI" do include API::V3::Utilities::PathHelper it_behaves_like 'available principals', :responsibles do + let(:base_permissions) { %i[view_work_packages] } let(:href) { api_v3_paths.available_responsibles(project.id) } end end diff --git a/spec/requests/api/v3/work_packages/available_assignees_api_spec.rb b/spec/requests/api/v3/work_packages/available_assignees_api_spec.rb index f81facf9813..1b84855a960 100644 --- a/spec/requests/api/v3/work_packages/available_assignees_api_spec.rb +++ b/spec/requests/api/v3/work_packages/available_assignees_api_spec.rb @@ -32,6 +32,7 @@ RSpec.describe "API::V3::WorkPackages::AvailableAssigneesAPI" do include API::V3::Utilities::PathHelper it_behaves_like 'available principals', :assignees, work_package_scope: true do + let(:base_permissions) { %i[edit_work_packages view_work_packages] } let(:href) { api_v3_paths.available_assignees_in_work_package(work_package.id) } end end diff --git a/spec/support/api/v3/shared_available_principals_examples.rb b/spec/support/api/v3/shared_available_principals_examples.rb index b17338f2362..413f80c8e25 100644 --- a/spec/support/api/v3/shared_available_principals_examples.rb +++ b/spec/support/api/v3/shared_available_principals_examples.rb @@ -52,13 +52,7 @@ RSpec.shared_examples_for 'available principals' do |principals, work_package_sc create(:placeholder_user, member_with_roles: { project => assignable_project_role }) end - let(:permissions) do - if work_package_scope - %i[edit_work_packages view_work_packages] - else - %i[add_work_packages] - end - end + let(:permissions) { base_permissions } let(:assignable_permissions) { [:work_package_assigned] } @@ -74,13 +68,7 @@ RSpec.shared_examples_for 'available principals' do |principals, work_package_sc end describe 'users' do - let(:permissions) do - if work_package_scope - %i[edit_work_packages view_work_packages work_package_assigned] - else - %i[add_work_packages work_package_assigned] - end - end + let(:permissions) { base_permissions + assignable_permissions } context 'for a single user' do # The current user @@ -103,13 +91,7 @@ RSpec.shared_examples_for 'available principals' do |principals, work_package_sc end context 'if the user lacks the assignable permission' do - let(:permissions) do - if work_package_scope - %i[edit_work_packages view_work_packages] - else - %i[add_work_packages] - end - end + let(:permissions) { base_permissions } it_behaves_like "returns available #{principals}", 0, 0, 'User' end