Commit cfcd1601 authored by Rémy Coutable's avatar Rémy Coutable

Merge branch 'add-assign-me-alias' into 'master'

Add `/assign me` alias support for assigning issuables to oneself

Closes #35304

See merge request !13334
parents c1a8cffe 74f8b5c3
......@@ -511,7 +511,12 @@ module QuickActions
users = extract_references(params, :user)
if users.empty?
users = User.where(username: params.split(' ').map(&:strip))
users =
if params == 'me'
[current_user]
else
User.where(username: params.split(' ').map(&:strip))
end
end
users
......
......@@ -3,17 +3,17 @@ require 'rails_helper'
feature 'Merge Requests > User uses quick actions', js: true do
include QuickActionsHelpers
let(:user) { create(:user) }
let(:project) { create(:project, :public, :repository) }
let(:merge_request) { create(:merge_request, source_project: project) }
let!(:milestone) { create(:milestone, project: project, title: 'ASAP') }
it_behaves_like 'issuable record that supports quick actions in its description and notes', :merge_request do
let(:issuable) { create(:merge_request, source_project: project) }
let(:new_url_opts) { { merge_request: { source_branch: 'feature', target_branch: 'master' } } }
end
describe 'merge-request-only commands' do
let(:user) { create(:user) }
let(:project) { create(:project, :public, :repository) }
let(:merge_request) { create(:merge_request, source_project: project) }
let!(:milestone) { create(:milestone, project: project, title: 'ASAP') }
before do
project.team << [user, :master]
sign_in(user)
......
......@@ -424,6 +424,26 @@ describe QuickActions::InterpretService do
end
end
context 'assign command with me alias' do
let(:content) { "/assign me" }
context 'Issue' do
it 'fetches assignee and populates assignee_ids if content contains /assign' do
_, updates = service.execute(content, issue)
expect(updates).to eq(assignee_ids: [developer.id])
end
end
context 'Merge Request' do
it 'fetches assignee and populates assignee_ids if content contains /assign' do
_, updates = service.execute(content, merge_request)
expect(updates).to eq(assignee_ids: [developer.id])
end
end
end
it_behaves_like 'empty command' do
let(:content) { '/assign @abcd1234' }
let(:issuable) { issue }
......
......@@ -279,6 +279,17 @@ shared_examples 'issuable record that supports quick actions in its description
expect(issuable.subscribed?(master, project)).to be_falsy
end
end
context "with a note assigning the #{issuable_type} to the current user" do
it "assigns the #{issuable_type} to the current user" do
write_note("/assign me")
expect(page).not_to have_content '/assign me'
expect(page).to have_content 'Commands applied'
expect(issuable.reload.assignees).to eq [master]
end
end
end
describe "preview of note on #{issuable_type}" do
......
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