Fix AudienceSegmentRefreshAllWorker args issue (#20576)

* Fix AudienceSegmentRefreshAllWorker args issue

* Update test

* Fix

* Fix test

---------

Co-authored-by: Mac Siri <krairit.siri@gmail.com>
This commit is contained in:
Ben Halpern 2024-01-31 13:48:13 -05:00 committed by GitHub
parent 15bac7afbc
commit 9b93b12f05
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 10 additions and 24 deletions

View file

@ -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

View file

@ -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