summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/services/quick_actions/interpret_service.rb18
-rw-r--r--changelogs/unreleased/add-copy-metadata-command.yml (renamed from changelogs/unreleased/add-inherit-command.yml)2
-rw-r--r--doc/user/project/quick_actions.md2
-rw-r--r--spec/services/quick_actions/interpret_service_spec.rb24
4 files changed, 23 insertions, 23 deletions
diff --git a/app/services/quick_actions/interpret_service.rb b/app/services/quick_actions/interpret_service.rb
index 28fa887bf2d..87937fef8f4 100644
--- a/app/services/quick_actions/interpret_service.rb
+++ b/app/services/quick_actions/interpret_service.rb
@@ -269,22 +269,22 @@ module QuickActions
end
desc 'Copy labels and milestone from other issue or merge request'
- explanation do |issueable_id|
- "Copy labels and milestone from issue or merge_request \"#{issueable_id}\"."
+ explanation do |issuable_id|
+ "Copy labels and milestone from issue or merge_request \"#{issuable_id}\"."
end
- params '< #issue | !merge_request >'
+ params '#issue | !merge_request'
condition do
issuable.persisted? &&
current_user.can?(:"update_#{issuable.to_ability_name}", issuable)
end
- command :copy_metadata do |issueable_id|
- reference_type = issueable_id.include?("#") ? :issue : :merge_request
- issue = extract_references(issueable_id, reference_type).first
+ command :copy_metadata do |issuable_id|
+ source_issuable = extract_references(issuable_id, :issue).first
+ source_issuable = extract_references(issuable_id, :merge_request).first if !source_issuable.present?
- if issue.present? && issue.project.id == issuable.project.id
- @updates[:add_label_ids] = issue.labels.map(&:id)
+ if source_issuable.present? && source_issuable.project.id == issuable.project.id
+ @updates[:add_label_ids] = source_issuable.labels.map(&:id)
- @updates[:milestone_id] = issue.milestone.id if issue.milestone
+ @updates[:milestone_id] = source_issuable.milestone.id if source_issuable.milestone
end
end
diff --git a/changelogs/unreleased/add-inherit-command.yml b/changelogs/unreleased/add-copy-metadata-command.yml
index d47aa8c7b36..3bf25ae6ce0 100644
--- a/changelogs/unreleased/add-inherit-command.yml
+++ b/changelogs/unreleased/add-copy-metadata-command.yml
@@ -1,5 +1,5 @@
---
-title: Add Inherit quick action
+title: Add Copy metadata quick action
merge_request: 16473
author: Mateusz Bajorski
type: added
diff --git a/doc/user/project/quick_actions.md b/doc/user/project/quick_actions.md
index e2e2b859d35..75799caacde 100644
--- a/doc/user/project/quick_actions.md
+++ b/doc/user/project/quick_actions.md
@@ -41,4 +41,4 @@ do.
| `/move path/to/project` | Moves issue to another project |
| `/tableflip` | Append the comment with `(╯°□°)╯︵ ┻━┻` |
| `/shrug` | Append the comment with `¯\_(ツ)_/¯` |
-| <code>/copy_metadata &lt; #issue &#124; !merge_request &gt;</code> | copy_metadata labels and milestone from other issue or merge request |
+| <code>/copy_metadata &lt; #issue &#124; !merge_request &gt;</code> | Copy labels and milestone from other issue or merge request |
diff --git a/spec/services/quick_actions/interpret_service_spec.rb b/spec/services/quick_actions/interpret_service_spec.rb
index 9a8240f9491..4aad2aaef79 100644
--- a/spec/services/quick_actions/interpret_service_spec.rb
+++ b/spec/services/quick_actions/interpret_service_spec.rb
@@ -308,15 +308,15 @@ describe QuickActions::InterpretService do
shared_examples 'copy_metadata command' do
it 'fetches issue or merge request and copies labels and milestone if content contains /copy_metadata reference' do
- issueable_father # populate the issue
+ source_issuable # populate the issue
todo_label # populate this label
inreview_label # populate this label
_, updates = service.execute(content, issuable)
expect(updates[:add_label_ids]).to match_array([inreview_label.id, todo_label.id])
- if issueable_father.milestone
- expect(updates[:milestone_id]).to eq(issueable_father.milestone.id)
+ if source_issuable.milestone
+ expect(updates[:milestone_id]).to eq(source_issuable.milestone.id)
else
expect(updates).not_to have_key(:milestone_id)
end
@@ -784,17 +784,17 @@ describe QuickActions::InterpretService do
end
it_behaves_like 'copy_metadata command' do
- let(:issueable_father) { create(:labeled_issue, project: project, labels: [inreview_label, todo_label]) }
+ let(:source_issuable) { create(:labeled_issue, project: project, labels: [inreview_label, todo_label]) }
- let(:content) { "/copy_metadata #{issueable_father.to_reference}" }
+ let(:content) { "/copy_metadata #{source_issuable.to_reference}" }
let(:issuable) { issue }
end
- context 'when the parent issueable has a milestone' do
+ context 'when the parent issuable has a milestone' do
it_behaves_like 'copy_metadata command' do
- let(:issueable_father) { create(:labeled_issue, project: project, labels: [todo_label, inreview_label], milestone: milestone) }
+ let(:source_issuable) { create(:labeled_issue, project: project, labels: [todo_label, inreview_label], milestone: milestone) }
- let(:content) { "/copy_metadata #{issueable_father.to_reference(project)}" }
+ let(:content) { "/copy_metadata #{source_issuable.to_reference(project)}" }
let(:issuable) { issue }
end
end
@@ -802,8 +802,8 @@ describe QuickActions::InterpretService do
context 'cross project references' do
it_behaves_like 'empty command' do
let(:other_project) { create(:project, :public) }
- let(:issueable_father) { create(:labeled_issue, project: other_project, labels: [todo_label, inreview_label]) }
- let(:content) { "/copy_metadata #{issueable_father.to_reference(project)}" }
+ let(:source_issuable) { create(:labeled_issue, project: other_project, labels: [todo_label, inreview_label]) }
+ let(:content) { "/copy_metadata #{source_issuable.to_reference(project)}" }
let(:issuable) { issue }
end
@@ -814,9 +814,9 @@ describe QuickActions::InterpretService do
it_behaves_like 'empty command' do
let(:other_project) { create(:project, :private) }
- let(:issueable_father) { create(:issue, project: other_project) }
+ let(:source_issuable) { create(:issue, project: other_project) }
- let(:content) { "/copy_metadata #{issueable_father.to_reference(project)}" }
+ let(:content) { "/copy_metadata #{source_issuable.to_reference(project)}" }
let(:issuable) { issue }
end
end