Incorporate feedback
This commit is contained in:
parent
3df15b956f
commit
d7f298c177
|
@ -18,7 +18,7 @@ module Gitlab
|
||||||
Gitlab::ChatCommands::Presenters::Access.new.access_denied
|
Gitlab::ChatCommands::Presenters::Access.new.access_denied
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
Gitlab::ChatCommands::Help.new(project, current_user, params).execute(available_commands)
|
Gitlab::ChatCommands::Help.new(project, current_user, params).execute(available_commands, params[:text])
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -16,8 +16,8 @@ module Gitlab
|
||||||
true
|
true
|
||||||
end
|
end
|
||||||
|
|
||||||
def execute(commands)
|
def execute(commands, text)
|
||||||
Gitlab::ChatCommands::Presenters::Help.new(commands).present(trigger)
|
Gitlab::ChatCommands::Presenters::Help.new(commands).present(trigger, text)
|
||||||
end
|
end
|
||||||
|
|
||||||
def trigger
|
def trigger
|
||||||
|
|
|
@ -20,6 +20,20 @@ module Gitlab
|
||||||
|
|
||||||
ephemeral_response(text: message)
|
ephemeral_response(text: message)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def unknown_command(commands)
|
||||||
|
ephemeral_response(text: help_message(trigger))
|
||||||
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
def help_message(trigger)
|
||||||
|
header_with_list("Command not found, these are the commands you can use", full_commands(trigger))
|
||||||
|
end
|
||||||
|
|
||||||
|
def full_commands(trigger)
|
||||||
|
@resource.map { |command| "#{trigger} #{command.help_message}" }
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -2,17 +2,19 @@ module Gitlab
|
||||||
module ChatCommands
|
module ChatCommands
|
||||||
module Presenters
|
module Presenters
|
||||||
class Help < Presenters::Base
|
class Help < Presenters::Base
|
||||||
def present(trigger)
|
def present(trigger, text)
|
||||||
ephemeral_response(text: help_message(trigger))
|
ephemeral_response(text: help_message(trigger, text))
|
||||||
end
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
def help_message(trigger)
|
def help_message(trigger, text)
|
||||||
if @resource.present?
|
return "No commands available :thinking_face:" unless @resource.present?
|
||||||
|
|
||||||
|
if text.start_with?('help')
|
||||||
header_with_list("Available commands", full_commands(trigger))
|
header_with_list("Available commands", full_commands(trigger))
|
||||||
else
|
else
|
||||||
"No commands available :thinking_face:"
|
header_with_list("Unknown command, these commands are available", full_commands(trigger))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -24,7 +24,9 @@ module Gitlab
|
||||||
fields: fields,
|
fields: fields,
|
||||||
mrkdwn_in: [
|
mrkdwn_in: [
|
||||||
:title,
|
:title,
|
||||||
:text
|
:pretext,
|
||||||
|
:text,
|
||||||
|
:fields
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
|
@ -7,6 +7,8 @@ module Gitlab
|
||||||
def present
|
def present
|
||||||
text = if @resource.count >= 5
|
text = if @resource.count >= 5
|
||||||
"Here are the first 5 issues I found:"
|
"Here are the first 5 issues I found:"
|
||||||
|
elsif @resource.one?
|
||||||
|
"Here is the only issue I found:"
|
||||||
else
|
else
|
||||||
"Here are the #{@resource.count} issues I found:"
|
"Here are the #{@resource.count} issues I found:"
|
||||||
end
|
end
|
||||||
|
@ -26,7 +28,7 @@ module Gitlab
|
||||||
text: "#{url} · #{issue.title} (#{status_text(issue)})",
|
text: "#{url} · #{issue.title} (#{status_text(issue)})",
|
||||||
|
|
||||||
mrkdwn_in: [
|
mrkdwn_in: [
|
||||||
"text"
|
:text
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
|
@ -5,8 +5,12 @@ module Gitlab
|
||||||
include Presenters::Issuable
|
include Presenters::Issuable
|
||||||
|
|
||||||
def present
|
def present
|
||||||
|
if @resource.confidential?
|
||||||
|
ephemeral_response(show_issue)
|
||||||
|
else
|
||||||
in_channel_response(show_issue)
|
in_channel_response(show_issue)
|
||||||
end
|
end
|
||||||
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
|
@ -25,7 +29,8 @@ module Gitlab
|
||||||
fields: fields,
|
fields: fields,
|
||||||
mrkdwn_in: [
|
mrkdwn_in: [
|
||||||
:pretext,
|
:pretext,
|
||||||
:text
|
:text,
|
||||||
|
:fields
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
@ -48,7 +53,7 @@ module Gitlab
|
||||||
end
|
end
|
||||||
|
|
||||||
def pretext
|
def pretext
|
||||||
"Issue *#{@resource.to_reference} from #{project.name_with_namespace}"
|
"Issue *#{@resource.to_reference}* from #{project.name_with_namespace}"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -5,7 +5,6 @@ describe Gitlab::ChatCommands::Command, service: true do
|
||||||
let(:user) { create(:user) }
|
let(:user) { create(:user) }
|
||||||
|
|
||||||
describe '#execute' do
|
describe '#execute' do
|
||||||
<<<<<<< HEAD
|
|
||||||
subject do
|
subject do
|
||||||
described_class.new(project, user, params).execute
|
described_class.new(project, user, params).execute
|
||||||
end
|
end
|
||||||
|
@ -19,16 +18,13 @@ describe Gitlab::ChatCommands::Command, service: true do
|
||||||
expect(subject[:text]).to start_with('404 not found')
|
expect(subject[:text]).to start_with('404 not found')
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
=======
|
|
||||||
subject { described_class.new(project, user, params).execute }
|
|
||||||
>>>>>>> Chat Commands have presenters
|
|
||||||
|
|
||||||
context 'when an unknown command is triggered' do
|
context 'when an unknown command is triggered' do
|
||||||
let(:params) { { command: '/gitlab', text: "unknown command 123" } }
|
let(:params) { { command: '/gitlab', text: "unknown command 123" } }
|
||||||
|
|
||||||
it 'displays the help message' do
|
it 'displays the help message' do
|
||||||
expect(subject[:response_type]).to be(:ephemeral)
|
expect(subject[:response_type]).to be(:ephemeral)
|
||||||
expect(subject[:text]).to start_with('Available commands')
|
expect(subject[:text]).to start_with('Unknown command')
|
||||||
expect(subject[:text]).to match('/gitlab issue show')
|
expect(subject[:text]).to match('/gitlab issue show')
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -21,7 +21,17 @@ describe Gitlab::ChatCommands::Presenters::IssueShow do
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'shows the upvote count' do
|
it 'shows the upvote count' do
|
||||||
|
expect(subject[:response_type]).to be(:in_channel)
|
||||||
expect(attachment[:text]).to start_with("**Open** · :+1: 1")
|
expect(attachment[:text]).to start_with("**Open** · :+1: 1")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
context 'confidential issue' do
|
||||||
|
let(:issue) { create(:issue, project: project) }
|
||||||
|
|
||||||
|
it 'shows an ephemeral response' do
|
||||||
|
expect(subject[:response_type]).to be(:in_channel)
|
||||||
|
expect(attachment[:text]).to start_with("**Open**")
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue