Skip to content

Commit

Permalink
Add merge request hook for gitlab
Browse files Browse the repository at this point in the history
  • Loading branch information
olabini committed Mar 2, 2019
1 parent 62ef605 commit 1951a70
Show file tree
Hide file tree
Showing 4 changed files with 75 additions and 0 deletions.
4 changes: 4 additions & 0 deletions lib/codebot/formatters.rb
Expand Up @@ -18,6 +18,7 @@
require 'codebot/formatters/gitlab_job_hook'
require 'codebot/formatters/gitlab_pipeline_hook'
require 'codebot/formatters/gitlab_note_hook'
require 'codebot/formatters/gitlab_merge_request_hook'
require 'codebot/shortener'

module Codebot
Expand Down Expand Up @@ -84,6 +85,9 @@ def self.create_formatter(event, payload, integration) # rubocop:disable Metrics
Formatters::Gitlab::IssueHook.new(payload, shortener(integration))
when :gitlab_note_hook
Formatters::Gitlab::NoteHook.new(payload, shortener(integration))
when :gitlab_merge_request_hook
Formatters::Gitlab::MergeRequestHook.new(payload,
shortener(integration))
else "Error: missing formatter for #{event.inspect}"
end
end
Expand Down
57 changes: 57 additions & 0 deletions lib/codebot/formatters/gitlab_merge_request_hook.rb
@@ -0,0 +1,57 @@
# frozen_string_literal: true

module Codebot
module Formatters
module Gitlab
# Triggers on a Merge Request Hook event
class MergeRequestHook < Formatter
def format
["#{summary}: #{format_url url}"]
end

def summary
default_format % {
repository: format_repository(repository_name),
sender: format_user(sender_name),
action: action,
title: pull_title
}
end

def default_format
'[%<repository>s] %<sender>s %<action>s merge request \'%<title>s\''
end

def repository_name
extract(:project, :path_with_namespace)
end

def sender_name
extract(:user, :name)
end

def summary_url
extract(:object_attributes, :url)
end

def action
case pull_action
when 'open' then 'opened'
when 'close' then 'closed'
when 'reopen' then 'reopened'
when 'update', nil then 'updated'
else pull_action
end
end

def pull_action
extract(:object_attributes, :action)
end

def pull_title
extract(:object_attributes, :title)
end
end
end
end
end
13 changes: 13 additions & 0 deletions spec/codebot/formatters/gitlab_merge_request_hook_spec.rb
@@ -0,0 +1,13 @@
# frozen_string_literal: true

require 'codebot/formatters/gitlab_helpers'

RSpec.describe Codebot::Formatters::Gitlab::MergeRequestHook do
describe '.format' do
it 'formats correctly one entry' do
result = do_format_test('gitlab_merge_request_hook_1',
Codebot::Formatters::Gitlab::MergeRequestHook)
expect(result).to eq ['[gitlabhq/gitlab-test] Administrator opened merge request \'MS-Viewport\': shortened://http://example.com/diaspora/merge_requests/1']
end
end
end
1 change: 1 addition & 0 deletions spec/codebot/formatters/gitlab_wiki_page_hook_spec.rb
@@ -0,0 +1 @@

0 comments on commit 1951a70

Please sign in to comment.