debian-mirror-gitlab/spec/workers/issuables/clear_groups_issue_counter_worker_spec.rb
2021-06-08 01:23:25 +05:30

43 lines
1.5 KiB
Ruby

# frozen_string_literal: true
require 'spec_helper'
RSpec.describe Issuables::ClearGroupsIssueCounterWorker do
describe '#perform' do
let_it_be(:user) { create(:user) }
let_it_be(:parent_group) { create(:group) }
let_it_be(:root_group) { create(:group, parent: parent_group) }
let_it_be(:subgroup) { create(:group, parent: root_group) }
let(:count_service) { Groups::OpenIssuesCountService }
let(:instance1) { instance_double(count_service) }
let(:instance2) { instance_double(count_service) }
it_behaves_like 'an idempotent worker' do
let(:job_args) { [[root_group.id]] }
let(:exec_times) { IdempotentWorkerHelper::WORKER_EXEC_TIMES }
it 'clears the cached issue count in given groups and ancestors' do
expect(count_service).to receive(:new)
.exactly(exec_times).times.with(root_group).and_return(instance1)
expect(count_service).to receive(:new)
.exactly(exec_times).times.with(parent_group).and_return(instance2)
expect(count_service).not_to receive(:new).with(subgroup)
[instance1, instance2].all? do |instance|
expect(instance).to receive(:clear_all_cache_keys).exactly(exec_times).times
end
subject
end
end
it 'does not call count service or rise error when group_ids is empty' do
expect(count_service).not_to receive(:new)
expect(Gitlab::ErrorTracking).not_to receive(:log_exception)
described_class.new.perform([])
end
end
end