diff --git a/ee/app/helpers/ee/issuables_helper.rb b/ee/app/helpers/ee/issuables_helper.rb index 9dcd2d0de8b4cb3922a383259dabb8dc8fe03dfb..b72b6429fa75f4f2b784cde7bd45f1e73e8319e8 100644 --- a/ee/app/helpers/ee/issuables_helper.rb +++ b/ee/app/helpers/ee/issuables_helper.rb @@ -27,6 +27,7 @@ def issuable_initial_data(issuable) data[:issueLinksEndpoint] = group_epic_issues_path(parent, issuable) data[:issuesWebUrl] = issues_group_path(parent) data[:projectsEndpoint] = expose_path(api_v4_groups_projects_path(id: parent.id)) + data[:canAdminRelation] = can?(current_user, :admin_epic_relation, issuable) end data diff --git a/ee/spec/helpers/ee/issuables_helper_spec.rb b/ee/spec/helpers/ee/issuables_helper_spec.rb index 025bfc8ee94410021635642ac50af7f810e50727..2ef3161b968256cc2026129ca682e5a2f0f04019 100644 --- a/ee/spec/helpers/ee/issuables_helper_spec.rb +++ b/ee/spec/helpers/ee/issuables_helper_spec.rb @@ -2,27 +2,28 @@ require 'spec_helper' -RSpec.describe IssuablesHelper do +RSpec.describe IssuablesHelper, feature_category: :team_planning do let_it_be(:user) { create(:user) } describe '#issuable_initial_data' do + let(:permission) { true } + before do allow(helper).to receive(:current_user).and_return(user) - allow(helper).to receive(:can?).and_return(true) + allow(helper).to receive(:can?).and_return(permission) stub_commonmark_sourcepos_disabled end context 'for an epic' do let_it_be(:epic) { create(:epic, author: user, description: 'epic text', confidential: true) } - it 'returns the correct data' do - @group = epic.group - - expected_data = { - canAdmin: true, - canDestroy: true, - canUpdate: true, - canUpdateTimelineEvent: true, + let(:expected_data) do + { + canAdmin: permission, + canAdminRelation: permission, + canDestroy: permission, + canUpdate: permission, + canUpdateTimelineEvent: permission, confidential: epic.confidential, endpoint: "/groups/#{@group.full_path}/-/epics/#{epic.iid}", epicLinksEndpoint: "/groups/#{@group.full_path}/-/epics/#{epic.iid}/links", @@ -46,8 +47,23 @@ projectsEndpoint: "/api/v4/groups/#{@group.id}/projects", updateEndpoint: "/groups/#{@group.full_path}/-/epics/#{epic.iid}.json" } + end + + before do + @group = epic.group + end + + it 'returns the correct data when permissions allowed' do expect(helper.issuable_initial_data(epic)).to eq(expected_data) end + + context 'when permissions denied' do + let(:permission) { false } + + it 'returns the correct data' do + expect(helper.issuable_initial_data(epic)).to eq(expected_data) + end + end end context 'for an issue' do