From 26087ae91c0397054786bed7bcc078b03dd8752b Mon Sep 17 00:00:00 2001 From: Mateusz Bajorski Date: Wed, 31 Jan 2018 18:41:06 +0100 Subject: [PATCH] Fixed typos and improved reference checking --- .../quick_actions/interpret_service.rb | 18 +++++++------- ...mand.yml => add-copy-metadata-command.yml} | 2 +- doc/user/project/quick_actions.md | 2 +- .../quick_actions/interpret_service_spec.rb | 24 +++++++++---------- 4 files changed, 23 insertions(+), 23 deletions(-) rename changelogs/unreleased/{add-inherit-command.yml => add-copy-metadata-command.yml} (62%) 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 similarity index 62% rename from changelogs/unreleased/add-inherit-command.yml rename to 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 `¯\_(ツ)_/¯` | -| /copy_metadata < #issue | !merge_request > | copy_metadata labels and milestone from other issue or merge request | +| /copy_metadata < #issue | !merge_request > | 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