Commit 984367f9 authored by Lin Jen-Shin's avatar Lin Jen-Shin

Move those builders to their own namespace, feedback:

https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/5620#note_13540099
parent 80671bf7
...@@ -349,7 +349,7 @@ module Ci ...@@ -349,7 +349,7 @@ module Ci
def execute_hooks def execute_hooks
return unless project return unless project
build_data = Gitlab::BuildDataBuilder.build(self) build_data = Gitlab::DataBuilder::BuildDataBuilder.build(self)
project.execute_hooks(build_data.dup, :build_hooks) project.execute_hooks(build_data.dup, :build_hooks)
project.execute_services(build_data.dup, :build_hooks) project.execute_services(build_data.dup, :build_hooks)
project.running_or_pending_build_count(force: true) project.running_or_pending_build_count(force: true)
......
...@@ -52,7 +52,7 @@ class BuildsEmailService < Service ...@@ -52,7 +52,7 @@ class BuildsEmailService < Service
def test_data(project = nil, user = nil) def test_data(project = nil, user = nil)
build = project.builds.last build = project.builds.last
Gitlab::BuildDataBuilder.build(build) Gitlab::DataBuilder::BuildDataBuilder.build(build)
end end
def fields def fields
......
...@@ -80,7 +80,7 @@ class Service < ActiveRecord::Base ...@@ -80,7 +80,7 @@ class Service < ActiveRecord::Base
end end
def test_data(project, user) def test_data(project, user)
Gitlab::PushDataBuilder.build_sample(project, user) Gitlab::DataBuilder::PushDataBuilder.build_sample(project, user)
end end
def event_channel_names def event_channel_names
......
...@@ -39,7 +39,7 @@ class DeleteBranchService < BaseService ...@@ -39,7 +39,7 @@ class DeleteBranchService < BaseService
end end
def build_push_data(branch) def build_push_data(branch)
Gitlab::PushDataBuilder Gitlab::DataBuilder::PushDataBuilder
.build(project, current_user, branch.target.sha, Gitlab::Git::BLANK_SHA, "#{Gitlab::Git::BRANCH_REF_PREFIX}#{branch.name}", []) .build(project, current_user, branch.target.sha, Gitlab::Git::BLANK_SHA, "#{Gitlab::Git::BRANCH_REF_PREFIX}#{branch.name}", [])
end end
end end
...@@ -33,7 +33,7 @@ class DeleteTagService < BaseService ...@@ -33,7 +33,7 @@ class DeleteTagService < BaseService
end end
def build_push_data(tag) def build_push_data(tag)
Gitlab::PushDataBuilder Gitlab::DataBuilder::PushDataBuilder
.build(project, current_user, tag.target.sha, Gitlab::Git::BLANK_SHA, "#{Gitlab::Git::TAG_REF_PREFIX}#{tag.name}", []) .build(project, current_user, tag.target.sha, Gitlab::Git::BLANK_SHA, "#{Gitlab::Git::TAG_REF_PREFIX}#{tag.name}", [])
end end
end end
...@@ -138,12 +138,12 @@ class GitPushService < BaseService ...@@ -138,12 +138,12 @@ class GitPushService < BaseService
end end
def build_push_data def build_push_data
@push_data ||= Gitlab::PushDataBuilder. @push_data ||= Gitlab::DataBuilder::PushDataBuilder.
build(@project, current_user, params[:oldrev], params[:newrev], params[:ref], push_commits) build(@project, current_user, params[:oldrev], params[:newrev], params[:ref], push_commits)
end end
def build_push_data_system_hook def build_push_data_system_hook
@push_data_system ||= Gitlab::PushDataBuilder. @push_data_system ||= Gitlab::DataBuilder::PushDataBuilder.
build(@project, current_user, params[:oldrev], params[:newrev], params[:ref], []) build(@project, current_user, params[:oldrev], params[:newrev], params[:ref], [])
end end
......
...@@ -34,12 +34,12 @@ class GitTagPushService < BaseService ...@@ -34,12 +34,12 @@ class GitTagPushService < BaseService
end end
end end
Gitlab::PushDataBuilder. Gitlab::DataBuilder::PushDataBuilder.
build(project, current_user, params[:oldrev], params[:newrev], params[:ref], commits, message) build(project, current_user, params[:oldrev], params[:newrev], params[:ref], commits, message)
end end
def build_system_push_data def build_system_push_data
Gitlab::PushDataBuilder. Gitlab::DataBuilder::PushDataBuilder.
build(project, current_user, params[:oldrev], params[:newrev], params[:ref], [], '') build(project, current_user, params[:oldrev], params[:newrev], params[:ref], [], '')
end end
end end
...@@ -16,7 +16,7 @@ module Notes ...@@ -16,7 +16,7 @@ module Notes
end end
def hook_data def hook_data
Gitlab::NoteDataBuilder.build(@note, @note.author) Gitlab::DataBuilder::NoteDataBuilder.build(@note, @note.author)
end end
def execute_note_hooks def execute_note_hooks
......
class TestHookService class TestHookService
def execute(hook, current_user) def execute(hook, current_user)
data = Gitlab::PushDataBuilder.build_sample(hook.project, current_user) data = Gitlab::DataBuilder::PushDataBuilder.
build_sample(hook.project, current_user)
hook.execute(data, 'push_hooks') hook.execute(data, 'push_hooks')
end end
end end
module Gitlab module Gitlab
class BuildDataBuilder module DataBuilder
class << self module BuildDataBuilder
module_function
def build(build) def build(build)
project = build.project project = build.project
commit = build.pipeline commit = build.pipeline
......
module Gitlab module Gitlab
class NoteDataBuilder module DataBuilder
class << self module NoteDataBuilder
module_function
# Produce a hash of post-receive data # Produce a hash of post-receive data
# #
# For all notes: # For all notes:
......
module Gitlab module Gitlab
class PushDataBuilder module DataBuilder
class << self module PushDataBuilder
module_function
# Produce a hash of post-receive data # Produce a hash of post-receive data
# #
# data = { # data = {
......
require 'spec_helper' require 'spec_helper'
describe 'Gitlab::BuildDataBuilder' do describe Gitlab::DataBuilder::BuildDataBuilder do
let(:build) { create(:ci_build) } let(:build) { create(:ci_build) }
describe '.build' do describe '.build' do
let(:data) do let(:data) do
Gitlab::BuildDataBuilder.build(build) Gitlab::DataBuilder::BuildDataBuilder.build(build)
end end
it { expect(data).to be_a(Hash) } it { expect(data).to be_a(Hash) }
......
require 'spec_helper' require 'spec_helper'
describe 'Gitlab::NoteDataBuilder', lib: true do describe Gitlab::DataBuilder::NoteDataBuilder, lib: true do
let(:project) { create(:project) } let(:project) { create(:project) }
let(:user) { create(:user) } let(:user) { create(:user) }
let(:data) { Gitlab::NoteDataBuilder.build(note, user) } let(:data) { Gitlab::DataBuilder::NoteDataBuilder.build(note, user) }
let(:fixed_time) { Time.at(1425600000) } # Avoid time precision errors let(:fixed_time) { Time.at(1425600000) } # Avoid time precision errors
before(:each) do before(:each) do
......
require 'spec_helper' require 'spec_helper'
describe Gitlab::PushDataBuilder, lib: true do describe Gitlab::DataBuilder::PushDataBuilder, lib: true do
let(:project) { create(:project) } let(:project) { create(:project) }
let(:user) { create(:user) } let(:user) { create(:user) }
......
...@@ -39,7 +39,8 @@ describe AssemblaService, models: true do ...@@ -39,7 +39,8 @@ describe AssemblaService, models: true do
token: 'verySecret', token: 'verySecret',
subdomain: 'project_name' subdomain: 'project_name'
) )
@sample_data = Gitlab::PushDataBuilder.build_sample(project, user) @sample_data = Gitlab::DataBuilder::PushDataBuilder.
build_sample(project, user)
@api_url = 'https://atlas.assembla.com/spaces/project_name/github_tool?secret_key=verySecret' @api_url = 'https://atlas.assembla.com/spaces/project_name/github_tool?secret_key=verySecret'
WebMock.stub_request(:post, @api_url) WebMock.stub_request(:post, @api_url)
end end
......
require 'spec_helper' require 'spec_helper'
describe BuildsEmailService do describe BuildsEmailService do
let(:data) { Gitlab::BuildDataBuilder.build(create(:ci_build)) } let(:data) do
Gitlab::DataBuilder::BuildDataBuilder.build(create(:ci_build))
end
describe 'Validations' do describe 'Validations' do
context 'when service is active' do context 'when service is active' do
...@@ -39,7 +41,7 @@ describe BuildsEmailService do ...@@ -39,7 +41,7 @@ describe BuildsEmailService do
describe '#test' do describe '#test' do
it 'sends email' do it 'sends email' do
data = Gitlab::BuildDataBuilder.build(create(:ci_build)) data = Gitlab::DataBuilder::BuildDataBuilder.build(create(:ci_build))
subject.recipients = 'test@gitlab.com' subject.recipients = 'test@gitlab.com'
expect(BuildEmailWorker).to receive(:perform_async) expect(BuildEmailWorker).to receive(:perform_async)
...@@ -49,7 +51,7 @@ describe BuildsEmailService do ...@@ -49,7 +51,7 @@ describe BuildsEmailService do
context 'notify only failed builds is true' do context 'notify only failed builds is true' do
it 'sends email' do it 'sends email' do
data = Gitlab::BuildDataBuilder.build(create(:ci_build)) data = Gitlab::DataBuilder::BuildDataBuilder.build(create(:ci_build))
data[:build_status] = "success" data[:build_status] = "success"
subject.recipients = 'test@gitlab.com' subject.recipients = 'test@gitlab.com'
......
...@@ -84,7 +84,9 @@ describe DroneCiService, models: true do ...@@ -84,7 +84,9 @@ describe DroneCiService, models: true do
include_context :drone_ci_service include_context :drone_ci_service
let(:user) { create(:user, username: 'username') } let(:user) { create(:user, username: 'username') }
let(:push_sample_data) { Gitlab::PushDataBuilder.build_sample(project, user) } let(:push_sample_data) do
Gitlab::DataBuilder::PushDataBuilder.build_sample(project, user)
end
it do it do
service_hook = double service_hook = double
......
...@@ -52,7 +52,8 @@ describe FlowdockService, models: true do ...@@ -52,7 +52,8 @@ describe FlowdockService, models: true do
service_hook: true, service_hook: true,
token: 'verySecret' token: 'verySecret'
) )
@sample_data = Gitlab::PushDataBuilder.build_sample(project, user) @sample_data = Gitlab::DataBuilder::PushDataBuilder.
build_sample(project, user)
@api_url = 'https://api.flowdock.com/v1/messages' @api_url = 'https://api.flowdock.com/v1/messages'
WebMock.stub_request(:post, @api_url) WebMock.stub_request(:post, @api_url)
end end
......
...@@ -55,7 +55,8 @@ describe GemnasiumService, models: true do ...@@ -55,7 +55,8 @@ describe GemnasiumService, models: true do
token: 'verySecret', token: 'verySecret',
api_key: 'GemnasiumUserApiKey' api_key: 'GemnasiumUserApiKey'
) )
@sample_data = Gitlab::PushDataBuilder.build_sample(project, user) @sample_data = Gitlab::DataBuilder::PushDataBuilder.
build_sample(project, user)
end end
it "should call Gemnasium service" do it "should call Gemnasium service" do
expect(Gemnasium::GitlabService).to receive(:execute).with(an_instance_of(Hash)).once expect(Gemnasium::GitlabService).to receive(:execute).with(an_instance_of(Hash)).once
......
...@@ -48,7 +48,9 @@ describe HipchatService, models: true do ...@@ -48,7 +48,9 @@ describe HipchatService, models: true do
let(:project_name) { project.name_with_namespace.gsub(/\s/, '') } let(:project_name) { project.name_with_namespace.gsub(/\s/, '') }
let(:token) { 'verySecret' } let(:token) { 'verySecret' }
let(:server_url) { 'https://hipchat.example.com'} let(:server_url) { 'https://hipchat.example.com'}
let(:push_sample_data) { Gitlab::PushDataBuilder.build_sample(project, user) } let(:push_sample_data) do
Gitlab::DataBuilder::PushDataBuilder.build_sample(project, user)
end
before(:each) do before(:each) do
allow(hipchat).to receive_messages( allow(hipchat).to receive_messages(
...@@ -108,7 +110,15 @@ describe HipchatService, models: true do ...@@ -108,7 +110,15 @@ describe HipchatService, models: true do
end end
context 'tag_push events' do context 'tag_push events' do
let(:push_sample_data) { Gitlab::PushDataBuilder.build(project, user, Gitlab::Git::BLANK_SHA, '1' * 40, 'refs/tags/test', []) } let(:push_sample_data) do
Gitlab::DataBuilder::PushDataBuilder.build(
project,
user,
Gitlab::Git::BLANK_SHA,
'1' * 40,
'refs/tags/test',
[])
end
it "should call Hipchat API for tag push events" do it "should call Hipchat API for tag push events" do
hipchat.execute(push_sample_data) hipchat.execute(push_sample_data)
...@@ -185,7 +195,7 @@ describe HipchatService, models: true do ...@@ -185,7 +195,7 @@ describe HipchatService, models: true do
end end
it "should call Hipchat API for commit comment events" do it "should call Hipchat API for commit comment events" do
data = Gitlab::NoteDataBuilder.build(commit_note, user) data = Gitlab::DataBuilder::NoteDataBuilder.build(commit_note, user)
hipchat.execute(data) hipchat.execute(data)
expect(WebMock).to have_requested(:post, api_url).once expect(WebMock).to have_requested(:post, api_url).once
...@@ -217,7 +227,7 @@ describe HipchatService, models: true do ...@@ -217,7 +227,7 @@ describe HipchatService, models: true do
end end
it "should call Hipchat API for merge request comment events" do it "should call Hipchat API for merge request comment events" do
data = Gitlab::NoteDataBuilder.build(merge_request_note, user) data = Gitlab::DataBuilder::NoteDataBuilder.build(merge_request_note, user)
hipchat.execute(data) hipchat.execute(data)
expect(WebMock).to have_requested(:post, api_url).once expect(WebMock).to have_requested(:post, api_url).once
...@@ -244,7 +254,7 @@ describe HipchatService, models: true do ...@@ -244,7 +254,7 @@ describe HipchatService, models: true do
end end
it "should call Hipchat API for issue comment events" do it "should call Hipchat API for issue comment events" do
data = Gitlab::NoteDataBuilder.build(issue_note, user) data = Gitlab::DataBuilder::NoteDataBuilder.build(issue_note, user)
hipchat.execute(data) hipchat.execute(data)
message = hipchat.send(:create_message, data) message = hipchat.send(:create_message, data)
...@@ -270,7 +280,7 @@ describe HipchatService, models: true do ...@@ -270,7 +280,7 @@ describe HipchatService, models: true do
end end
it "should call Hipchat API for snippet comment events" do it "should call Hipchat API for snippet comment events" do
data = Gitlab::NoteDataBuilder.build(snippet_note, user) data = Gitlab::DataBuilder::NoteDataBuilder.build(snippet_note, user)
hipchat.execute(data) hipchat.execute(data)
expect(WebMock).to have_requested(:post, api_url).once expect(WebMock).to have_requested(:post, api_url).once
...@@ -292,7 +302,7 @@ describe HipchatService, models: true do ...@@ -292,7 +302,7 @@ describe HipchatService, models: true do
context 'build events' do context 'build events' do
let(:build) { create(:ci_build) } let(:build) { create(:ci_build) }
let(:data) { Gitlab::BuildDataBuilder.build(build) } let(:data) { Gitlab::DataBuilder::BuildDataBuilder.build(build) }
context 'for failed' do context 'for failed' do
before { build.drop } before { build.drop }
......
...@@ -46,7 +46,9 @@ describe IrkerService, models: true do ...@@ -46,7 +46,9 @@ describe IrkerService, models: true do
let(:irker) { IrkerService.new } let(:irker) { IrkerService.new }
let(:user) { create(:user) } let(:user) { create(:user) }
let(:project) { create(:project) } let(:project) { create(:project) }
let(:sample_data) { Gitlab::PushDataBuilder.build_sample(project, user) } let(:sample_data) do
Gitlab::DataBuilder::PushDataBuilder.build_sample(project, user)
end
let(:recipients) { '#commits irc://test.net/#test ftp://bad' } let(:recipients) { '#commits irc://test.net/#test ftp://bad' }
let(:colorize_messages) { '1' } let(:colorize_messages) { '1' }
......
...@@ -66,7 +66,8 @@ describe JiraService, models: true do ...@@ -66,7 +66,8 @@ describe JiraService, models: true do
password: 'gitlab_jira_password' password: 'gitlab_jira_password'
) )
@jira_service.save # will build API URL, as api_url was not specified above @jira_service.save # will build API URL, as api_url was not specified above
@sample_data = Gitlab::PushDataBuilder.build_sample(project, user) @sample_data = Gitlab::DataBuilder::PushDataBuilder.
build_sample(project, user)
# https://github.com/bblimke/webmock#request-with-basic-authentication # https://github.com/bblimke/webmock#request-with-basic-authentication
@api_url = 'http://gitlab_jira_username:gitlab_jira_password@jira.example.com/rest/api/2/issue/JIRA-123/transitions' @api_url = 'http://gitlab_jira_username:gitlab_jira_password@jira.example.com/rest/api/2/issue/JIRA-123/transitions'
@comment_url = 'http://gitlab_jira_username:gitlab_jira_password@jira.example.com/rest/api/2/issue/JIRA-123/comment' @comment_url = 'http://gitlab_jira_username:gitlab_jira_password@jira.example.com/rest/api/2/issue/JIRA-123/comment'
......
...@@ -48,7 +48,9 @@ describe PushoverService, models: true do ...@@ -48,7 +48,9 @@ describe PushoverService, models: true do
let(:pushover) { PushoverService.new } let(:pushover) { PushoverService.new }
let(:user) { create(:user) } let(:user) { create(:user) }
let(:project) { create(:project) } let(:project) { create(:project) }
let(:sample_data) { Gitlab::PushDataBuilder.build_sample(project, user) } let(:sample_data) do
Gitlab::DataBuilder::PushDataBuilder.build_sample(project, user)
end
let(:api_key) { 'verySecret' } let(:api_key) { 'verySecret' }
let(:user_key) { 'verySecret' } let(:user_key) { 'verySecret' }
......
...@@ -45,7 +45,9 @@ describe SlackService, models: true do ...@@ -45,7 +45,9 @@ describe SlackService, models: true do
let(:slack) { SlackService.new } let(:slack) { SlackService.new }
let(:user) { create(:user) } let(:user) { create(:user) }
let(:project) { create(:project) } let(:project) { create(:project) }
let(:push_sample_data) { Gitlab::PushDataBuilder.build_sample(project, user) } let(:push_sample_data) do
Gitlab::DataBuilder::PushDataBuilder.build_sample(project, user)
end
let(:webhook_url) { 'https://hooks.slack.com/services/SVRWFV0VVAR97N/B02R25XN3/ZBqu7xMupaEEICInN685' } let(:webhook_url) { 'https://hooks.slack.com/services/SVRWFV0VVAR97N/B02R25XN3/ZBqu7xMupaEEICInN685' }
let(:username) { 'slack_username' } let(:username) { 'slack_username' }
let(:channel) { 'slack_channel' } let(:channel) { 'slack_channel' }
......
...@@ -895,7 +895,9 @@ describe User, models: true do ...@@ -895,7 +895,9 @@ describe User, models: true do
subject { create(:user) } subject { create(:user) }
let!(:project1) { create(:project) } let!(:project1) { create(:project) }
let!(:project2) { create(:project, forked_from_project: project1) } let!(:project2) { create(:project, forked_from_project: project1) }
let!(:push_data) { Gitlab::PushDataBuilder.build_sample(project2, subject) } let!(:push_data) do
Gitlab::DataBuilder::PushDataBuilder.build_sample(project2, subject)
end
let!(:push_event) { create(:event, action: Event::PUSHED, project: project2, target: project1, author: subject, data: push_data) } let!(:push_event) { create(:event, action: Event::PUSHED, project: project2, target: project1, author: subject, data: push_data) }
before do before do
......
...@@ -5,7 +5,7 @@ describe BuildEmailWorker do ...@@ -5,7 +5,7 @@ describe BuildEmailWorker do
let(:build) { create(:ci_build) } let(:build) { create(:ci_build) }
let(:user) { create(:user) } let(:user) { create(:user) }
let(:data) { Gitlab::BuildDataBuilder.build(build) } let(:data) { Gitlab::DataBuilder::BuildDataBuilder.build(build) }
subject { BuildEmailWorker.new } subject { BuildEmailWorker.new }
......
...@@ -5,7 +5,9 @@ describe EmailsOnPushWorker do ...@@ -5,7 +5,9 @@ describe EmailsOnPushWorker do
let(:project) { create(:project) } let(:project) { create(:project) }
let(:user) { create(:user) } let(:user) { create(:user) }
let(:data) { Gitlab::PushDataBuilder.build_sample(project, user) } let(:data) do
Gitlab::DataBuilder::PushDataBuilder.build_sample(project, user)
end
let(:recipients) { user.email } let(:recipients) { user.email }
let(:perform) { subject.perform(project.id, recipients, data.stringify_keys) } let(:perform) { subject.perform(project.id, recipients, data.stringify_keys) }
......
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