Incorporate feedback

This commit is contained in:
Z.J. van de Weg 2017-01-30 12:12:57 +01:00
parent 3df15b956f
commit d7f298c177
9 changed files with 49 additions and 18 deletions

View file

@ -18,7 +18,7 @@ module Gitlab
Gitlab::ChatCommands::Presenters::Access.new.access_denied
end
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

View file

@ -16,8 +16,8 @@ module Gitlab
true
end
def execute(commands)
Gitlab::ChatCommands::Presenters::Help.new(commands).present(trigger)
def execute(commands, text)
Gitlab::ChatCommands::Presenters::Help.new(commands).present(trigger, text)
end
def trigger

View file

@ -20,6 +20,20 @@ module Gitlab
ephemeral_response(text: message)
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

View file

@ -2,17 +2,19 @@ module Gitlab
module ChatCommands
module Presenters
class Help < Presenters::Base
def present(trigger)
ephemeral_response(text: help_message(trigger))
def present(trigger, text)
ephemeral_response(text: help_message(trigger, text))
end
private
def help_message(trigger)
if @resource.present?
def help_message(trigger, text)
return "No commands available :thinking_face:" unless @resource.present?
if text.start_with?('help')
header_with_list("Available commands", full_commands(trigger))
else
"No commands available :thinking_face:"
header_with_list("Unknown command, these commands are available", full_commands(trigger))
end
end

View file

@ -24,7 +24,9 @@ module Gitlab
fields: fields,
mrkdwn_in: [
:title,
:text
:pretext,
:text,
:fields
]
}
]

View file

@ -7,6 +7,8 @@ module Gitlab
def present
text = if @resource.count >= 5
"Here are the first 5 issues I found:"
elsif @resource.one?
"Here is the only issue I found:"
else
"Here are the #{@resource.count} issues I found:"
end
@ -26,7 +28,7 @@ module Gitlab
text: "#{url} · #{issue.title} (#{status_text(issue)})",
mrkdwn_in: [
"text"
:text
]
}
end

View file

@ -5,7 +5,11 @@ module Gitlab
include Presenters::Issuable
def present
in_channel_response(show_issue)
if @resource.confidential?
ephemeral_response(show_issue)
else
in_channel_response(show_issue)
end
end
private
@ -25,7 +29,8 @@ module Gitlab
fields: fields,
mrkdwn_in: [
:pretext,
:text
:text,
:fields
]
}
]
@ -48,7 +53,7 @@ module Gitlab
end
def pretext
"Issue *#{@resource.to_reference} from #{project.name_with_namespace}"
"Issue *#{@resource.to_reference}* from #{project.name_with_namespace}"
end
end
end

View file

@ -5,7 +5,6 @@ describe Gitlab::ChatCommands::Command, service: true do
let(:user) { create(:user) }
describe '#execute' do
<<<<<<< HEAD
subject do
described_class.new(project, user, params).execute
end
@ -19,16 +18,13 @@ describe Gitlab::ChatCommands::Command, service: true do
expect(subject[:text]).to start_with('404 not found')
end
end
=======
subject { described_class.new(project, user, params).execute }
>>>>>>> Chat Commands have presenters
context 'when an unknown command is triggered' do
let(:params) { { command: '/gitlab', text: "unknown command 123" } }
it 'displays the help message' do
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')
end
end

View file

@ -21,7 +21,17 @@ describe Gitlab::ChatCommands::Presenters::IssueShow do
end
it 'shows the upvote count' do
expect(subject[:response_type]).to be(:in_channel)
expect(attachment[:text]).to start_with("**Open** · :+1: 1")
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