diff --git a/app/views/shared/issuable/_sidebar_assignees.html.haml b/app/views/shared/issuable/_sidebar_assignees.html.haml index c5cce1823f0..1a59055f652 100644 --- a/app/views/shared/issuable/_sidebar_assignees.html.haml +++ b/app/views/shared/issuable/_sidebar_assignees.html.haml @@ -25,7 +25,7 @@ .value.hide-collapsed - if issuable_sidebar[:assignee] = link_to_member(@project, assignee, size: 32, extra_class: 'bold') do - - if issuable_sidebar[:assignee][:can_merge] + - unless issuable_sidebar[:assignee][:can_merge] %span.float-right.cannot-be-merged{ data: { toggle: 'tooltip', placement: 'left' }, title: _('Not allowed to merge') } = icon('exclamation-triangle', 'aria-hidden': 'true') %span.username diff --git a/spec/views/projects/merge_requests/show.html.haml_spec.rb b/spec/views/projects/merge_requests/show.html.haml_spec.rb index b0042be339c..d9bda1a3414 100644 --- a/spec/views/projects/merge_requests/show.html.haml_spec.rb +++ b/spec/views/projects/merge_requests/show.html.haml_spec.rb @@ -32,11 +32,7 @@ describe 'projects/merge_requests/show.html.haml' do assign(:noteable, closed_merge_request) assign(:notes, []) assign(:pipelines, Ci::Pipeline.none) - assign( - :issuable_sidebar, - MergeRequestSerializer.new(current_user: user, project: project) - .represent(closed_merge_request, serializer: 'sidebar') - ) + assign(:issuable_sidebar, serialize_issuable_sidebar(user, project, closed_merge_request)) preload_view_requirements @@ -45,6 +41,33 @@ describe 'projects/merge_requests/show.html.haml' do current_application_settings: Gitlab::CurrentSettings.current_application_settings) end + describe 'merge request assignee sidebar' do + context 'when assignee is allowed to merge' do + it 'does not show a warning icon' do + closed_merge_request.update(assignee_id: user.id) + project.add_maintainer(user) + assign(:issuable_sidebar, serialize_issuable_sidebar(user, project, closed_merge_request)) + + render + + expect(rendered).not_to have_css('.cannot-be-merged') + end + end + + context 'when assignee is not allowed to merge' do + it 'shows a warning icon' do + reporter = create(:user) + project.add_reporter(reporter) + closed_merge_request.update(assignee_id: reporter.id) + assign(:issuable_sidebar, serialize_issuable_sidebar(user, project, closed_merge_request)) + + render + + expect(rendered).to have_css('.cannot-be-merged') + end + end + end + context 'when the merge request is closed' do it 'shows the "Reopen" button' do render @@ -80,4 +103,10 @@ describe 'projects/merge_requests/show.html.haml' do expect(rendered).to have_css('a', visible: false, text: 'Close') end end + + def serialize_issuable_sidebar(user, project, merge_request) + MergeRequestSerializer + .new(current_user: user, project: project) + .represent(closed_merge_request, serializer: 'sidebar') + end end