Skip to content
Snippets Groups Projects
Verified Commit 7ccd6a51 authored by Sophie Herold's avatar Sophie Herold Committed by Rémy Coutable
Browse files

Hide issues and MRs in labels list if disabled


Signed-off-by: default avatarRémy Coutable <remy@rymai.me>
parent 39d6cc1f
No related branches found
No related tags found
No related merge requests found
module LabelsHelper
include ActionView::Helpers::TagHelper
 
def show_label_issuables_link?(label, issuables_type, current_user: nil, project: nil)
return true if label.is_a?(GroupLabel)
return true unless project
project.feature_available?(issuables_type, current_user)
end
# Link to a Label
#
# label - Label object to link to
Loading
Loading
Loading
Loading
@@ -2,6 +2,8 @@
- status = label_subscription_status(label, @project).inquiry if current_user
- subject = local_assigns[:subject]
- toggle_subscription_path = toggle_subscription_label_path(label, @project) if current_user
- show_label_merge_requests_link = show_label_issuables_link?(label, :merge_requests, project: @project)
- show_label_issues_link = show_label_issuables_link?(label, :issues, project: @project)
 
%li{ id: label_css_id, data: { id: label.id } }
= render "shared/label_row", label: label
Loading
Loading
@@ -12,12 +14,14 @@
= icon('caret-down')
.dropdown-menu.dropdown-menu-align-right
%ul
%li
= link_to_label(label, subject: subject, type: :merge_request) do
View merge requests
%li
= link_to_label(label, subject: subject) do
View open issues
- if show_label_merge_requests_link
%li
= link_to_label(label, subject: subject, type: :merge_request) do
View merge requests
- if show_label_issues_link
%li
= link_to_label(label, subject: subject) do
View open issues
- if current_user
%li.label-subscription
- if can_subscribe_to_label_in_different_levels?(label)
Loading
Loading
@@ -38,10 +42,12 @@
= link_to 'Delete', destroy_label_path(label), title: 'Delete', method: :delete, data: {confirm: 'Remove this label? Are you sure?'}
 
.pull-right.hidden-xs.hidden-sm.hidden-md
= link_to_label(label, subject: subject, type: :merge_request, css_class: 'btn btn-transparent btn-action btn-link') do
view merge requests
= link_to_label(label, subject: subject, css_class: 'btn btn-transparent btn-action btn-link') do
view open issues
- if show_label_merge_requests_link
= link_to_label(label, subject: subject, type: :merge_request, css_class: 'btn btn-transparent btn-action btn-link') do
view merge requests
- if show_label_issues_link
= link_to_label(label, subject: subject, css_class: 'btn btn-transparent btn-action btn-link') do
view open issues
 
- if current_user
.label-subscription.inline
Loading
Loading
---
title: Hide link to issues/MRs from labels list if issues/MRs are disabled.
merge_request: 15863
author: Sophie Herold
type: fixed
require 'spec_helper'
feature 'Groups > Labels > User sees links to issuables' do
set(:group) { create(:group, :public) }
before do
create(:group_label, group: group, title: 'bug')
visit group_labels_path(group)
end
scenario 'shows links to MRs and issues' do
expect(page).to have_link('view merge requests')
expect(page).to have_link('view open issues')
end
end
require 'spec_helper'
feature 'Projects > Labels > User sees links to issuables' do
set(:user) { create(:user) }
before do
label # creates the label
project.add_developer(user)
sign_in user
visit project_labels_path(project)
end
context 'with a project label' do
let(:label) { create(:label, project: project, title: 'bug') }
context 'when merge requests and issues are enabled for the project' do
let(:project) { create(:project, :public) }
scenario 'shows links to MRs and issues' do
expect(page).to have_link('view merge requests')
expect(page).to have_link('view open issues')
end
end
context 'when issues are disabled for the project' do
let(:project) { create(:project, :public, issues_access_level: ProjectFeature::DISABLED) }
scenario 'shows links to MRs but not to issues' do
expect(page).to have_link('view merge requests')
expect(page).not_to have_link('view open issues')
end
end
context 'when merge requests are disabled for the project' do
let(:project) { create(:project, :public, merge_requests_access_level: ProjectFeature::DISABLED) }
scenario 'shows links to issues but not to MRs' do
expect(page).not_to have_link('view merge requests')
expect(page).to have_link('view open issues')
end
end
end
context 'with a group label' do
set(:group) { create(:group) }
let(:label) { create(:group_label, group: group, title: 'bug') }
context 'when merge requests and issues are enabled for the project' do
let(:project) { create(:project, :public, namespace: group) }
scenario 'shows links to MRs and issues' do
expect(page).to have_link('view merge requests')
expect(page).to have_link('view open issues')
end
end
context 'when issues are disabled for the project' do
let(:project) { create(:project, :public, namespace: group, issues_access_level: ProjectFeature::DISABLED) }
scenario 'shows links to MRs and issues' do
expect(page).to have_link('view merge requests')
expect(page).to have_link('view open issues')
end
end
context 'when merge requests are disabled for the project' do
let(:project) { create(:project, :public, namespace: group, merge_requests_access_level: ProjectFeature::DISABLED) }
scenario 'shows links to MRs and issues' do
expect(page).to have_link('view merge requests')
expect(page).to have_link('view open issues')
end
end
end
end
require 'spec_helper'
 
describe LabelsHelper do
describe '#show_label_issuables_link?' do
shared_examples 'a valid response to show_label_issuables_link?' do |issuables_type, when_enabled = true, when_disabled = false|
let(:context_project) { project }
context "when asking for a #{issuables_type} link" do
subject { show_label_issuables_link?(label, issuables_type, project: context_project) }
context "when #{issuables_type} are enabled for the project" do
let(:project) { create(:project, "#{issuables_type}_access_level": ProjectFeature::ENABLED) }
it { is_expected.to be(when_enabled) }
end
context "when #{issuables_type} are disabled for the project" do
let(:project) { create(:project, :public, "#{issuables_type}_access_level": ProjectFeature::DISABLED) }
it { is_expected.to be(when_disabled) }
end
end
end
context 'with a project label' do
let(:label) { create(:label, project: project, title: 'bug') }
context 'when asking for an issue link' do
it_behaves_like 'a valid response to show_label_issuables_link?', :issues
end
context 'when asking for a merge requests link' do
it_behaves_like 'a valid response to show_label_issuables_link?', :merge_requests
end
end
context 'with a group label' do
set(:group) { create(:group) }
let(:label) { create(:group_label, group: group, title: 'bug') }
context 'when asking for an issue link' do
context 'in the context of a project' do
it_behaves_like 'a valid response to show_label_issuables_link?', :issues, true, true
end
context 'in the context of a group' do
let(:context_project) { nil }
it_behaves_like 'a valid response to show_label_issuables_link?', :issues, true, true
end
end
context 'when asking for a merge requests link' do
context 'in the context of a project' do
it_behaves_like 'a valid response to show_label_issuables_link?', :merge_requests, true, true
end
context 'in the context of a group' do
let(:context_project) { nil }
it_behaves_like 'a valid response to show_label_issuables_link?', :merge_requests, true, true
end
end
end
end
describe 'link_to_label' do
let(:project) { create(:project) }
let(:label) { create(:label, project: project) }
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment