summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGELOG16
-rw-r--r--Gemfile2
-rw-r--r--Gemfile.lock10
-rw-r--r--VERSION2
-rw-r--r--app/assets/javascripts/project.js.coffee5
-rw-r--r--app/assets/stylesheets/base/variables.scss1
-rw-r--r--app/assets/stylesheets/pages/issuable.scss6
-rw-r--r--app/assets/stylesheets/pages/issues.scss13
-rw-r--r--app/assets/stylesheets/pages/tree.scss3
-rw-r--r--app/controllers/projects/issues_controller.rb2
-rw-r--r--app/controllers/projects/services_controller.rb7
-rw-r--r--app/models/note.rb4
-rw-r--r--app/models/project_services/flowdock_service.rb2
-rw-r--r--app/models/project_services/hipchat_service.rb10
-rw-r--r--app/models/service.rb8
-rw-r--r--app/views/admin/users/index.html.haml1
-rw-r--r--app/views/projects/_home_panel.html.haml5
-rw-r--r--app/views/projects/merge_requests/_show.html.haml18
-rw-r--r--app/views/projects/merge_requests/widget/open/_accept.html.haml1
-rw-r--r--doc/api/notes.md10
-rw-r--r--doc/gitlab-basics/README.md2
-rw-r--r--doc/gitlab-basics/add-image.md62
-rw-r--r--lib/api/entities.rb3
-rw-r--r--lib/backup/database.rb7
-rw-r--r--lib/gitlab/markup_helper.rb2
-rw-r--r--spec/controllers/projects/issues_controller_spec.rb37
-rw-r--r--spec/controllers/projects/services_controller_spec.rb35
-rw-r--r--spec/lib/gitlab/markup_helper_spec.rb2
-rw-r--r--spec/models/project_services/flowdock_service_spec.rb12
-rw-r--r--spec/models/project_services/hipchat_service_spec.rb8
-rw-r--r--spec/models/service_spec.rb10
31 files changed, 261 insertions, 45 deletions
diff --git a/CHANGELOG b/CHANGELOG
index 49c6bae437c..70501908986 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,6 +1,7 @@
Please view this file on the master branch, on stable branches it's out of date.
v 7.14.0 (unreleased)
+ - Provide more feedback what went wrong if HipChat service failed test (Stan Hu)
- Disable turbolinks when linking to Bitbucket import status (Stan Hu)
- Fix broken code import and display error messages if something went wrong with creating project (Stan Hu)
- Fix corrupted binary files when using API files endpoint (Stan Hu)
@@ -27,14 +28,11 @@ v 7.14.0 (unreleased)
- Fix file upload dialog for comment editing (Daniel Gerhardt)
- Set OmniAuth full_host parameter to ensure redirect URIs are correct (Stan Hu)
- Return comments in created order in merge request API (Stan Hu)
+ - Disable internal issue tracker controller if external tracker is used (Stan Hu)
- Expire Rails cache entries after two weeks to prevent endless Redis growth
- Add support for destroying project milestones (Stan Hu)
- - Add fetch command to the MR page.
- Allow custom backup archive permissions
- - Add fetch command to the MR page
- Add project star and fork count, group avatar URL and user/group web URL attributes to API
- - Fix bug causing Bitbucket importer to crash when OAuth application had been removed.
- - Add fetch command to the MR page.
- Show who last edited a comment if it wasn't the original author
- Send notification to all participants when MR is merged.
- Add ability to manage user email addresses via the API.
@@ -56,6 +54,16 @@ v 7.14.0 (unreleased)
- Include branch/tag name in archive file and directory name
- Add dropzone upload progress
- Add a label for merged branches on branches page (Florent Baldino)
+ - Detect .mkd and .mkdn files as markdown (Ben Boeckel)
+ - Fix: User search feature in admin area does not respect filters
+ - Set max-width for README, issue and merge request description for easier read on big screens
+ - Update Flowdock integration to support new Flowdock API (Boyan Tabakov)
+
+v 7.13.5
+ - Satellites reverted
+
+v 7.13.4
+ - Allow users to send abuse reports
- Fix redirection after sign in when using auto_sign_in_with_provider
v 7.13.3
diff --git a/Gemfile b/Gemfile
index 2483a7d24a3..6933930e253 100644
--- a/Gemfile
+++ b/Gemfile
@@ -150,7 +150,7 @@ gem 'tinder', '~> 1.9.2'
gem 'hipchat', '~> 1.5.0'
# Flowdock integration
-gem "gitlab-flowdock-git-hook", "~> 0.4.2"
+gem "gitlab-flowdock-git-hook", "~> 1.0.1"
# Gemnasium integration
gem "gemnasium-gitlab-service", "~> 0.2"
diff --git a/Gemfile.lock b/Gemfile.lock
index bff605df65e..043364a9689 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -183,6 +183,9 @@ GEM
ffi (1.9.8)
fission (0.5.0)
CFPropertyList (~> 2.2)
+ flowdock (0.7.0)
+ httparty (~> 0.7)
+ multi_json
fog (1.25.0)
fog-brightbox (~> 0.4)
fog-core (~> 1.25)
@@ -255,7 +258,8 @@ GEM
racc
github-markup (1.3.1)
posix-spawn (~> 0.3.8)
- gitlab-flowdock-git-hook (0.4.2.2)
+ gitlab-flowdock-git-hook (1.0.1)
+ flowdock (~> 0.7)
gitlab-grit (>= 2.4.1)
multi_json
gitlab-grack (2.0.2)
@@ -779,7 +783,7 @@ DEPENDENCIES
fuubar (~> 2.0.0)
gemnasium-gitlab-service (~> 0.2)
github-markup
- gitlab-flowdock-git-hook (~> 0.4.2)
+ gitlab-flowdock-git-hook (~> 1.0.1)
gitlab-grack (~> 2.0.2)
gitlab-linguist (~> 3.0.1)
gitlab_emoji (~> 0.1)
@@ -875,4 +879,4 @@ DEPENDENCIES
wikicloth (= 0.8.1)
BUNDLED WITH
- 1.10.5
+ 1.10.6
diff --git a/VERSION b/VERSION
index 5778e530e10..da8322eb293 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-7.13.0.pre
+7.14.0.pre
diff --git a/app/assets/javascripts/project.js.coffee b/app/assets/javascripts/project.js.coffee
index 87c1b67a772..39a433dfc91 100644
--- a/app/assets/javascripts/project.js.coffee
+++ b/app/assets/javascripts/project.js.coffee
@@ -24,8 +24,3 @@ class @Project
$.cookie('hide_no_password_message', 'false', { path: path })
$(@).parents('.no-password-message').remove()
e.preventDefault()
-
- $('.js-toggle-clone-holder').on 'click', (e) ->
- cloneHolder.toggle()
-
- cloneHolder.hide() unless $('.empty-project').length
diff --git a/app/assets/stylesheets/base/variables.scss b/app/assets/stylesheets/base/variables.scss
index 08f153dfbc9..cb439a0e0bf 100644
--- a/app/assets/stylesheets/base/variables.scss
+++ b/app/assets/stylesheets/base/variables.scss
@@ -13,6 +13,7 @@ $code_line_height: 1.5;
$border-color: #E5E5E5;
$background-color: #f5f5f5;
$header-height: 50px;
+$readable-width: 1100px;
/*
diff --git a/app/assets/stylesheets/pages/issuable.scss b/app/assets/stylesheets/pages/issuable.scss
index 586e7b5f8da..3f617e72b02 100644
--- a/app/assets/stylesheets/pages/issuable.scss
+++ b/app/assets/stylesheets/pages/issuable.scss
@@ -45,3 +45,9 @@
.btn { font-size: 13px; }
}
+
+.issuable-details {
+ .description {
+ max-width: $readable-width;
+ }
+}
diff --git a/app/assets/stylesheets/pages/issues.scss b/app/assets/stylesheets/pages/issues.scss
index 3572f33e91f..b628f99f22c 100644
--- a/app/assets/stylesheets/pages/issues.scss
+++ b/app/assets/stylesheets/pages/issues.scss
@@ -4,14 +4,25 @@
position: relative;
.issue-title {
- margin-bottom: 5px;
font-size: $list-font-size;
+ margin-bottom: 5px;
font-weight: bold;
+ float: left;
+ width: 97.7%;
+ }
+
+ @media screen and (max-width: 1100px) {
+ .issues-list .issue .issue-title {
+ width: 97%;
+ }
}
.issue-info {
color: #999;
font-size: 13px;
+ display: inline-block;
+ width: 100%;
+ padding: 0 0 0 20px;
}
.issue-check {
diff --git a/app/assets/stylesheets/pages/tree.scss b/app/assets/stylesheets/pages/tree.scss
index 092918e4de1..5f1a3db4fb6 100644
--- a/app/assets/stylesheets/pages/tree.scss
+++ b/app/assets/stylesheets/pages/tree.scss
@@ -116,6 +116,9 @@
}
.readme-holder {
+ margin: 0 auto;
+ max-width: $readable-width;
+
.readme-file-title {
font-size: 14px;
font-weight: bold;
diff --git a/app/controllers/projects/issues_controller.rb b/app/controllers/projects/issues_controller.rb
index bfafdeeb1fb..0f89f2e88cc 100644
--- a/app/controllers/projects/issues_controller.rb
+++ b/app/controllers/projects/issues_controller.rb
@@ -131,7 +131,7 @@ class Projects::IssuesController < Projects::ApplicationController
end
def module_enabled
- return render_404 unless @project.issues_enabled
+ return render_404 unless @project.issues_enabled && @project.default_issues_tracker?
end
# Since iids are implemented only in 6.1
diff --git a/app/controllers/projects/services_controller.rb b/app/controllers/projects/services_controller.rb
index 1e435be8275..01105532479 100644
--- a/app/controllers/projects/services_controller.rb
+++ b/app/controllers/projects/services_controller.rb
@@ -39,10 +39,13 @@ class Projects::ServicesController < Projects::ApplicationController
def test
data = Gitlab::PushDataBuilder.build_sample(project, current_user)
- if @service.execute(data)
+ outcome = @service.test(data)
+ if outcome[:success]
message = { notice: 'We sent a request to the provided URL' }
else
- message = { alert: 'We tried to send a request to the provided URL but an error occured' }
+ error_message = "We tried to send a request to the provided URL but an error occurred"
+ error_message << ": #{outcome[:result]}" if outcome[:result].present?
+ message = { alert: error_message }
end
redirect_to :back, message
diff --git a/app/models/note.rb b/app/models/note.rb
index a99d428b02d..913a8c00337 100644
--- a/app/models/note.rb
+++ b/app/models/note.rb
@@ -360,6 +360,10 @@ class Note < ActiveRecord::Base
create_new_cross_references!(project, author)
end
+ def system?
+ read_attribute(:system)
+ end
+
def editable?
!read_attribute(:system)
end
diff --git a/app/models/project_services/flowdock_service.rb b/app/models/project_services/flowdock_service.rb
index bf801ba61ad..27fc19379f1 100644
--- a/app/models/project_services/flowdock_service.rb
+++ b/app/models/project_services/flowdock_service.rb
@@ -38,7 +38,7 @@ class FlowdockService < Service
def fields
[
- { type: 'text', name: 'token', placeholder: '' }
+ { type: 'text', name: 'token', placeholder: 'Flowdock Git source token' }
]
end
diff --git a/app/models/project_services/hipchat_service.rb b/app/models/project_services/hipchat_service.rb
index 6761f00183e..7a15a861abc 100644
--- a/app/models/project_services/hipchat_service.rb
+++ b/app/models/project_services/hipchat_service.rb
@@ -60,6 +60,16 @@ class HipchatService < Service
gate[room].send('GitLab', message, message_options)
end
+ def test(data)
+ begin
+ result = execute(data)
+ rescue StandardError => error
+ return { success: false, result: error }
+ end
+
+ { success: true, result: result }
+ end
+
private
def gate
diff --git a/app/models/service.rb b/app/models/service.rb
index 818a6808db5..dcef2866c3b 100644
--- a/app/models/service.rb
+++ b/app/models/service.rb
@@ -87,10 +87,16 @@ class Service < ActiveRecord::Base
%w(push tag_push issue merge_request)
end
- def execute
+ def execute(data)
# implement inside child
end
+ def test(data)
+ # default implementation
+ result = execute(data)
+ { success: result.present?, result: result }
+ end
+
def can_test?
!project.empty_repo?
end
diff --git a/app/views/admin/users/index.html.haml b/app/views/admin/users/index.html.haml
index b0d31170704..5e40d95d1c5 100644
--- a/app/views/admin/users/index.html.haml
+++ b/app/views/admin/users/index.html.haml
@@ -33,6 +33,7 @@
= form_tag admin_users_path, method: :get, class: 'form-inline' do
.form-group
= search_field_tag :name, params[:name], placeholder: 'Name, email or username', class: 'form-control'
+ = hidden_field_tag "filter", params[:filter]
= button_tag class: 'btn btn-primary' do
%i.fa.fa-search
%hr
diff --git a/app/views/projects/_home_panel.html.haml b/app/views/projects/_home_panel.html.haml
index 71e92970305..bec40ec27a5 100644
--- a/app/views/projects/_home_panel.html.haml
+++ b/app/views/projects/_home_panel.html.haml
@@ -21,11 +21,6 @@
= forked_from_project.namespace.try(:name)
- if can? current_user, :download_code, @project
- = link_to "#", class: 'btn js-toggle-clone-holder' do
- = icon('cloud-download fw')
- Clone
-
- - if can? current_user, :download_code, @project
= link_to archive_namespace_project_repository_path(@project.namespace, @project, ref: @ref, format: 'zip'), class: 'btn', rel: 'nofollow' do
= icon('download fw')
Download
diff --git a/app/views/projects/merge_requests/_show.html.haml b/app/views/projects/merge_requests/_show.html.haml
index cd53856c4a6..007f6c6a787 100644
--- a/app/views/projects/merge_requests/_show.html.haml
+++ b/app/views/projects/merge_requests/_show.html.haml
@@ -22,19 +22,19 @@
%li= link_to "Email Patches", merge_request_path(@merge_request, format: :patch)
%li= link_to "Plain Diff", merge_request_path(@merge_request, format: :diff)
.light
- %div
- %span Request to merge
- %span.label-branch #{source_branch_with_namespace(@merge_request)}
- %span into
- %span.label-branch #{@merge_request.target_branch}
- - if @merge_request.open? && !@merge_request.branch_missing?
- %div
- If you want to try or merge this request manually, you can use the
- = link_to "command line", "#modal_merge_info", class: "how_to_merge_link vlink", title: "How To Merge", "data-toggle" => "modal"
+ %span Request to merge
+ %span.label-branch #{source_branch_with_namespace(@merge_request)}
+ %span into
+ %span.label-branch #{@merge_request.target_branch}
= render "projects/merge_requests/show/how_to_merge"
= render "projects/merge_requests/widget/show.html.haml"
+ - if @merge_request.open? && @merge_request.can_be_merged?
+ .light
+ You can also accept this merge request manually using the
+ = link_to "command line", "#modal_merge_info", class: "how_to_merge_link vlink", title: "How To Merge", "data-toggle" => "modal"
+
- if @commits.present?
%ul.nav.nav-tabs.merge-request-tabs
%li.notes-tab
diff --git a/app/views/projects/merge_requests/widget/open/_accept.html.haml b/app/views/projects/merge_requests/widget/open/_accept.html.haml
index d8f6ce91c0c..df20205de1c 100644
--- a/app/views/projects/merge_requests/widget/open/_accept.html.haml
+++ b/app/views/projects/merge_requests/widget/open/_accept.html.haml
@@ -23,4 +23,3 @@
btn = $('.accept_merge_request')
btn.disable()
btn.html("<i class='fa fa-spinner fa-spin'></i> Merge in progress")
-
diff --git a/doc/api/notes.md b/doc/api/notes.md
index ee2f9fa0eac..c683cb883d4 100644
--- a/doc/api/notes.md
+++ b/doc/api/notes.md
@@ -31,7 +31,10 @@ Parameters:
"state": "active",
"created_at": "2013-09-30T13:46:01Z"
},
- "created_at": "2013-10-02T09:22:45Z"
+ "created_at": "2013-10-02T09:22:45Z",
+ "system": true,
+ "upvote": false,
+ "downvote": false
},
{
"id": 305,
@@ -45,7 +48,10 @@ Parameters:
"state": "active",
"created_at": "2013-09-30T13:46:01Z"
},
- "created_at": "2013-10-02T09:56:03Z"
+ "created_at": "2013-10-02T09:56:03Z",
+ "system": false,
+ "upvote": false,
+ "downvote": false
}
]
```
diff --git a/doc/gitlab-basics/README.md b/doc/gitlab-basics/README.md
index 9491f8c91fe..b904c70e980 100644
--- a/doc/gitlab-basics/README.md
+++ b/doc/gitlab-basics/README.md
@@ -20,4 +20,6 @@ Step-by-step guides on the basics of working with Git and GitLab.
* [Add a file](add-file.md)
+* [Add an image](add-image.md)
+
* [Create a Merge Request](add-merge-request.md)
diff --git a/doc/gitlab-basics/add-image.md b/doc/gitlab-basics/add-image.md
new file mode 100644
index 00000000000..476b48a217c
--- /dev/null
+++ b/doc/gitlab-basics/add-image.md
@@ -0,0 +1,62 @@
+# How to add an image
+
+The following are the steps to add images to your repository in
+GitLab:
+
+Find the image that you’d like to add.
+
+In your computer files, find the GitLab project to which you'd like to add the image
+(you'll find it as a regular file). Click on every file until you find exactly where you'd
+like to add the image. There, paste the image.
+
+Go to your [shell](command-line-commands.md), and add the following commands:
+
+Add this command for every directory that you'd like to open:
+```
+cd NAME-OF-FILE-YOU'D-LIKE-TO-OPEN
+```
+
+Create a new branch:
+```
+git checkout -b NAME-OF-BRANCH
+```
+
+Check if your image was correctly added to the directory:
+```
+ls
+```
+
+You should see the name of the image in the list shown.
+
+Move up the hierarchy through directories:
+```
+cd ../
+```
+
+Check the status and you should see your image’s name in red:
+```
+git status
+```
+
+Add your changes:
+```
+git add NAME-OF-YOUR-IMAGE
+```
+
+Check the status and you should see your image’s name in green:
+```
+git status
+```
+
+Add the commit:
+```
+git commit -m “DESCRIBE COMMIT IN A FEW WORDS”
+```
+
+Now you can push (send) your changes (in the branch NAME-OF-BRANCH) to GitLab (the git remote named 'origin'):
+```
+git push origin NAME-OF-BRANCH
+```
+
+Your image will be added to your branch in your repository in GitLab. Create a [Merge Request](add-merge-request.md)
+to integrate your changes to your project.
diff --git a/lib/api/entities.rb b/lib/api/entities.rb
index b5556682449..09d231af41b 100644
--- a/lib/api/entities.rb
+++ b/lib/api/entities.rb
@@ -205,6 +205,9 @@ module API
expose :attachment_identifier, as: :attachment
expose :author, using: Entities::UserBasic
expose :created_at
+ expose :system?, as: :system
+ expose :upvote?, as: :upvote
+ expose :downvote?, as: :downvote
end
class MRNote < Grape::Entity
diff --git a/lib/backup/database.rb b/lib/backup/database.rb
index bbb230a10f0..939f28fc1c6 100644
--- a/lib/backup/database.rb
+++ b/lib/backup/database.rb
@@ -18,6 +18,8 @@ module Backup
success = case config["adapter"]
when /^mysql/ then
$progress.print "Dumping MySQL database #{config['database']} ... "
+ # Workaround warnings from MySQL 5.6 about passwords on cmd line
+ ENV['MYSQL_PWD'] = config["password"].to_s if config["password"]
system('mysqldump', *mysql_args, config['database'], out: db_file_name)
when "postgresql" then
$progress.print "Dumping PostgreSQL database #{config['database']} ... "
@@ -43,6 +45,8 @@ module Backup
success = case config["adapter"]
when /^mysql/ then
$progress.print "Restoring MySQL database #{config['database']} ... "
+ # Workaround warnings from MySQL 5.6 about passwords on cmd line
+ ENV['MYSQL_PWD'] = config["password"].to_s if config["password"]
system('mysql', *mysql_args, config['database'], in: db_file_name)
when "postgresql" then
$progress.print "Restoring PostgreSQL database #{config['database']} ... "
@@ -69,8 +73,7 @@ module Backup
'port' => '--port',
'socket' => '--socket',
'username' => '--user',
- 'encoding' => '--default-character-set',
- 'password' => '--password'
+ 'encoding' => '--default-character-set'
}
args.map { |opt, arg| "#{arg}=#{config[opt]}" if config[opt] }.compact
end
diff --git a/lib/gitlab/markup_helper.rb b/lib/gitlab/markup_helper.rb
index b1991e2e285..a5f767b134d 100644
--- a/lib/gitlab/markup_helper.rb
+++ b/lib/gitlab/markup_helper.rb
@@ -21,7 +21,7 @@ module Gitlab
#
# Returns boolean
def gitlab_markdown?(filename)
- filename.downcase.end_with?(*%w(.mdown .md .markdown))
+ filename.downcase.end_with?(*%w(.mdown .mkd .mkdn .md .markdown))
end
# Public: Determines if the given filename has AsciiDoc extension.
diff --git a/spec/controllers/projects/issues_controller_spec.rb b/spec/controllers/projects/issues_controller_spec.rb
new file mode 100644
index 00000000000..871b9219ca9
--- /dev/null
+++ b/spec/controllers/projects/issues_controller_spec.rb
@@ -0,0 +1,37 @@
+require('spec_helper')
+
+describe Projects::IssuesController do
+ let(:project) { create(:project) }
+ let(:user) { create(:user) }
+ let(:issue) { create(:issue, project: project) }
+
+ before do
+ sign_in(user)
+ project.team << [user, :developer]
+ controller.instance_variable_set(:@project, project)
+ end
+
+ describe "GET #index" do
+ it "returns index" do
+ get :index, namespace_id: project.namespace.id, project_id: project.id
+
+ expect(response.status).to eq(200)
+ end
+
+ it "returns 404 when issues are disabled" do
+ project.issues_enabled = false
+ project.save
+
+ get :index, namespace_id: project.namespace.id, project_id: project.id
+ expect(response.status).to eq(404)
+ end
+
+ it "returns 404 when external issue tracker is enabled" do
+ allow(project).to receive(:default_issues_tracker?).and_return(false)
+
+ get :index, namespace_id: project.namespace.id, project_id: project.id
+ expect(response.status).to eq(404)
+ end
+
+ end
+end
diff --git a/spec/controllers/projects/services_controller_spec.rb b/spec/controllers/projects/services_controller_spec.rb
new file mode 100644
index 00000000000..d4ecd98e12d
--- /dev/null
+++ b/spec/controllers/projects/services_controller_spec.rb
@@ -0,0 +1,35 @@
+require 'spec_helper'
+
+describe Projects::ServicesController do
+ let(:project) { create(:project) }
+ let(:user) { create(:user) }
+ let(:service) { create(:service, project: project) }
+
+ before do
+ sign_in(user)
+ project.team << [user, :master]
+ controller.instance_variable_set(:@project, project)
+ controller.instance_variable_set(:@service, service)
+ request.env["HTTP_REFERER"] = "/"
+ end
+
+ describe "#test" do
+ context 'success' do
+ it "should redirect and show success message" do
+ expect(service).to receive(:test).and_return({ success: true, result: 'done' })
+ get :test, namespace_id: project.namespace.id, project_id: project.id, id: service.id, format: :html
+ expect(response.status).to redirect_to('/')
+ expect(flash[:notice]).to eq('We sent a request to the provided URL')
+ end
+ end
+
+ context 'failure' do
+ it "should redirect and show failure message" do
+ expect(service).to receive(:test).and_return({ success: false, result: 'Bad test' })
+ get :test, namespace_id: project.namespace.id, project_id: project.id, id: service.id, format: :html
+ expect(response.status).to redirect_to('/')
+ expect(flash[:alert]).to eq('We tried to send a request to the provided URL but an error occurred: Bad test')
+ end
+ end
+ end
+end
diff --git a/spec/lib/gitlab/markup_helper_spec.rb b/spec/lib/gitlab/markup_helper_spec.rb
index 7e716e866b1..e610fab05da 100644
--- a/spec/lib/gitlab/markup_helper_spec.rb
+++ b/spec/lib/gitlab/markup_helper_spec.rb
@@ -15,7 +15,7 @@ describe Gitlab::MarkupHelper do
end
describe '#gitlab_markdown?' do
- %w(mdown md markdown).each do |type|
+ %w(mdown mkd mkdn md markdown).each do |type|
it "returns true for #{type} files" do
expect(Gitlab::MarkupHelper.gitlab_markdown?("README.#{type}")).to be_truthy
end
diff --git a/spec/models/project_services/flowdock_service_spec.rb b/spec/models/project_services/flowdock_service_spec.rb
index 7e5b15cb09e..16296607a94 100644
--- a/spec/models/project_services/flowdock_service_spec.rb
+++ b/spec/models/project_services/flowdock_service_spec.rb
@@ -39,15 +39,19 @@ describe FlowdockService do
token: 'verySecret'
)
@sample_data = Gitlab::PushDataBuilder.build_sample(project, user)
- @api_url = 'https://api.flowdock.com/v1/git/verySecret'
+ @api_url = 'https://api.flowdock.com/v1/messages'
WebMock.stub_request(:post, @api_url)
end
it "should call FlowDock API" do
@flowdock_service.execute(@sample_data)
- expect(WebMock).to have_requested(:post, @api_url).with(
- body: /#{@sample_data[:before]}.*#{@sample_data[:after]}.*#{project.path}/
- ).once
+ @sample_data[:commits].each do |commit|
+ # One request to Flowdock per new commit
+ next if commit[:id] == @sample_data[:before]
+ expect(WebMock).to have_requested(:post, @api_url).with(
+ body: /#{commit[:id]}.*#{project.path}/
+ ).once
+ end
end
end
end
diff --git a/spec/models/project_services/hipchat_service_spec.rb b/spec/models/project_services/hipchat_service_spec.rb
index 4707673269a..65d16beef91 100644
--- a/spec/models/project_services/hipchat_service_spec.rb
+++ b/spec/models/project_services/hipchat_service_spec.rb
@@ -47,6 +47,14 @@ describe HipchatService do
WebMock.stub_request(:post, api_url)
end
+ it 'should test and return errors' do
+ allow(hipchat).to receive(:execute).and_raise(StandardError, 'no such room')
+ result = hipchat.test(push_sample_data)
+
+ expect(result[:success]).to be_falsey
+ expect(result[:result].to_s).to eq('no such room')
+ end
+
it 'should use v1 if version is provided' do
allow(hipchat).to receive(:api_version).and_return('v1')
expect(HipChat::Client).to receive(:new).
diff --git a/spec/models/service_spec.rb b/spec/models/service_spec.rb
index ca11758ee06..a213ffe6c4b 100644
--- a/spec/models/service_spec.rb
+++ b/spec/models/service_spec.rb
@@ -46,6 +46,16 @@ describe Service do
describe :can_test do
it { expect(@testable).to eq(true) }
end
+
+ describe :test do
+ let(:data) { 'test' }
+
+ it 'test runs execute' do
+ expect(@service).to receive(:execute).with(data)
+
+ @service.test(data)
+ end
+ end
end
describe "With commits" do