Implement the tag
commands
This commit is contained in:
parent
2022243a22
commit
cc1aecdb4f
2 changed files with 62 additions and 0 deletions
|
@ -582,6 +582,23 @@ module QuickActions
|
|||
@updates[:confidential] = true
|
||||
end
|
||||
|
||||
desc 'Tag this commit.'
|
||||
explanation do |(tag_name), _|
|
||||
"Tags this commit to #{tag_name}."
|
||||
end
|
||||
params 'v1.2.3 <message>'
|
||||
parse_params do |tag_name_and_message|
|
||||
tag_name_and_message.split(' ', 2)
|
||||
end
|
||||
condition do
|
||||
issuable.is_a?(Commit)
|
||||
# TODO authorize
|
||||
end
|
||||
command :tag do |(tag_name, message)|
|
||||
@updates[:tag_name] = tag_name
|
||||
@updates[:tag_message] = message
|
||||
end
|
||||
|
||||
def extract_users(params)
|
||||
return [] if params.nil?
|
||||
|
||||
|
|
|
@ -6,6 +6,7 @@ describe QuickActions::InterpretService do
|
|||
let(:developer2) { create(:user) }
|
||||
let(:issue) { create(:issue, project: project) }
|
||||
let(:milestone) { create(:milestone, project: project, title: '9.10') }
|
||||
let(:commit) { create(:commit, project: project) }
|
||||
let(:inprogress) { create(:label, project: project, title: 'In Progress') }
|
||||
let(:bug) { create(:label, project: project, title: 'Bug') }
|
||||
let(:note) { build(:note, commit_id: merge_request.diff_head_sha) }
|
||||
|
@ -347,6 +348,14 @@ describe QuickActions::InterpretService do
|
|||
end
|
||||
end
|
||||
|
||||
shared_examples 'tag command' do
|
||||
it 'tags a commit' do
|
||||
_, updates = service.execute(content, issuable)
|
||||
|
||||
expect(updates).to eq(tag_name: tag_name, tag_message: tag_message)
|
||||
end
|
||||
end
|
||||
|
||||
it_behaves_like 'reopen command' do
|
||||
let(:content) { '/reopen' }
|
||||
let(:issuable) { issue }
|
||||
|
@ -1102,6 +1111,32 @@ describe QuickActions::InterpretService do
|
|||
it_behaves_like 'empty command'
|
||||
end
|
||||
end
|
||||
|
||||
context '/tag command' do
|
||||
let(:issuable) { commit }
|
||||
|
||||
context 'ignores command with no argument' do
|
||||
it_behaves_like 'empty command' do
|
||||
let(:content) { '/tag' }
|
||||
end
|
||||
end
|
||||
|
||||
context 'tags a commit with a tag name' do
|
||||
it_behaves_like 'tag command' do
|
||||
let(:tag_name) { 'v1.2.3' }
|
||||
let(:tag_message) { nil }
|
||||
let(:content) { "/tag #{tag_name}" }
|
||||
end
|
||||
end
|
||||
|
||||
context 'tags a commit with a tag name and message' do
|
||||
it_behaves_like 'tag command' do
|
||||
let(:tag_name) { 'v1.2.3' }
|
||||
let(:tag_message) { 'Stable release' }
|
||||
let(:content) { "/tag #{tag_name} #{tag_message}" }
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe '#explain' do
|
||||
|
@ -1319,5 +1354,15 @@ describe QuickActions::InterpretService do
|
|||
expect(explanations).to eq(["Moves this issue to test/project."])
|
||||
end
|
||||
end
|
||||
|
||||
describe 'tag a commit' do
|
||||
let(:content) { '/tag 1.2.3 some message' }
|
||||
|
||||
it 'includes the tag name' do
|
||||
_, explanations = service.explain(content, commit)
|
||||
|
||||
expect(explanations).to eq(["Tags this commit to 1.2.3."])
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue