add spec to user enqueuer, add user page queue depth to watermark limit

This commit is contained in:
Dylan Knutson
2023-03-31 20:09:31 +09:00
parent d19acdeacd
commit 69f1d19ef2
2 changed files with 49 additions and 5 deletions

View File

@@ -46,10 +46,17 @@ class Domain::Fa::UserEnqueuer
return SpecUtil.enqueued_jobs(Domain::Fa::Job::UserFollowsJob).count
end
GoodJob::Job.where(
queue_name: "fa_user_follows",
finished_at: nil,
performed_at: nil,
).count
[
GoodJob::Job.where(
queue_name: "fa_user_follows",
finished_at: nil,
performed_at: nil,
).count,
GoodJob::Job.where(
queue_name: "fa_user_page",
finished_at: nil,
performed_at: nil,
).count,
].max
end
end

View File

@@ -0,0 +1,37 @@
describe Domain::Fa::UserEnqueuer do
it "works" do
ActiveJob::Base.queue_adapter = :test
users = 7.times.map do
SpecUtil.create_domain_fa_user
end
enqueuer = Domain::Fa::UserEnqueuer.new(
start_at: 0,
high_water_mark: 5,
low_water_mark: 3,
)
get_enqueued_users = proc do
SpecUtil.enqueued_jobs(Domain::Fa::Job::UserFollowsJob).map do |job|
job[:args][0][:user]
end
end
enqueuer.run_once
expect(get_enqueued_users.call).to eq(users[0...5])
SpecUtil.shift_jobs(Domain::Fa::Job::UserFollowsJob)
enqueuer.run_once
expect(get_enqueued_users.call).to eq(users[1...5])
SpecUtil.shift_jobs(Domain::Fa::Job::UserFollowsJob)
enqueuer.run_once
expect(get_enqueued_users.call).to eq(users[2...7])
SpecUtil.shift_jobs(Domain::Fa::Job::UserFollowsJob, 3)
expect do
enqueuer.run_once
end.to raise_exception(StopIteration)
expect(get_enqueued_users.call).to eq(users[5...7])
end
end