From 67fde38806bd843c8008766edf49023e4c63df81 Mon Sep 17 00:00:00 2001
From: "Z.J. van de Weg" <git@zjvandeweg.nl>
Date: Mon, 21 Nov 2016 13:43:31 +0100
Subject: [PATCH] Improve the mattermost help box

Also added tests, and moved the slack test to a better location.
---
 .../mattermost_slash_commands_service.rb      |  7 ---
 .../_help.html.haml                           | 12 ++---
 .../zj-mattermost-command-help-message.yml    |  4 ++
 .../services/mattermost_slash_command_spec.rb | 48 +++++++++++++++++++
 .../slack_service_spec.rb                     |  0
 5 files changed, 58 insertions(+), 13 deletions(-)
 rename app/views/projects/services/{mattermost_command => mattermost_slash_commands}/_help.html.haml (89%)
 create mode 100644 changelogs/unreleased/zj-mattermost-command-help-message.yml
 create mode 100644 spec/features/projects/services/mattermost_slash_command_spec.rb
 rename spec/features/projects/{slack_service => services}/slack_service_spec.rb (100%)

diff --git a/app/models/project_services/mattermost_slash_commands_service.rb b/app/models/project_services/mattermost_slash_commands_service.rb
index 67902329593..33431f41dc2 100644
--- a/app/models/project_services/mattermost_slash_commands_service.rb
+++ b/app/models/project_services/mattermost_slash_commands_service.rb
@@ -19,13 +19,6 @@ class MattermostSlashCommandsService < ChatService
     'mattermost_slash_commands'
   end
 
-  def help
-    "This service allows you to use slash commands with your Mattermost installation.<br/>
-    To setup this Service you need to create a new <b>Slash commands</b> in your Mattermost integration panel.<br/>
-    <br/>
-    Create integration with URL #{service_trigger_url(self)} and enter the token below."
-  end
-
   def fields
     [
       { type: 'text', name: 'token', placeholder: '' }
diff --git a/app/views/projects/services/mattermost_command/_help.html.haml b/app/views/projects/services/mattermost_slash_commands/_help.html.haml
similarity index 89%
rename from app/views/projects/services/mattermost_command/_help.html.haml
rename to app/views/projects/services/mattermost_slash_commands/_help.html.haml
index c6e0e883752..15aa2006c02 100644
--- a/app/views/projects/services/mattermost_command/_help.html.haml
+++ b/app/views/projects/services/mattermost_slash_commands/_help.html.haml
@@ -1,5 +1,5 @@
 - pretty_path_with_namespace = "#{@project ? @project.namespace.name : 'namespace'} / #{@project ? @project.name : 'name'}"
-- run_actions_text = "Run action on the GitLab project: #{pretty_path_with_namespace}"
+- run_actions_text = "Perform common operations on this project: #{pretty_path_with_namespace}"
 
 .well
   %p
@@ -15,7 +15,7 @@
       %li
         1.
         = link_to 'Enable custom slash commands', 'https://docs.mattermost.com/developer/slash-commands.html#enabling-custom-commands'
-        on your Mattermost installation.
+        on your Mattermost installation
       %li
         2.
         = link_to 'Add a slash command', 'https://docs.mattermost.com/developer/slash-commands.html#set-up-a-custom-command'
@@ -44,9 +44,9 @@
         %p Fill in the word that works best for your team.
         %p
           Suggestions:
-          %code= @project ? @project.name : 'project_name'
-          %code= @project ? @project.namespace.name : 'namespace_name'
-          %code= @project ? @project.name_with_namespace : 'namespace_name/project_name'
+          %code= 'gitlab'
+          %code= @project.path # Path contains no spaces, but dashes
+          %code= @project.path_with_namespace
 
     .form-group
       = label_tag :request_url, 'Request URL', class: 'col-sm-2 col-xs-12 control-label'
@@ -69,7 +69,7 @@
     .form-group
       = label_tag :response_icon, 'Response icon', class: 'col-sm-2 col-xs-12 control-label'
       .col-sm-10.col-xs-12.input-group
-        = text_field_tag :response_icon, asset_path('gitlab_logo.png'), class: 'form-control input-sm', readonly: 'readonly'
+        = text_field_tag :response_icon, asset_url('gitlab_logo.png'), class: 'form-control input-sm', readonly: 'readonly'
         .input-group-btn
           = clipboard_button(clipboard_target: '#response_icon')
 
diff --git a/changelogs/unreleased/zj-mattermost-command-help-message.yml b/changelogs/unreleased/zj-mattermost-command-help-message.yml
new file mode 100644
index 00000000000..fab238a8d8d
--- /dev/null
+++ b/changelogs/unreleased/zj-mattermost-command-help-message.yml
@@ -0,0 +1,4 @@
+---
+title: Add help message for configuring Mattermost slash commands
+merge_request: 7558
+author: 
diff --git a/spec/features/projects/services/mattermost_slash_command_spec.rb b/spec/features/projects/services/mattermost_slash_command_spec.rb
new file mode 100644
index 00000000000..f474e7e891b
--- /dev/null
+++ b/spec/features/projects/services/mattermost_slash_command_spec.rb
@@ -0,0 +1,48 @@
+require 'spec_helper'
+
+feature 'Setup Mattermost slash commands', feature: true do
+  include WaitForAjax
+
+  let(:user) { create(:user) }
+  let(:project) { create(:project) }
+  let(:service) { project.create_mattermost_slash_commands_service }
+
+  before do
+    project.team << [user, :master]
+    login_as(user)
+  end
+
+  describe 'user visites the mattermost slash command config page', js: true do
+    it 'shows a help message' do
+      visit edit_namespace_project_service_path(project.namespace, project, service)
+
+      wait_for_ajax
+
+      expect(page).to have_content("This service allows GitLab users to perform common")
+    end
+  end
+
+  describe 'saving a token' do
+    let(:token) { ('a'..'z').to_a.join }
+
+    it 'shows the token after saving' do
+      visit edit_namespace_project_service_path(project.namespace, project, service)
+
+      fill_in 'service_token', with: token
+      click_on 'Save'
+
+      value = find_field('service_token').value
+
+      expect(value).to eq(token)
+    end
+  end
+
+  describe 'the trigger url' do
+    it 'shows the correct url' do
+      visit edit_namespace_project_service_path(project.namespace, project, service)
+
+      value = find_field('request_url').value
+      expect(value).to match("api/v3/projects/#{project.id}/services/mattermost_slash_commands/trigger")
+    end
+  end
+end
diff --git a/spec/features/projects/slack_service/slack_service_spec.rb b/spec/features/projects/services/slack_service_spec.rb
similarity index 100%
rename from spec/features/projects/slack_service/slack_service_spec.rb
rename to spec/features/projects/services/slack_service_spec.rb
-- 
GitLab