diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2019-10-17 12:07:33 +0000 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2019-10-17 12:07:33 +0000 |
commit | 6b75320f525f841454f1ab162d141d3610f2e77b (patch) | |
tree | 4971c27759e4fbc18b85e71800c3b9c12346317e /spec/services/git | |
parent | 4226aca420920c1844e8eade4798a2dff188a6fc (diff) | |
download | gitlab-ce-6b75320f525f841454f1ab162d141d3610f2e77b.tar.gz |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/services/git')
-rw-r--r-- | spec/services/git/base_hooks_service_spec.rb | 48 | ||||
-rw-r--r-- | spec/services/git/process_ref_changes_service_spec.rb | 48 |
2 files changed, 76 insertions, 20 deletions
diff --git a/spec/services/git/base_hooks_service_spec.rb b/spec/services/git/base_hooks_service_spec.rb index 90b3eb38469..f3f6b36a18d 100644 --- a/spec/services/git/base_hooks_service_spec.rb +++ b/spec/services/git/base_hooks_service_spec.rb @@ -12,8 +12,8 @@ describe Git::BaseHooksService do let(:newrev) { "8a2a6eb295bb170b34c24c76c49ed0e9b2eaf34b" } # gitlab-test: git rev-parse refs/tags/v1.1.0 let(:ref) { 'refs/tags/v1.1.0' } - describe '#execute_project_hooks' do - class TestService < described_class + let(:test_service) do + Class.new(described_class) do def hook_name :push_hooks end @@ -22,22 +22,44 @@ describe Git::BaseHooksService do [] end end + end - let(:project) { create(:project, :repository) } + subject { test_service.new(project, user, params) } - let(:params) do - { - change: { - oldrev: oldrev, - newrev: newrev, - ref: ref - } + let(:params) do + { + change: { + oldrev: oldrev, + newrev: newrev, + ref: ref } + } + end + + describe 'push event' do + it 'creates push event' do + expect_next_instance_of(EventCreateService) do |service| + expect(service).to receive(:push) + end + + subject.execute end - subject { TestService.new(project, user, params) } + context 'create_push_event is set to false' do + before do + params[:create_push_event] = false + end + + it 'does not create push event' do + expect(EventCreateService).not_to receive(:new) + + subject.execute + end + end + end - context '#execute_hooks' do + describe 'project hooks and services' do + context 'hooks' do before do expect(project).to receive(:has_active_hooks?).and_return(active) end @@ -65,7 +87,7 @@ describe Git::BaseHooksService do end end - context '#execute_services' do + context 'services' do before do expect(project).to receive(:has_active_services?).and_return(active) end diff --git a/spec/services/git/process_ref_changes_service_spec.rb b/spec/services/git/process_ref_changes_service_spec.rb index eeb395f6c7b..35ddf95b5f6 100644 --- a/spec/services/git/process_ref_changes_service_spec.rb +++ b/spec/services/git/process_ref_changes_service_spec.rb @@ -13,6 +13,12 @@ describe Git::ProcessRefChangesService do let(:service) { double(execute: true) } let(:git_changes) { double(branch_changes: [], tag_changes: []) } + def multiple_changes(change, count) + Array.new(count).map.with_index do |n, index| + { index: index, oldrev: change[:oldrev], newrev: change[:newrev], ref: "#{change[:ref]}#{n}" } + end + end + let(:changes) do [ { index: 0, oldrev: Gitlab::Git::BLANK_SHA, newrev: '789012', ref: "#{ref_prefix}/create" }, @@ -28,7 +34,7 @@ describe Git::ProcessRefChangesService do it "calls #{push_service_class}" do expect(push_service_class) .to receive(:new) - .with(project, project.owner, hash_including(execute_project_hooks: true)) + .with(project, project.owner, hash_including(execute_project_hooks: true, create_push_event: true)) .exactly(changes.count).times .and_return(service) @@ -36,12 +42,6 @@ describe Git::ProcessRefChangesService do end context 'changes exceed push_event_hooks_limit' do - def multiple_changes(change, count) - Array.new(count).map.with_index do |n, index| - { index: index, oldrev: change[:oldrev], newrev: change[:newrev], ref: "#{change[:ref]}#{n}" } - end - end - let(:push_event_hooks_limit) { 3 } let(:changes) do @@ -88,6 +88,40 @@ describe Git::ProcessRefChangesService do end end + context 'changes exceed push_event_activities_limit per action' do + let(:push_event_activities_limit) { 3 } + + let(:changes) do + [ + { oldrev: Gitlab::Git::BLANK_SHA, newrev: '789012', ref: "#{ref_prefix}/create" }, + { oldrev: '123456', newrev: '789012', ref: "#{ref_prefix}/update" }, + { oldrev: '123456', newrev: Gitlab::Git::BLANK_SHA, ref: "#{ref_prefix}/delete" } + ].map do |change| + multiple_changes(change, push_event_activities_limit + 1) + end.flatten + end + + before do + stub_application_setting(push_event_activities_limit: push_event_activities_limit) + end + + it "calls #{push_service_class} with create_push_event set to false" do + expect(push_service_class) + .to receive(:new) + .with(project, project.owner, hash_including(create_push_event: false)) + .exactly(changes.count).times + .and_return(service) + + subject.execute + end + + it 'creates events per action' do + allow(push_service_class).to receive(:new).and_return(service) + + expect { subject.execute }.to change { Event.count }.by(3) + end + end + context 'pipeline creation' do context 'with valid .gitlab-ci.yml' do before do |