summaryrefslogtreecommitdiff
path: root/spec/services/quick_actions/interpret_service_spec.rb
diff options
context:
space:
mode:
authorCindy Pallares 🦉 <cindy@gitlab.com>2018-10-19 21:01:39 +0000
committerDouwe Maan <douwe@gitlab.com>2018-10-19 21:01:39 +0000
commit8b8b2edb018bb88e64a1d024a3f9e45c29036600 (patch)
treed64de364a1604e2de5cb8761a58208c12e111c27 /spec/services/quick_actions/interpret_service_spec.rb
parentec0199b8fa0abe203905e0abb3a5d5c4c0748688 (diff)
downloadgitlab-ce-8b8b2edb018bb88e64a1d024a3f9e45c29036600.tar.gz
Resolve "/assign me quick action doesn't work if there is extra white space"
Diffstat (limited to 'spec/services/quick_actions/interpret_service_spec.rb')
-rw-r--r--spec/services/quick_actions/interpret_service_spec.rb79
1 files changed, 38 insertions, 41 deletions
diff --git a/spec/services/quick_actions/interpret_service_spec.rb b/spec/services/quick_actions/interpret_service_spec.rb
index ac0ca1f33a5..41a170e4f25 100644
--- a/spec/services/quick_actions/interpret_service_spec.rb
+++ b/spec/services/quick_actions/interpret_service_spec.rb
@@ -380,6 +380,14 @@ describe QuickActions::InterpretService do
end
end
+ shared_examples 'assign command' do
+ it 'assigns to a single user' do
+ _, updates = service.execute(content, issuable)
+
+ expect(updates).to eq(assignee_ids: [developer.id])
+ end
+ end
+
it_behaves_like 'reopen command' do
let(:content) { '/reopen' }
let(:issuable) { issue }
@@ -474,67 +482,56 @@ describe QuickActions::InterpretService do
let(:issuable) { issue }
end
- context 'assign command' do
- let(:content) { "/assign @#{developer.username}" }
-
- context 'Issue' do
- it 'fetches assignee and populates assignee_ids if content contains /assign' do
- _, updates = service.execute(content, issue)
-
- expect(updates[:assignee_ids]).to match_array([developer.id])
- end
+ context 'assign command with one user' do
+ it_behaves_like 'assign command' do
+ let(:content) { "/assign @#{developer.username}" }
+ let(:issuable) { issue }
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
+ it_behaves_like 'assign command' do
+ let(:content) { "/assign @#{developer.username}" }
+ let(:issuable) { merge_request }
end
end
+ # CE does not have multiple assignees
context 'assign command with multiple assignees' do
- let(:content) { "/assign @#{developer.username} @#{developer2.username}" }
-
before do
project.add_developer(developer2)
end
- context 'Issue' do
- it 'fetches assignee and populates assignee_ids if content contains /assign' do
- _, updates = service.execute(content, issue)
-
- expect(updates[:assignee_ids]).to match_array([developer.id])
- end
+ it_behaves_like 'assign command' do
+ let(:content) { "/assign @#{developer.username} @#{developer2.username}" }
+ let(:issuable) { issue }
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
+ it_behaves_like 'assign command' do
+ let(:content) { "/assign @#{developer.username} @#{developer2.username}" }
+ let(:issuable) { merge_request }
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)
+ it_behaves_like 'assign command' do
+ let(:content) { '/assign me' }
+ let(:issuable) { issue }
+ end
- expect(updates).to eq(assignee_ids: [developer.id])
- end
+ it_behaves_like 'assign command' do
+ let(:content) { '/assign me' }
+ let(:issuable) { merge_request }
end
+ end
- context 'Merge Request' do
- it 'fetches assignee and populates assignee_ids if content contains /assign' do
- _, updates = service.execute(content, merge_request)
+ context 'assign command with me alias and whitespace' do
+ it_behaves_like 'assign command' do
+ let(:content) { '/assign me ' }
+ let(:issuable) { issue }
+ end
- expect(updates).to eq(assignee_ids: [developer.id])
- end
+ it_behaves_like 'assign command' do
+ let(:content) { '/assign me ' }
+ let(:issuable) { merge_request }
end
end