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.
This commit is contained in:
Aaron Contreras
2024-01-08 10:53:56 -05:00
parent 8bb67bcc2b
commit a0ad5fc4e6
4 changed files with 6 additions and 21 deletions
@@ -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
@@ -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
@@ -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
@@ -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