From 9b93b12f050d48f7f9f51d9042d923e9a0997a68 Mon Sep 17 00:00:00 2001 From: Ben Halpern Date: Wed, 31 Jan 2024 13:48:13 -0500 Subject: [PATCH] Fix AudienceSegmentRefreshAllWorker args issue (#20576) * Fix AudienceSegmentRefreshAllWorker args issue * Update test * Fix * Fix test --------- Co-authored-by: Mac Siri --- .../audience_segment_refresh_all_worker.rb | 2 +- ...udience_segment_refresh_all_worker_spec.rb | 32 ++++++------------- 2 files changed, 10 insertions(+), 24 deletions(-) diff --git a/app/workers/audience_segment_refresh_all_worker.rb b/app/workers/audience_segment_refresh_all_worker.rb index 8470eec1f..8c8ae60d4 100644 --- a/app/workers/audience_segment_refresh_all_worker.rb +++ b/app/workers/audience_segment_refresh_all_worker.rb @@ -8,6 +8,6 @@ class AudienceSegmentRefreshAllWorker .distinct(:audience_segment_id) .pluck(:audience_segment_id).compact - AudienceSegmentRefreshWorker.perform_bulk([ids]) + AudienceSegmentRefreshWorker.perform_bulk(ids.zip) end end diff --git a/spec/workers/audience_segment_refresh_all_worker_spec.rb b/spec/workers/audience_segment_refresh_all_worker_spec.rb index 6acb38f13..34bc7d8ff 100644 --- a/spec/workers/audience_segment_refresh_all_worker_spec.rb +++ b/spec/workers/audience_segment_refresh_all_worker_spec.rb @@ -3,27 +3,13 @@ require "rails_helper" RSpec.describe AudienceSegmentRefreshAllWorker, type: :worker do let(:worker) { subject } let(:approved_and_published_ad) do - create(:billboard, - approved: true, - published: true, - audience_segment: create(:audience_segment)) + create(:billboard, approved: true, published: true, audience_segment: create(:audience_segment)) end before do - allow(AudienceSegmentRefreshWorker).to receive(:perform_bulk) - create(:billboard, - approved: false, - published: true, - audience_segment: create(:audience_segment)) - create(:billboard, - approved: true, - published: false, - audience_segment: create(:audience_segment)) - create(:billboard, - approved: false, - published: false, - audience_segment: create(:audience_segment)) - + create(:billboard, approved: false, published: true, audience_segment: create(:audience_segment)) + create(:billboard, approved: true, published: false, audience_segment: create(:audience_segment)) + create(:billboard, approved: false, published: false, audience_segment: create(:audience_segment)) create(:billboard, approved: true, published: true, @@ -32,10 +18,10 @@ RSpec.describe AudienceSegmentRefreshAllWorker, type: :worker do include_examples "#enqueues_on_correct_queue", "low_priority" - it "refreshes all active ads' segments" do - worker.perform - # NOTE: `perform_bulk` takes an array of arrays as argument. - expect(AudienceSegmentRefreshWorker).to have_received(:perform_bulk) - .with([[approved_and_published_ad.audience_segment_id]]) + it "queues up the jobs correctly" do + expect do + worker.perform + end.to change(AudienceSegmentRefreshWorker.jobs, :size).by(1) + expect(AudienceSegmentRefreshWorker.jobs.last["args"]).to eq([approved_and_published_ad.audience_segment.id]) end end