Read about our upcoming Code of Conduct on this issue

This instance will be upgraded to Heptapod 0.28.1 on 2022-01-26 at 16:00 UTC+1 (a few minutes of down time)

Commit b1613fd7 authored by Jan Provaznik's avatar Jan Provaznik
Browse files

Support additional LabelsFinder parameters for group labels

In some situations (listing labels for epics) we want to
list only group ancestor labels, this is already supported
in LabelsFinder we just need to enable additional parameters.

Also `set_issuables_index` method now loads project labels only if
@project is set (which is not used for epic group labels).
parent d2c93fe7ab42
......@@ -17,7 +17,7 @@ def set_issuables_index
set_pagination
return if redirect_out_of_range(@total_pages)
if params[:label_name].present?
if params[:label_name].present? && @project
labels_params = { project_id: @project.id, title: params[:label_name] }
@labels = LabelsFinder.new(current_user, labels_params).execute
end
......
......@@ -14,7 +14,13 @@ def index
end
format.json do
available_labels = LabelsFinder.new(current_user, group_id: @group.id).execute
available_labels = LabelsFinder.new(
current_user,
group_id: @group.id,
only_group_labels: params[:only_group_labels],
include_ancestor_groups: params[:include_ancestor_groups]
).execute
render json: LabelSerializer.new.represent_appearance(available_labels)
end
end
......
......@@ -3,6 +3,7 @@
describe Groups::LabelsController do
let(:group) { create(:group) }
let(:user) { create(:user) }
let(:project) { create(:project, namespace: group) }
before do
group.add_owner(user)
......@@ -10,6 +11,34 @@
sign_in(user)
end
describe 'GET #index' do
let!(:label_1) { create(:label, project: project, title: 'label_1') }
let!(:group_label_1) { create(:group_label, group: group, title: 'group_label_1') }
it 'returns group and project labels by default' do
get :index, group_id: group, format: :json
label_ids = json_response.map {|label| label['title']}
expect(label_ids).to match_array([label_1.title, group_label_1.title])
end
context 'with ancestor group', :nested_groups do
let(:subgroup) { create(:group, parent: group) }
let!(:subgroup_label_1) { create(:group_label, group: subgroup, title: 'subgroup_label_1') }
before do
subgroup.add_owner(user)
end
it 'returns ancestor group labels', :nested_groups do
get :index, group_id: subgroup, include_ancestor_groups: true, only_group_labels: true, format: :json
label_ids = json_response.map {|label| label['title']}
expect(label_ids).to match_array([group_label_1.title, subgroup_label_1.title])
end
end
end
describe 'POST #toggle_subscription' do
it 'allows user to toggle subscription on group labels' do
label = create(:group_label, group: group)
......
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