Commit d7f298c1 authored by Z.J. van de Weg's avatar Z.J. van de Weg

Incorporate feedback

parent 3df15b95
...@@ -18,7 +18,7 @@ module Gitlab ...@@ -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 ...@@ -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 ...@@ -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 ...@@ -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 ...@@ -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 ...@@ -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 ...@@ -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,7 +5,11 @@ module Gitlab ...@@ -5,7 +5,11 @@ module Gitlab
include Presenters::Issuable include Presenters::Issuable
def present def present
in_channel_response(show_issue) if @resource.confidential?
ephemeral_response(show_issue)
else
in_channel_response(show_issue)
end
end end
private private
...@@ -25,7 +29,8 @@ module Gitlab ...@@ -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 ...@@ -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 ...@@ -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 ...@@ -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 ...@@ -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
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