diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-11-12 12:09:39 +0000 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-11-12 12:09:39 +0000 |
commit | 4a31b8786892820e8029844c34fd5296c52c37c0 (patch) | |
tree | ef04909e73e0ffe6e4c2b0d40408cada88aa5afc /spec/services | |
parent | 1fdf76252e8fdf1a30826fe3f32a6216e50c563c (diff) | |
download | gitlab-ce-4a31b8786892820e8029844c34fd5296c52c37c0.tar.gz |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/services')
-rw-r--r-- | spec/services/merge_requests/cleanup_refs_service_spec.rb | 43 | ||||
-rw-r--r-- | spec/services/merge_requests/reopen_service_spec.rb | 5 |
2 files changed, 42 insertions, 6 deletions
diff --git a/spec/services/merge_requests/cleanup_refs_service_spec.rb b/spec/services/merge_requests/cleanup_refs_service_spec.rb index a051b3c9355..70acb50bb29 100644 --- a/spec/services/merge_requests/cleanup_refs_service_spec.rb +++ b/spec/services/merge_requests/cleanup_refs_service_spec.rb @@ -4,14 +4,15 @@ require 'spec_helper' RSpec.describe MergeRequests::CleanupRefsService do describe '.schedule' do - let(:merge_request) { build(:merge_request) } + let(:merge_request) { create(:merge_request) } - it 'schedules MergeRequestCleanupRefsWorker' do - expect(MergeRequestCleanupRefsWorker) - .to receive(:perform_in) - .with(described_class::TIME_THRESHOLD, merge_request.id) + it 'creates a merge request cleanup schedule' do + freeze_time do + described_class.schedule(merge_request) - described_class.schedule(merge_request) + expect(merge_request.reload.cleanup_schedule.scheduled_at) + .to eq(described_class::TIME_THRESHOLD.from_now) + end end end @@ -20,6 +21,8 @@ RSpec.describe MergeRequests::CleanupRefsService do # Need to re-enable this as it's being stubbed in spec_helper for # performance reasons but is needed to run for this test. allow(Gitlab::Git::KeepAround).to receive(:execute).and_call_original + + merge_request.create_cleanup_schedule(scheduled_at: described_class::TIME_THRESHOLD.ago) end subject(:result) { described_class.new(merge_request).execute } @@ -32,6 +35,7 @@ RSpec.describe MergeRequests::CleanupRefsService do expect(result[:status]).to eq(:success) expect(kept_around?(old_ref_head)).to be_truthy expect(ref_head).to be_nil + expect(merge_request.cleanup_schedule.completed_at).to be_present end end @@ -43,6 +47,7 @@ RSpec.describe MergeRequests::CleanupRefsService do it 'does not fail' do expect(result[:status]).to eq(:success) + expect(merge_request.cleanup_schedule.completed_at).to be_present end end @@ -85,6 +90,31 @@ RSpec.describe MergeRequests::CleanupRefsService do it_behaves_like 'service that does not clean up merge request refs' end + + context 'when cleanup schedule fails to update' do + before do + allow(merge_request.cleanup_schedule).to receive(:update).and_return(false) + end + + it 'creates keep around ref and deletes merge request refs' do + old_ref_head = ref_head + + aggregate_failures do + expect(result[:status]).to eq(:error) + expect(kept_around?(old_ref_head)).to be_truthy + expect(ref_head).to be_nil + expect(merge_request.cleanup_schedule.completed_at).not_to be_present + end + end + end + + context 'when merge request is not scheduled to be cleaned up yet' do + before do + merge_request.cleanup_schedule.update!(scheduled_at: 1.day.from_now) + end + + it_behaves_like 'service that does not clean up merge request refs' + end end shared_examples_for 'service that does not clean up merge request refs' do @@ -92,6 +122,7 @@ RSpec.describe MergeRequests::CleanupRefsService do aggregate_failures do expect(result[:status]).to eq(:error) expect(ref_head).to be_present + expect(merge_request.cleanup_schedule.completed_at).not_to be_present end end end diff --git a/spec/services/merge_requests/reopen_service_spec.rb b/spec/services/merge_requests/reopen_service_spec.rb index ffc2ebb344c..bf8ceaf08d4 100644 --- a/spec/services/merge_requests/reopen_service_spec.rb +++ b/spec/services/merge_requests/reopen_service_spec.rb @@ -23,6 +23,7 @@ RSpec.describe MergeRequests::ReopenService do before do allow(service).to receive(:execute_hooks) + merge_request.create_cleanup_schedule(scheduled_at: Time.current) perform_enqueued_jobs do service.execute(merge_request) @@ -43,6 +44,10 @@ RSpec.describe MergeRequests::ReopenService do expect(email.subject).to include(merge_request.title) end + it 'destroys cleanup schedule record' do + expect(merge_request.reload.cleanup_schedule).to be_nil + end + context 'note creation' do it 'creates resource state event about merge_request reopen' do event = merge_request.resource_state_events.last |