allow multiple labels commands
This commit is contained in:
parent
960cd184d3
commit
8213fc6a74
|
@ -91,6 +91,7 @@ v 8.13.0 (unreleased)
|
|||
- Close todos when accepting merge requests via the API !6486 (tonygambone)
|
||||
- Changed Slack service user referencing from full name to username (Sebastian Poxhofer)
|
||||
- Retouch environments list and deployments list
|
||||
- Add multiple command support for all label related slash commands !6780 (barthc)
|
||||
- Add Container Registry on/off status to Admin Area !6638 (the-undefined)
|
||||
- Allow empty merge requests !6384 (Artem Sidorenko)
|
||||
- Grouped pipeline dropdown is a scrollable container
|
||||
|
|
|
@ -122,7 +122,12 @@ module SlashCommands
|
|||
command :label do |labels_param|
|
||||
label_ids = find_label_ids(labels_param)
|
||||
|
||||
@updates[:add_label_ids] = label_ids unless label_ids.empty?
|
||||
if label_ids.any?
|
||||
@updates[:add_label_ids] ||= []
|
||||
@updates[:add_label_ids] += label_ids
|
||||
|
||||
@updates[:add_label_ids].uniq!
|
||||
end
|
||||
end
|
||||
|
||||
desc 'Remove all or specific label(s)'
|
||||
|
@ -136,7 +141,12 @@ module SlashCommands
|
|||
if labels_param.present?
|
||||
label_ids = find_label_ids(labels_param)
|
||||
|
||||
@updates[:remove_label_ids] = label_ids unless label_ids.empty?
|
||||
if label_ids.any?
|
||||
@updates[:remove_label_ids] ||= []
|
||||
@updates[:remove_label_ids] += label_ids
|
||||
|
||||
@updates[:remove_label_ids].uniq!
|
||||
end
|
||||
else
|
||||
@updates[:label_ids] = []
|
||||
end
|
||||
|
@ -152,7 +162,12 @@ module SlashCommands
|
|||
command :relabel do |labels_param|
|
||||
label_ids = find_label_ids(labels_param)
|
||||
|
||||
@updates[:label_ids] = label_ids unless label_ids.empty?
|
||||
if label_ids.any?
|
||||
@updates[:label_ids] ||= []
|
||||
@updates[:label_ids] += label_ids
|
||||
|
||||
@updates[:label_ids].uniq!
|
||||
end
|
||||
end
|
||||
|
||||
desc 'Add a todo'
|
||||
|
|
|
@ -86,6 +86,25 @@ describe SlashCommands::InterpretService, services: true do
|
|||
end
|
||||
end
|
||||
|
||||
shared_examples 'multiple label command' do
|
||||
it 'fetches label ids and populates add_label_ids if content contains multiple /label' do
|
||||
bug # populate the label
|
||||
inprogress # populate the label
|
||||
_, updates = service.execute(content, issuable)
|
||||
|
||||
expect(updates).to eq(add_label_ids: [inprogress.id, bug.id])
|
||||
end
|
||||
end
|
||||
|
||||
shared_examples 'multiple label with same argument' do
|
||||
it 'prevents duplicate label ids and populates add_label_ids if content contains multiple /label' do
|
||||
inprogress # populate the label
|
||||
_, updates = service.execute(content, issuable)
|
||||
|
||||
expect(updates).to eq(add_label_ids: [inprogress.id])
|
||||
end
|
||||
end
|
||||
|
||||
shared_examples 'unlabel command' do
|
||||
it 'fetches label ids and populates remove_label_ids if content contains /unlabel' do
|
||||
issuable.update(label_ids: [inprogress.id]) # populate the label
|
||||
|
@ -95,6 +114,15 @@ describe SlashCommands::InterpretService, services: true do
|
|||
end
|
||||
end
|
||||
|
||||
shared_examples 'multiple unlabel command' do
|
||||
it 'fetches label ids and populates remove_label_ids if content contains mutiple /unlabel' do
|
||||
issuable.update(label_ids: [inprogress.id, bug.id]) # populate the label
|
||||
_, updates = service.execute(content, issuable)
|
||||
|
||||
expect(updates).to eq(remove_label_ids: [inprogress.id, bug.id])
|
||||
end
|
||||
end
|
||||
|
||||
shared_examples 'unlabel command with no argument' do
|
||||
it 'populates label_ids: [] if content contains /unlabel with no arguments' do
|
||||
issuable.update(label_ids: [inprogress.id]) # populate the label
|
||||
|
@ -285,6 +313,16 @@ describe SlashCommands::InterpretService, services: true do
|
|||
let(:issuable) { merge_request }
|
||||
end
|
||||
|
||||
it_behaves_like 'multiple label command' do
|
||||
let(:content) { %(/label ~"#{inprogress.title}" \n/label ~#{bug.title}) }
|
||||
let(:issuable) { issue }
|
||||
end
|
||||
|
||||
it_behaves_like 'multiple label with same argument' do
|
||||
let(:content) { %(/label ~"#{inprogress.title}" \n/label ~#{inprogress.title}) }
|
||||
let(:issuable) { issue }
|
||||
end
|
||||
|
||||
it_behaves_like 'unlabel command' do
|
||||
let(:content) { %(/unlabel ~"#{inprogress.title}") }
|
||||
let(:issuable) { issue }
|
||||
|
@ -295,6 +333,11 @@ describe SlashCommands::InterpretService, services: true do
|
|||
let(:issuable) { merge_request }
|
||||
end
|
||||
|
||||
it_behaves_like 'multiple unlabel command' do
|
||||
let(:content) { %(/unlabel ~"#{inprogress.title}" \n/unlabel ~#{bug.title}) }
|
||||
let(:issuable) { issue }
|
||||
end
|
||||
|
||||
it_behaves_like 'unlabel command with no argument' do
|
||||
let(:content) { %(/unlabel) }
|
||||
let(:issuable) { issue }
|
||||
|
|
Loading…
Reference in New Issue