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