Commit a7dadaad authored by Douwe Maan's avatar Douwe Maan

Merge branch 'ccr/48930_extract_logic_to_concern' into 'master'

Port of create labels_as_hash_ concern, modify params for method

See merge request gitlab-org/gitlab-ce!21992
parents 0e9f33f2 df6e9ed3
# frozen_string_literal: true
module LabelsAsHash
extend ActiveSupport::Concern
def labels_as_hash(target = nil, params = {})
available_labels = LabelsFinder.new(
current_user,
params
).execute
label_hashes = available_labels.as_json(only: [:title, :color])
if target&.respond_to?(:labels)
already_set_labels = available_labels & target.labels
if already_set_labels.present?
titles = already_set_labels.map(&:title)
label_hashes.each do |hash|
if titles.include?(hash['title'])
hash[:set] = true
end
end
end
end
label_hashes
end
end
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
module Projects module Projects
class AutocompleteService < BaseService class AutocompleteService < BaseService
include LabelsAsHash
def issues def issues
IssuesFinder.new(current_user, project_id: project.id, state: 'opened').execute.select([:iid, :title]) IssuesFinder.new(current_user, project_id: project.id, state: 'opened').execute.select([:iid, :title])
end end
...@@ -22,34 +23,14 @@ module Projects ...@@ -22,34 +23,14 @@ module Projects
MergeRequestsFinder.new(current_user, project_id: project.id, state: 'opened').execute.select([:iid, :title]) MergeRequestsFinder.new(current_user, project_id: project.id, state: 'opened').execute.select([:iid, :title])
end end
def labels_as_hash(target = nil)
available_labels = LabelsFinder.new(
current_user,
project_id: project.id,
include_ancestor_groups: true
).execute
label_hashes = available_labels.as_json(only: [:title, :color])
if target&.respond_to?(:labels)
already_set_labels = available_labels & target.labels
if already_set_labels.present?
titles = already_set_labels.map(&:title)
label_hashes.each do |hash|
if titles.include?(hash['title'])
hash[:set] = true
end
end
end
end
label_hashes
end
def commands(noteable, type) def commands(noteable, type)
return [] unless noteable return [] unless noteable
QuickActions::InterpretService.new(project, current_user).available_commands(noteable) QuickActions::InterpretService.new(project, current_user).available_commands(noteable)
end end
def labels_as_hash(target)
super(target, project_id: project.id, include_ancestor_groups: true)
end
end end
end end
...@@ -148,7 +148,7 @@ describe Projects::AutocompleteService do ...@@ -148,7 +148,7 @@ describe Projects::AutocompleteService do
let!(:label1) { create(:label, project: project) } let!(:label1) { create(:label, project: project) }
let!(:label2) { create(:label, project: project) } let!(:label2) { create(:label, project: project) }
let!(:sub_group_label) { create(:group_label, group: sub_group) } let!(:sub_group_label) { create(:group_label, group: sub_group) }
let!(:parent_group_label) { create(:group_label, group: group.parent) } let!(:parent_group_label) { create(:group_label, group: group.parent, group_id: group.id) }
before do before do
create(:group_member, group: group, user: user) create(:group_member, group: group, user: user)
...@@ -156,7 +156,7 @@ describe Projects::AutocompleteService do ...@@ -156,7 +156,7 @@ describe Projects::AutocompleteService do
it 'returns labels from project and ancestor groups' do it 'returns labels from project and ancestor groups' do
service = described_class.new(project, user) service = described_class.new(project, user)
results = service.labels_as_hash results = service.labels_as_hash(nil)
expected_labels = [label1, label2, parent_group_label] expected_labels = [label1, label2, parent_group_label]
expect_labels_to_equal(results, expected_labels) expect_labels_to_equal(results, expected_labels)
......
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