Skip to content

Commit

Permalink
Rewrite inherited membership method
Browse files Browse the repository at this point in the history
  • Loading branch information
HDinger committed Nov 23, 2023
1 parent 263bc63 commit b21d7b4
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 18 deletions.
8 changes: 5 additions & 3 deletions app/components/work_packages/share/user_details_component.rb
Expand Up @@ -98,9 +98,11 @@ def project_member?

# Explicitly check whether the project membership was inherited by a group
def inherited_project_member?
project_member? &&
Member.where(user_id: GroupUser.where(user_id: user.id).map(&:group_id)).any? &&
Member.where(user_id: user.id).any?
Member.includes(:roles)
.references(:member_roles)
.where(project: share.project, principal: user, entity: nil) # membership in the project
.merge(MemberRole.only_inherited) # that was inherited
.any?
end

def project_group?
Expand Down
35 changes: 20 additions & 15 deletions spec/components/work_packages/share/user_details_component_spec.rb
Expand Up @@ -43,11 +43,11 @@

let(:invite_resent) { false }

def build_inherited_share(group_share:, user_share:)
def build_inherited_membership(group_membership:, user_membership:, role: work_package_role)
create(:member_role,
member: user_share,
role: work_package_role,
inherited_from: group_share.member_roles.first.id)
member: user_membership,
role:,
inherited_from: group_membership.member_roles.first.id)
end

describe 'when not in manager mode' do
Expand Down Expand Up @@ -176,7 +176,7 @@ def build_inherited_share(group_share:, user_share:)
entity: work_package,
roles: [work_package_role])

build_inherited_share(group_share:, user_share: share)
build_inherited_membership(group_membership: group_share, user_membership: share)
end

context 'and the user is not a project member' do
Expand Down Expand Up @@ -300,9 +300,7 @@ def build_inherited_share(group_share:, user_share:)
end

context 'when the user is a project member' do
before do
create(:member, project:, principal:, roles: [project_role])
end
shared_let(:user_membership) { create(:member, project:, principal:, roles: [project_role]) }

context 'and the user is not part of any group' do
it do
Expand All @@ -318,7 +316,12 @@ def build_inherited_share(group_share:, user_share:)

context 'and the group is a project member itself' do
before do
create(:member, project:, principal: group, roles: [project_role])
group_membership = create(:member,
project:,
principal: group,
roles: [project_role])

build_inherited_membership(group_membership:, user_membership:, role: project_role)
end

context 'and the group is shared with' do
Expand All @@ -328,7 +331,7 @@ def build_inherited_share(group_share:, user_share:)
entity: work_package,
roles: [work_package_role])

build_inherited_share(group_share:, user_share: share)
build_inherited_membership(group_membership: group_share, user_membership: share)
end

it do
Expand Down Expand Up @@ -359,7 +362,7 @@ def build_inherited_share(group_share:, user_share:)
entity: work_package,
roles: [work_package_role])

build_inherited_share(group_share:, user_share: share)
build_inherited_membership(group_membership: group_share, user_membership: share)
end

it do
Expand Down Expand Up @@ -399,8 +402,10 @@ def build_inherited_share(group_share:, user_share:)

context 'and the group is a project member itself' do
before do
create(:member, project:, principal: group, roles: [project_role])
create(:member, project:, principal:, roles: [project_role])
group_membership = create(:member, project:, principal: group, roles: [project_role])
user_membership = create(:member, project:, principal:, roles: [project_role])

build_inherited_membership(group_membership:, user_membership:, role: project_role)
end

context 'and the group is shared with' do
Expand All @@ -410,7 +415,7 @@ def build_inherited_share(group_share:, user_share:)
entity: work_package,
roles: [work_package_role])

build_inherited_share(group_share:, user_share: share)
build_inherited_membership(group_membership: group_share, user_membership: share)
end

it do
Expand Down Expand Up @@ -441,7 +446,7 @@ def build_inherited_share(group_share:, user_share:)
entity: work_package,
roles: [work_package_role])

build_inherited_share(group_share:, user_share: share)
build_inherited_membership(group_membership: group_share, user_membership: share)
end

it do
Expand Down

0 comments on commit b21d7b4

Please sign in to comment.