docbrown/spec/workers/audience_segment_refresh_worker_spec.rb
Joshua Wehner dc1ab81401
Allow DisplayAd to target users via audience segmentation (#19284)
* Trying some models for audience segmentation

* AudienceSegment basics

* Attach AudienceSegment to DisplayAd

* Possibly use a DUS to populate AudienceSegments

* Add to display ad form UI

* Add to display ad API

* Refresh strategy for audience segments

* Add user_id to async ads query

* Maybe :testing -> :manual, for no-refresh segment

* Test & tweak segment refresh

* Testing audience_segment#refresh logic

* Coverage: testing human_readable

* Scope segment refresh to recently active users

* Tweak logic for when to refresh

* Tweak experience levels to match SettingsHelper

* Test for front-end logic

* Fix test, hope this helps coverage?

* Better test names

* One worker for all, many workers for each, perform_bulk

* Fix audience segment UI, needs to use id, not enum

* cron/schedule should RefreshAll

* Singular id in RefreshWorker
2023-04-25 08:41:10 -04:00

19 lines
588 B
Ruby

require "rails_helper"
RSpec.describe AudienceSegmentRefreshWorker, type: :worker do
let(:worker) { subject }
let(:fake_segment) { instance_double AudienceSegment, refresh!: :refreshed }
let(:segment_finder) { class_double AudienceSegment }
before do
allow(AudienceSegment).to receive(:find).and_return(fake_segment)
end
include_examples "#enqueues_on_correct_queue", "low_priority"
it "refreshes a segment by id" do
worker.perform(123)
expect(AudienceSegment).to have_received(:find).with(123)
expect(fake_segment).to have_received(:refresh!)
end
end