Commit 911fd7c2 authored by Jan Provaznik's avatar Jan Provaznik

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 f29dbaf5
......@@ -17,7 +17,7 @@ module IssuableCollections
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 @@ class Groups::LabelsController < Groups::ApplicationController
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 @@ require 'spec_helper'
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 @@ describe Groups::LabelsController do
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