diff options
Diffstat (limited to 'spec/workers/container_expiration_policy_worker_spec.rb')
-rw-r--r-- | spec/workers/container_expiration_policy_worker_spec.rb | 46 |
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 |