Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'spec/workers/container_expiration_policy_worker_spec.rb')
-rw-r--r--spec/workers/container_expiration_policy_worker_spec.rb46
1 files changed, 24 insertions, 22 deletions
diff --git a/spec/workers/container_expiration_policy_worker_spec.rb b/spec/workers/container_expiration_policy_worker_spec.rb
index 868eb6b192e..6b185c30670 100644
--- a/spec/workers/container_expiration_policy_worker_spec.rb
+++ b/spec/workers/container_expiration_policy_worker_spec.rb
@@ -7,19 +7,24 @@ RSpec.describe ContainerExpirationPolicyWorker do
subject { described_class.new.perform }
- context 'With no container expiration policies' do
- it 'Does not execute any policies' do
+ RSpec.shared_examples 'not executing any policy' do
+ it 'does not run any policy' do
expect(ContainerExpirationPolicyService).not_to receive(:new)
subject
end
end
+ context 'With no container expiration policies' do
+ it_behaves_like 'not executing any policy'
+ end
+
context 'With container expiration policies' do
- context 'a valid policy' do
- let!(:container_expiration_policy) { create(:container_expiration_policy, :runnable) }
- let(:user) { container_expiration_policy.project.owner }
+ let_it_be(:container_expiration_policy, reload: true) { create(:container_expiration_policy, :runnable) }
+ let_it_be(:container_repository) { create(:container_repository, project: container_expiration_policy.project) }
+ let_it_be(:user) { container_expiration_policy.project.owner }
+ context 'a valid policy' do
it 'runs the policy' do
service = instance_double(ContainerExpirationPolicyService, execute: true)
@@ -31,33 +36,30 @@ RSpec.describe ContainerExpirationPolicyWorker do
end
context 'a disabled policy' do
- let!(:container_expiration_policy) { create(:container_expiration_policy, :runnable, :disabled) }
- let(:user) {container_expiration_policy.project.owner }
-
- it 'does not run the policy' do
- expect(ContainerExpirationPolicyService)
- .not_to receive(:new).with(container_expiration_policy, user)
-
- subject
+ before do
+ container_expiration_policy.disable!
end
+
+ it_behaves_like 'not executing any policy'
end
context 'a policy that is not due for a run' do
- let!(:container_expiration_policy) { create(:container_expiration_policy) }
- let(:user) {container_expiration_policy.project.owner }
+ before do
+ container_expiration_policy.update_column(:next_run_at, 2.minutes.from_now)
+ end
- it 'does not run the policy' do
- expect(ContainerExpirationPolicyService)
- .not_to receive(:new).with(container_expiration_policy, user)
+ it_behaves_like 'not executing any policy'
+ end
- subject
+ context 'a policy linked to no container repository' do
+ before do
+ container_expiration_policy.container_repositories.delete_all
end
+
+ it_behaves_like 'not executing any policy'
end
context 'an invalid policy' do
- let_it_be(:container_expiration_policy) { create(:container_expiration_policy, :runnable) }
- let_it_be(:user) {container_expiration_policy.project.owner }
-
before do
container_expiration_policy.update_column(:name_regex, '*production')
end