summaryrefslogtreecommitdiff
path: root/spec/workers/projects
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2022-09-19 23:18:09 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2022-09-19 23:18:09 +0000
commit6ed4ec3e0b1340f96b7c043ef51d1b33bbe85fde (patch)
treedc4d20fe6064752c0bd323187252c77e0a89144b /spec/workers/projects
parent9868dae7fc0655bd7ce4a6887d4e6d487690eeed (diff)
downloadgitlab-ce-6ed4ec3e0b1340f96b7c043ef51d1b33bbe85fde.tar.gz
Add latest changes from gitlab-org/gitlab@15-4-stable-eev15.4.0-rc42
Diffstat (limited to 'spec/workers/projects')
-rw-r--r--spec/workers/projects/inactive_projects_deletion_cron_worker_spec.rb92
-rw-r--r--spec/workers/projects/process_sync_events_worker_spec.rb8
2 files changed, 40 insertions, 60 deletions
diff --git a/spec/workers/projects/inactive_projects_deletion_cron_worker_spec.rb b/spec/workers/projects/inactive_projects_deletion_cron_worker_spec.rb
index ec10c66968d..50b5b0a6e7b 100644
--- a/spec/workers/projects/inactive_projects_deletion_cron_worker_spec.rb
+++ b/spec/workers/projects/inactive_projects_deletion_cron_worker_spec.rb
@@ -85,86 +85,58 @@ RSpec.describe Projects::InactiveProjectsDeletionCronWorker do
end
end
- context 'when delete inactive projects feature is enabled' do
+ context 'when delete inactive projects feature is enabled', :clean_gitlab_redis_shared_state, :sidekiq_inline do
before do
stub_application_setting(delete_inactive_projects: true)
end
- context 'when feature flag is disabled' do
- before do
- stub_feature_flags(inactive_projects_deletion: false)
- end
-
- it 'does not invoke Projects::InactiveProjectsDeletionNotificationWorker' do
- expect(::Projects::InactiveProjectsDeletionNotificationWorker).not_to receive(:perform_async)
- expect(::Projects::DestroyService).not_to receive(:new)
-
- worker.perform
- end
-
- it 'does not delete the inactive projects' do
- worker.perform
-
- expect(inactive_large_project.reload.pending_delete).to eq(false)
+ it 'invokes Projects::InactiveProjectsDeletionNotificationWorker for inactive projects' do
+ Gitlab::Redis::SharedState.with do |redis|
+ expect(redis).to receive(:hset).with('inactive_projects_deletion_warning_email_notified',
+ "project:#{inactive_large_project.id}", Date.current)
end
+ expect(::Projects::InactiveProjectsDeletionNotificationWorker).to receive(:perform_async).with(
+ inactive_large_project.id, deletion_date).and_call_original
+ expect(::Projects::DestroyService).not_to receive(:new)
- it_behaves_like 'worker is running for more than 4 minutes'
- it_behaves_like 'worker finishes processing in less than 4 minutes'
+ worker.perform
end
- context 'when feature flag is enabled', :clean_gitlab_redis_shared_state, :sidekiq_inline do
- before do
- stub_feature_flags(inactive_projects_deletion: true)
- end
-
- it 'invokes Projects::InactiveProjectsDeletionNotificationWorker for inactive projects' do
- Gitlab::Redis::SharedState.with do |redis|
- expect(redis).to receive(:hset).with('inactive_projects_deletion_warning_email_notified',
- "project:#{inactive_large_project.id}", Date.current)
- end
- expect(::Projects::InactiveProjectsDeletionNotificationWorker).to receive(:perform_async).with(
- inactive_large_project.id, deletion_date).and_call_original
- expect(::Projects::DestroyService).not_to receive(:new)
-
- worker.perform
+ it 'does not invoke InactiveProjectsDeletionNotificationWorker for already notified inactive projects' do
+ Gitlab::Redis::SharedState.with do |redis|
+ redis.hset('inactive_projects_deletion_warning_email_notified', "project:#{inactive_large_project.id}",
+ Date.current.to_s)
end
- it 'does not invoke InactiveProjectsDeletionNotificationWorker for already notified inactive projects' do
- Gitlab::Redis::SharedState.with do |redis|
- redis.hset('inactive_projects_deletion_warning_email_notified', "project:#{inactive_large_project.id}",
- Date.current.to_s)
- end
+ expect(::Projects::InactiveProjectsDeletionNotificationWorker).not_to receive(:perform_async)
+ expect(::Projects::DestroyService).not_to receive(:new)
- expect(::Projects::InactiveProjectsDeletionNotificationWorker).not_to receive(:perform_async)
- expect(::Projects::DestroyService).not_to receive(:new)
+ worker.perform
+ end
- worker.perform
+ it 'invokes Projects::DestroyService for projects that are inactive even after being notified' do
+ Gitlab::Redis::SharedState.with do |redis|
+ redis.hset('inactive_projects_deletion_warning_email_notified', "project:#{inactive_large_project.id}",
+ 15.months.ago.to_date.to_s)
end
- it 'invokes Projects::DestroyService for projects that are inactive even after being notified' do
- Gitlab::Redis::SharedState.with do |redis|
- redis.hset('inactive_projects_deletion_warning_email_notified', "project:#{inactive_large_project.id}",
- 15.months.ago.to_date.to_s)
- end
-
- expect(::Projects::InactiveProjectsDeletionNotificationWorker).not_to receive(:perform_async)
- expect(::Projects::DestroyService).to receive(:new).with(inactive_large_project, admin_user, {})
- .at_least(:once).and_call_original
+ expect(::Projects::InactiveProjectsDeletionNotificationWorker).not_to receive(:perform_async)
+ expect(::Projects::DestroyService).to receive(:new).with(inactive_large_project, admin_user, {})
+ .at_least(:once).and_call_original
- worker.perform
+ worker.perform
- expect(inactive_large_project.reload.pending_delete).to eq(true)
+ expect(inactive_large_project.reload.pending_delete).to eq(true)
- Gitlab::Redis::SharedState.with do |redis|
- expect(redis.hget('inactive_projects_deletion_warning_email_notified',
- "project:#{inactive_large_project.id}")).to be_nil
- end
+ Gitlab::Redis::SharedState.with do |redis|
+ expect(redis.hget('inactive_projects_deletion_warning_email_notified',
+ "project:#{inactive_large_project.id}")).to be_nil
end
-
- it_behaves_like 'worker is running for more than 4 minutes'
- it_behaves_like 'worker finishes processing in less than 4 minutes'
end
+ it_behaves_like 'worker is running for more than 4 minutes'
+ it_behaves_like 'worker finishes processing in less than 4 minutes'
+
it_behaves_like 'an idempotent worker'
end
end
diff --git a/spec/workers/projects/process_sync_events_worker_spec.rb b/spec/workers/projects/process_sync_events_worker_spec.rb
index 963e0ad1028..202942ce905 100644
--- a/spec/workers/projects/process_sync_events_worker_spec.rb
+++ b/spec/workers/projects/process_sync_events_worker_spec.rb
@@ -10,6 +10,14 @@ RSpec.describe Projects::ProcessSyncEventsWorker do
include_examples 'an idempotent worker'
+ it 'has the `until_executed` deduplicate strategy' do
+ expect(described_class.get_deduplicate_strategy).to eq(:until_executed)
+ end
+
+ it 'has an option to reschedule once if deduplicated' do
+ expect(described_class.get_deduplication_options).to include({ if_deduplicated: :reschedule_once })
+ end
+
describe '#perform' do
subject(:perform) { worker.perform }