Commit 9c2d0d87 authored by Lin Jen-Shin's avatar Lin Jen-Shin

Merge branch 'jp-label-fix' into 'master'

Fix display of promote to group label

Closes #62200

See merge request gitlab-org/gitlab-ce!28637
parents 2d12e222 4df0e259
...@@ -5,7 +5,7 @@ module LabelsHelper ...@@ -5,7 +5,7 @@ module LabelsHelper
include ActionView::Helpers::TagHelper include ActionView::Helpers::TagHelper
def show_label_issuables_link?(label, issuables_type, current_user: nil, project: nil) def show_label_issuables_link?(label, issuables_type, current_user: nil, project: nil)
return true if label.is_a?(GroupLabel) return true unless label.project_label?
return true unless project return true unless project
project.feature_available?(issuables_type, current_user) project.feature_available?(issuables_type, current_user)
...@@ -159,13 +159,6 @@ module LabelsHelper ...@@ -159,13 +159,6 @@ module LabelsHelper
label.subscribed?(current_user, project) ? 'Unsubscribe' : 'Subscribe' label.subscribed?(current_user, project) ? 'Unsubscribe' : 'Subscribe'
end end
def label_deletion_confirm_text(label)
case label
when GroupLabel then _('Remove this label? This will affect all projects within the group. Are you sure?')
when ProjectLabel then _('Remove this label? Are you sure?')
end
end
def create_label_title(subject) def create_label_title(subject)
case subject case subject
when Group when Group
...@@ -200,7 +193,7 @@ module LabelsHelper ...@@ -200,7 +193,7 @@ module LabelsHelper
end end
def label_status_tooltip(label, status) def label_status_tooltip(label, status)
type = label.is_a?(ProjectLabel) ? 'project' : 'group' type = label.project_label? ? 'project' : 'group'
level = status.unsubscribed? ? type : status.sub('-level', '') level = status.unsubscribed? ? type : status.sub('-level', '')
action = status.unsubscribed? ? 'Subscribe' : 'Unsubscribe' action = status.unsubscribed? ? 'Subscribe' : 'Unsubscribe'
......
...@@ -35,6 +35,14 @@ class LabelPresenter < Gitlab::View::Presenter::Delegated ...@@ -35,6 +35,14 @@ class LabelPresenter < Gitlab::View::Presenter::Delegated
issuable_subject.is_a?(Project) && label.is_a?(GroupLabel) issuable_subject.is_a?(Project) && label.is_a?(GroupLabel)
end end
def project_label?
label.is_a?(ProjectLabel)
end
def subject_name
label.subject.name
end
private private
def context_subject def context_subject
......
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
.modal-body .modal-body
%p %p
%strong= label.name %strong= label.name
%span will be permanently deleted from #{label.subject.name}. This cannot be undone. %span will be permanently deleted from #{label.subject_name}. This cannot be undone.
.modal-footer .modal-footer
%a{ href: '#', data: { dismiss: 'modal' }, class: 'btn btn-default' } Cancel %a{ href: '#', data: { dismiss: 'modal' }, class: 'btn btn-default' } Cancel
......
...@@ -30,7 +30,7 @@ ...@@ -30,7 +30,7 @@
= sprite_icon('ellipsis_v') = sprite_icon('ellipsis_v')
.dropdown-menu.dropdown-open-left .dropdown-menu.dropdown-open-left
%ul %ul
- if label.is_a?(ProjectLabel) && label.project.group && can?(current_user, :admin_label, label.project.group) - if label.project_label? && label.project.group && can?(current_user, :admin_label, label.project.group)
%li %li
%button.js-promote-project-label-button.btn.btn-transparent.btn-action{ disabled: true, type: 'button', %button.js-promote-project-label-button.btn.btn-transparent.btn-action{ disabled: true, type: 'button',
data: { url: promote_project_label_path(label.project, label), data: { url: promote_project_label_path(label.project, label),
......
---
title: Fix display of 'Promote to group label' button.
merge_request:
author:
type: fixed
...@@ -8112,12 +8112,6 @@ msgstr "" ...@@ -8112,12 +8112,6 @@ msgstr ""
msgid "Remove spent time" msgid "Remove spent time"
msgstr "" msgstr ""
msgid "Remove this label? Are you sure?"
msgstr ""
msgid "Remove this label? This will affect all projects within the group. Are you sure?"
msgstr ""
msgid "Remove time estimate" msgid "Remove time estimate"
msgstr "" msgstr ""
......
# frozen_string_literal: true
require 'spec_helper'
describe 'User promotes label' do
set(:group) { create(:group) }
set(:user) { create(:user) }
set(:project) { create(:project, namespace: group) }
set(:label) { create(:label, project: project) }
context 'when user can admin group labels' do
before do
group.add_developer(user)
sign_in(user)
visit(project_labels_path(project))
end
it "shows label promote button" do
expect(page).to have_selector('.js-promote-project-label-button')
end
end
context 'when user cannot admin group labels' do
before do
project.add_developer(user)
sign_in(user)
visit(project_labels_path(project))
end
it "does not show label promote button" do
expect(page).not_to have_selector('.js-promote-project-label-button')
end
end
end
...@@ -21,8 +21,11 @@ describe "User removes labels" do ...@@ -21,8 +21,11 @@ describe "User removes labels" do
page.first(".label-list-item") do page.first(".label-list-item") do
first('.js-label-options-dropdown').click first('.js-label-options-dropdown').click
first(".remove-row").click first(".remove-row").click
first(:link, "Delete label").click
end end
expect(page).to have_content("#{label.title} will be permanently deleted from #{project.name}. This cannot be undone.")
first(:link, "Delete label").click
end end
expect(page).to have_content("Label was removed").and have_no_content(label.title) expect(page).to have_content("Label was removed").and have_no_content(label.title)
......
...@@ -6,7 +6,7 @@ describe LabelsHelper do ...@@ -6,7 +6,7 @@ describe LabelsHelper do
let(:context_project) { project } let(:context_project) { project }
context "when asking for a #{issuables_type} link" do context "when asking for a #{issuables_type} link" do
subject { show_label_issuables_link?(label, issuables_type, project: context_project) } subject { show_label_issuables_link?(label.present(issuable_subject: nil), issuables_type, project: context_project) }
context "when #{issuables_type} are enabled for the project" do context "when #{issuables_type} are enabled for the project" do
let(:project) { create(:project, "#{issuables_type}_access_level": ProjectFeature::ENABLED) } let(:project) { create(:project, "#{issuables_type}_access_level": ProjectFeature::ENABLED) }
...@@ -279,4 +279,21 @@ describe LabelsHelper do ...@@ -279,4 +279,21 @@ describe LabelsHelper do
expect(label.color).to eq('bar') expect(label.color).to eq('bar')
end end
end end
describe '#label_status_tooltip' do
let(:status) { 'unsubscribed'.inquiry }
subject { label_status_tooltip(label.present(issuable_subject: nil), status) }
context 'with a project label' do
let(:label) { create(:label, title: 'bug') }
it { is_expected.to eq('Subscribe at project level') }
end
context 'with a group label' do
let(:label) { create(:group_label, title: 'bug') }
it { is_expected.to eq('Subscribe at group level') }
end
end
end end
...@@ -62,4 +62,32 @@ describe LabelPresenter do ...@@ -62,4 +62,32 @@ describe LabelPresenter do
expect(label.can_subscribe_to_label_in_different_levels?).to be_falsey expect(label.can_subscribe_to_label_in_different_levels?).to be_falsey
end end
end end
describe '#project_label?' do
context 'with group label' do
subject { group_label.project_label? }
it { is_expected.to be_falsey }
end
context 'with project label' do
subject { label.project_label? }
it { is_expected.to be_truthy }
end
end
describe '#subject_name' do
context 'with group label' do
subject { group_label.subject_name }
it { is_expected.to eq(group_label.group.name) }
end
context 'with project label' do
subject { label.subject_name }
it { is_expected.to eq(label.project.name) }
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