mirror of
https://github.com/opf/openproject.git
synced 2026-06-14 03:30:14 +00:00
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:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user