2015-01-12 02:51:31 -05:00
|
|
|
require 'spec_helper'
|
|
|
|
|
2016-02-15 16:06:45 -05:00
|
|
|
describe Gitlab::PushDataBuilder, lib: true do
|
2015-01-12 02:51:31 -05:00
|
|
|
let(:project) { create(:project) }
|
|
|
|
let(:user) { create(:user) }
|
|
|
|
|
2016-02-15 16:06:45 -05:00
|
|
|
describe '.build_sample' do
|
|
|
|
let(:data) { described_class.build_sample(project, user) }
|
2015-01-12 02:51:31 -05:00
|
|
|
|
2015-02-12 13:17:35 -05:00
|
|
|
it { expect(data).to be_a(Hash) }
|
|
|
|
it { expect(data[:before]).to eq('6f6d7e7ed97bb5f0054f2b1df789b39ca89b6ff9') }
|
|
|
|
it { expect(data[:after]).to eq('5937ac0a7beb003549fc5fd26fc247adbce4a52e') }
|
|
|
|
it { expect(data[:ref]).to eq('refs/heads/master') }
|
|
|
|
it { expect(data[:commits].size).to eq(3) }
|
|
|
|
it { expect(data[:total_commits_count]).to eq(3) }
|
2016-04-15 07:08:22 -04:00
|
|
|
it { expect(data[:commits].first[:added]).to eq(['gitlab-grack']) }
|
|
|
|
it { expect(data[:commits].first[:modified]).to eq(['.gitmodules']) }
|
2015-12-04 09:23:21 -05:00
|
|
|
it { expect(data[:commits].first[:removed]).to eq([]) }
|
Add new data to project in push, issue, merge-request and note webhooks data
- Add `avatar_url`, `description`, `git_ssh_url`, `git_http_url`,
`path_with_namespace` and `default_branch` in `project` in push, issue,
merge-request and note webhooks data
- Deprecate the `ssh_url` in favor of `git_ssh_url` and `http_url` in
favor of `git_http_url` in `project` for push, issue, merge-request and
note webhooks data
- Deprecate the `repository` key in push, issue, merge-request and
note webhooks data, use `project` instead
2016-02-06 09:20:21 -05:00
|
|
|
|
2016-04-15 07:08:22 -04:00
|
|
|
include_examples 'project hook data with deprecateds'
|
Add new data to project in push, issue, merge-request and note webhooks data
- Add `avatar_url`, `description`, `git_ssh_url`, `git_http_url`,
`path_with_namespace` and `default_branch` in `project` in push, issue,
merge-request and note webhooks data
- Deprecate the `ssh_url` in favor of `git_ssh_url` and `http_url` in
favor of `git_http_url` in `project` for push, issue, merge-request and
note webhooks data
- Deprecate the `repository` key in push, issue, merge-request and
note webhooks data, use `project` instead
2016-02-06 09:20:21 -05:00
|
|
|
include_examples 'deprecated repository hook data'
|
2015-01-12 02:51:31 -05:00
|
|
|
end
|
|
|
|
|
2016-02-15 16:06:45 -05:00
|
|
|
describe '.build' do
|
2015-01-12 02:51:31 -05:00
|
|
|
let(:data) do
|
2016-02-15 16:06:45 -05:00
|
|
|
described_class.build(project, user, Gitlab::Git::BLANK_SHA,
|
|
|
|
'8a2a6eb295bb170b34c24c76c49ed0e9b2eaf34b',
|
|
|
|
'refs/tags/v1.1.0')
|
2015-01-12 02:51:31 -05:00
|
|
|
end
|
|
|
|
|
2015-02-12 13:17:35 -05:00
|
|
|
it { expect(data).to be_a(Hash) }
|
|
|
|
it { expect(data[:before]).to eq(Gitlab::Git::BLANK_SHA) }
|
|
|
|
it { expect(data[:checkout_sha]).to eq('5937ac0a7beb003549fc5fd26fc247adbce4a52e') }
|
|
|
|
it { expect(data[:after]).to eq('8a2a6eb295bb170b34c24c76c49ed0e9b2eaf34b') }
|
|
|
|
it { expect(data[:ref]).to eq('refs/tags/v1.1.0') }
|
2016-04-18 20:52:43 -04:00
|
|
|
it { expect(data[:user_id]).to eq(user.id) }
|
|
|
|
it { expect(data[:user_name]).to eq(user.name) }
|
|
|
|
it { expect(data[:user_email]).to eq(user.email) }
|
|
|
|
it { expect(data[:user_avatar]).to eq(user.avatar_url) }
|
|
|
|
it { expect(data[:project_id]).to eq(project.id) }
|
|
|
|
it { expect(data[:project]).to be_a(Hash) }
|
2015-02-12 13:17:35 -05:00
|
|
|
it { expect(data[:commits]).to be_empty }
|
|
|
|
it { expect(data[:total_commits_count]).to be_zero }
|
2016-02-15 16:06:45 -05:00
|
|
|
|
2016-04-15 07:08:22 -04:00
|
|
|
include_examples 'project hook data with deprecateds'
|
|
|
|
include_examples 'deprecated repository hook data'
|
|
|
|
|
2016-02-15 16:06:45 -05:00
|
|
|
it 'does not raise an error when given nil commits' do
|
|
|
|
expect { described_class.build(spy, spy, spy, spy, spy, nil) }.
|
|
|
|
not_to raise_error
|
|
|
|
end
|
2015-01-12 02:51:31 -05:00
|
|
|
end
|
|
|
|
end
|