Commit 811262eb authored by Rémy Coutable's avatar Rémy Coutable Committed by Douglas Barbosa Alexandre

Merge branch 'zj-fix-issue-search-chat-command' into 'master'

Fix errorcode 500 on slash commands

Closes #26013

See merge request !8285
parent 66cf66dc
...@@ -49,8 +49,9 @@ module Gitlab ...@@ -49,8 +49,9 @@ module Gitlab
end end
def url(subject) def url(subject)
polymorphic_url( project = subject.project
[ subject.project.namespace.becomes(Namespace), subject.project, subject ])
namespace_project_build_url(project.namespace.becomes(Namespace), project, subject)
end end
end end
end end
......
...@@ -30,12 +30,12 @@ module Gitlab ...@@ -30,12 +30,12 @@ module Gitlab
if subject.is_a?(Gitlab::ChatCommands::Result) if subject.is_a?(Gitlab::ChatCommands::Result)
show_result(subject) show_result(subject)
elsif subject.respond_to?(:count) elsif subject.respond_to?(:count)
if subject.many? if subject.none?
multiple_resources(subject)
elsif subject.none?
not_found not_found
elsif subject.one?
single_resource(subject.first)
else else
single_resource(subject) multiple_resources(subject)
end end
else else
single_resource(subject) single_resource(subject)
...@@ -71,9 +71,9 @@ module Gitlab ...@@ -71,9 +71,9 @@ module Gitlab
end end
def multiple_resources(resources) def multiple_resources(resources)
resources.map! { |resource| title(resource) } titles = resources.map { |resource| title(resource) }
message = header_with_list("Multiple results were found:", resources) message = header_with_list("Multiple results were found:", titles)
ephemeral_response(message) ephemeral_response(message)
end end
......
...@@ -54,6 +54,30 @@ describe Gitlab::ChatCommands::Command, service: true do ...@@ -54,6 +54,30 @@ describe Gitlab::ChatCommands::Command, service: true do
end end
end end
context 'searching for an issue' do
let(:params) { { text: 'issue search find me' } }
let!(:issue) { create(:issue, project: project, title: 'find me') }
before do
project.team << [user, :master]
end
context 'a single issue is found' do
it 'presents the issue' do
expect(subject[:text]).to match(issue.title)
end
end
context 'multiple issues found' do
let!(:issue2) { create(:issue, project: project, title: "someone find me") }
it 'shows a link to the new issue' do
expect(subject[:text]).to match(issue.title)
expect(subject[:text]).to match(issue2.title)
end
end
end
context 'when trying to do deployment' do context 'when trying to do deployment' do
let(:params) { { text: 'deploy staging to production' } } let(:params) { { text: 'deploy staging to production' } }
let!(:build) { create(:ci_build, project: project) } let!(:build) { create(:ci_build, project: project) }
......
...@@ -6,7 +6,7 @@ describe MattermostSlashCommandsService, :models do ...@@ -6,7 +6,7 @@ describe MattermostSlashCommandsService, :models do
context 'Mattermost API' do context 'Mattermost API' do
let(:project) { create(:empty_project) } let(:project) { create(:empty_project) }
let(:service) { project.build_mattermost_slash_commands_service } let(:service) { project.build_mattermost_slash_commands_service }
let(:user) { create(:user)} let(:user) { create(:user) }
before do before do
Mattermost::Session.base_uri("http://mattermost.example.com") Mattermost::Session.base_uri("http://mattermost.example.com")
......
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