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

Rename presenters for consitency

parent 52ca0d2c
...@@ -3,7 +3,7 @@ module Gitlab ...@@ -3,7 +3,7 @@ module Gitlab
class Command < BaseCommand class Command < BaseCommand
COMMANDS = [ COMMANDS = [
Gitlab::ChatCommands::IssueShow, Gitlab::ChatCommands::IssueShow,
Gitlab::ChatCommands::IssueCreate, Gitlab::ChatCommands::IssueNew,
Gitlab::ChatCommands::IssueSearch, Gitlab::ChatCommands::IssueSearch,
Gitlab::ChatCommands::Deploy, Gitlab::ChatCommands::Deploy,
].freeze ].freeze
......
module Gitlab module Gitlab
module ChatCommands module ChatCommands
class IssueCreate < IssueCommand class IssueNew < IssueCommand
def self.match(text) def self.match(text)
# we can not match \n with the dot by passing the m modifier as than # we can not match \n with the dot by passing the m modifier as than
# the title and description are not seperated # the title and description are not seperated
...@@ -21,10 +21,10 @@ module Gitlab ...@@ -21,10 +21,10 @@ module Gitlab
issue = create_issue(title: title, description: description) issue = create_issue(title: title, description: description)
if issue.errors.any? if issue.persisted?
presenter(issue).display_errors
else
presenter(issue).present presenter(issue).present
else
presenter(issue).display_errors
end end
end end
...@@ -35,7 +35,7 @@ module Gitlab ...@@ -35,7 +35,7 @@ module Gitlab
end end
def presenter(issue) def presenter(issue)
Gitlab::ChatCommands::Presenters::NewIssue.new(issue) Gitlab::ChatCommands::Presenters::IssueNew.new(issue)
end end
end end
end end
......
...@@ -12,12 +12,10 @@ module Gitlab ...@@ -12,12 +12,10 @@ module Gitlab
def execute(match) def execute(match)
issues = collection.search(match[:query]).limit(QUERY_LIMIT) issues = collection.search(match[:query]).limit(QUERY_LIMIT)
if issues.none? if issues.present?
Presenters::Access.new(issues).not_found Presenters::IssueSearch.new(issues).present
elsif issues.one?
Presenters::ShowIssue.new(issues.first).present
else else
Presenters::ListIssues.new(issues).present Presenters::Access.new(issues).not_found
end end
end end
end end
......
...@@ -13,7 +13,7 @@ module Gitlab ...@@ -13,7 +13,7 @@ module Gitlab
issue = find_by_iid(match[:iid]) issue = find_by_iid(match[:iid])
if issue if issue
Gitlab::ChatCommands::Presenters::ShowIssue.new(issue).present Gitlab::ChatCommands::Presenters::IssueShow.new(issue).present
else else
Gitlab::ChatCommands::Presenters::Access.new.not_found Gitlab::ChatCommands::Presenters::Access.new.not_found
end end
......
...@@ -15,14 +15,6 @@ module Gitlab ...@@ -15,14 +15,6 @@ module Gitlab
def too_many_actions def too_many_actions
ephemeral_response(text: "Too many actions defined") ephemeral_response(text: "Too many actions defined")
end end
private
def resource_url
polymorphic_url(
[ @resource.project.namespace.becomes(Namespace), @resource.project, @resource]
)
end
end end
end end
end end
......
...@@ -9,10 +9,10 @@ module Gitlab ...@@ -9,10 +9,10 @@ module Gitlab
private private
def help_message(trigger) def help_message(trigger)
if @resource.none? if @resource.present?
"No commands available :thinking_face:"
else
header_with_list("Available commands", full_commands(trigger)) header_with_list("Available commands", full_commands(trigger))
else
"No commands available :thinking_face:"
end end
end end
......
module Gitlab module Gitlab
module ChatCommands module ChatCommands
module Presenters module Presenters
class Issuable < Presenters::Base module Issuable
private
def color(issuable) def color(issuable)
issuable.open? ? '#38ae67' : '#d22852' issuable.open? ? '#38ae67' : '#d22852'
end end
......
module Gitlab module Gitlab
module ChatCommands module ChatCommands
module Presenters module Presenters
class NewIssue < Presenters::Issuable class IssueNew < Presenters::Base
include Presenters::Issuable
def present def present
in_channel_response(show_issue) in_channel_response(new_issue)
end end
private private
def show_issue def new_issue
{ {
attachments: [ attachments: [
{ {
...@@ -33,6 +35,10 @@ module Gitlab ...@@ -33,6 +35,10 @@ module Gitlab
"I opened an issue on behalf on #{author_profile_link}: *#{@resource.to_reference}* from #{project.name_with_namespace}" "I opened an issue on behalf on #{author_profile_link}: *#{@resource.to_reference}* from #{project.name_with_namespace}"
end end
def project_link
"[#{project.name_with_namespace}](#{url_for(project)})"
end
def author_profile_link def author_profile_link
"[#{author.to_reference}](#{url_for(author)})" "[#{author.to_reference}](#{url_for(author)})"
end end
......
module Gitlab module Gitlab
module ChatCommands module ChatCommands
module Presenters module Presenters
class ListIssues < Presenters::Issuable class IssueSearch < Presenters::Base
include Presenters::Issuable
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:"
......
module Gitlab module Gitlab
module ChatCommands module ChatCommands
module Presenters module Presenters
class ShowIssue < Presenters::Issuable class IssueShow < Presenters::Base
include Presenters::Issuable
def present def present
in_channel_response(show_issue) in_channel_response(show_issue)
end end
...@@ -16,7 +18,7 @@ module Gitlab ...@@ -16,7 +18,7 @@ module Gitlab
title_link: resource_url, title_link: resource_url,
author_name: author.name, author_name: author.name,
author_icon: author.avatar_url, author_icon: author.avatar_url,
fallback: "New issue #{@resource.to_reference}: #{@resource.title}", fallback: "Issue #{@resource.to_reference}: #{@resource.title}",
pretext: pretext, pretext: pretext,
text: text, text: text,
color: color(@resource), color: color(@resource),
......
...@@ -78,7 +78,7 @@ describe Gitlab::ChatCommands::Command, service: true do ...@@ -78,7 +78,7 @@ describe Gitlab::ChatCommands::Command, service: true do
context 'IssueCreate is triggered' do context 'IssueCreate is triggered' do
let(:params) { { text: 'issue create my title' } } let(:params) { { text: 'issue create my title' } }
it { is_expected.to eq(Gitlab::ChatCommands::IssueCreate) } it { is_expected.to eq(Gitlab::ChatCommands::IssueNew) }
end end
context 'IssueSearch is triggered' do context 'IssueSearch is triggered' do
......
require 'spec_helper' require 'spec_helper'
describe Gitlab::ChatCommands::IssueCreate, service: true do describe Gitlab::ChatCommands::IssueNew, service: true do
describe '#execute' do describe '#execute' do
let(:project) { create(:empty_project) } let(:project) { create(:empty_project) }
let(:user) { create(:user) } let(:user) { create(:user) }
......
require 'spec_helper'
describe Gitlab::ChatCommands::Presenters::IssueNew do
let(:project) { create(:empty_project) }
let(:issue) { create(:issue, project: project) }
let(:attachment) { subject[:attachments].first }
subject { described_class.new(issue).present }
it { is_expected.to be_a(Hash) }
it 'shows the issue' do
expect(subject[:response_type]).to be(:in_channel)
expect(subject).to have_key(:attachments)
expect(attachment[:title]).to start_with(issue.title)
end
end
require 'spec_helper' require 'spec_helper'
describe Gitlab::ChatCommands::Presenters::ListIssues do describe Gitlab::ChatCommands::Presenters::IssueSearch do
let(:project) { create(:empty_project) } let(:project) { create(:empty_project) }
let(:message) { subject[:text] } let(:message) { subject[:text] }
......
require 'spec_helper' require 'spec_helper'
describe Gitlab::ChatCommands::Presenters::ShowIssue do describe Gitlab::ChatCommands::Presenters::IssueShow do
let(:project) { create(:empty_project) } let(:project) { create(:empty_project) }
let(:issue) { create(:issue, project: project) } let(:issue) { create(:issue, project: project) }
let(:attachment) { subject[:attachments].first } let(:attachment) { subject[:attachments].first }
......
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