debian-mirror-gitlab/spec/workers/pages/invalidate_domain_cache_worker_spec.rb
2022-08-13 15:12:31 +05:30

46 lines
1.5 KiB
Ruby

# frozen_string_literal: true
require 'spec_helper'
RSpec.describe Pages::InvalidateDomainCacheWorker do
shared_examples 'clears caches with' do |event_class:, event_data:, caches:|
let(:event) do
event_class.new(data: event_data)
end
subject { consume_event(subscriber: described_class, event: event) }
it_behaves_like 'subscribes to event'
it 'clears the cache with Gitlab::Pages::CacheControl' do
caches.each do |cache_type, cache_id|
expect_next_instance_of(Gitlab::Pages::CacheControl, type: cache_type, id: cache_id) do |cache_control|
expect(cache_control).to receive(:clear_cache)
end
end
subject
end
end
it_behaves_like 'clears caches with',
event_class: Pages::PageDeployedEvent,
event_data: { project_id: 1, namespace_id: 2, root_namespace_id: 3 },
caches: { namespace: 3, project: 1 }
it_behaves_like 'clears caches with',
event_class: Pages::PageDeletedEvent,
event_data: { project_id: 1, namespace_id: 2, root_namespace_id: 3 },
caches: { namespace: 3, project: 1 }
it_behaves_like 'clears caches with',
event_class: Projects::ProjectDeletedEvent,
event_data: { project_id: 1, namespace_id: 2, root_namespace_id: 3 },
caches: { namespace: 3, project: 1 }
it_behaves_like 'clears caches with',
event_class: Projects::ProjectCreatedEvent,
event_data: { project_id: 1, namespace_id: 2, root_namespace_id: 3 },
caches: { namespace: 3, project: 1 }
end