Use linear version User#groups_with_developer_maintainer_project_access

Changelog: performance
parent fe5831c6
...@@ -2117,9 +2117,12 @@ class User < ApplicationRecord ...@@ -2117,9 +2117,12 @@ class User < ApplicationRecord
project_creation_levels << nil project_creation_levels << nil
end end
if Feature.enabled?(:linear_user_groups_with_developer_maintainer_project_access, self, default_enabled: :yaml)
developer_groups.self_and_descendants.where(project_creation_level: project_creation_levels)
else
developer_groups_hierarchy = ::Gitlab::ObjectHierarchy.new(developer_groups).base_and_descendants developer_groups_hierarchy = ::Gitlab::ObjectHierarchy.new(developer_groups).base_and_descendants
::Group.where(id: developer_groups_hierarchy.select(:id), ::Group.where(id: developer_groups_hierarchy.select(:id), project_creation_level: project_creation_levels)
project_creation_level: project_creation_levels) end
end end
def no_recent_activity? def no_recent_activity?
......
---
name: linear_user_groups_with_developer_maintainer_project_access
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/68851
rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/339436
milestone: '14.3'
type: development
group: group::access
default_enabled: false
...@@ -5999,4 +5999,49 @@ RSpec.describe User do ...@@ -5999,4 +5999,49 @@ RSpec.describe User do
end end
end end
end end
describe '#groups_with_developer_maintainer_project_access' do
let_it_be(:user) { create(:user) }
let_it_be(:group1) { create(:group) }
let_it_be(:developer_group1) do
create(:group).tap do |g|
g.add_developer(user)
end
end
let_it_be(:developer_group2) do
create(:group, project_creation_level: ::Gitlab::Access::DEVELOPER_MAINTAINER_PROJECT_ACCESS).tap do |g|
g.add_developer(user)
end
end
let_it_be(:guest_group1) do
create(:group, project_creation_level: ::Gitlab::Access::DEVELOPER_MAINTAINER_PROJECT_ACCESS).tap do |g|
g.add_guest(user)
end
end
let_it_be(:developer_group1) do
create(:group, project_creation_level: ::Gitlab::Access::DEVELOPER_MAINTAINER_PROJECT_ACCESS).tap do |g|
g.add_maintainer(user)
end
end
subject { user.send(:groups_with_developer_maintainer_project_access) }
shared_examples 'groups_with_developer_maintainer_project_access examples' do
specify { is_expected.to contain_exactly(developer_group2) }
end
it_behaves_like 'groups_with_developer_maintainer_project_access examples'
context 'when feature flag :linear_user_groups_with_developer_maintainer_project_access is disabled' do
before do
stub_feature_flags(linear_user_groups_with_developer_maintainer_project_access: false)
end
it_behaves_like 'groups_with_developer_maintainer_project_access examples'
end
end
end end
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment