Fixed typos and improved reference checking
This commit is contained in:
parent
a0adf87707
commit
26087ae91c
4 changed files with 23 additions and 23 deletions
|
@ -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
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
---
|
||||
title: Add Inherit quick action
|
||||
title: Add Copy metadata quick action
|
||||
merge_request: 16473
|
||||
author: Mateusz Bajorski
|
||||
type: added
|
|
@ -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 < #issue | !merge_request ></code> | copy_metadata labels and milestone from other issue or merge request |
|
||||
| <code>/copy_metadata < #issue | !merge_request ></code> | Copy labels and milestone from other issue or merge request |
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue