2023-08-05 08:40:21 +12:00
|
|
|
defmodule AshOban.Test do
|
|
|
|
@moduledoc "Helpers for testing ash_oban triggers"
|
|
|
|
|
|
|
|
def schedule_and_run_triggers(resource) do
|
|
|
|
triggers =
|
|
|
|
AshOban.Info.oban_triggers(resource)
|
|
|
|
|
|
|
|
Enum.each(triggers, fn trigger ->
|
|
|
|
AshOban.schedule(resource, trigger)
|
|
|
|
end)
|
|
|
|
|
2023-08-05 09:07:44 +12:00
|
|
|
queues =
|
|
|
|
triggers
|
|
|
|
|> Enum.map(& &1.queue)
|
|
|
|
|> Enum.uniq()
|
|
|
|
|
|
|
|
# we drain each queue twice to do schedulers and then workers
|
|
|
|
Enum.reduce(queues ++ queues, %{}, fn queue, acc ->
|
2023-08-05 08:45:13 +12:00
|
|
|
[queue: queue]
|
|
|
|
|> Oban.drain_queue()
|
2023-08-05 08:40:21 +12:00
|
|
|
|> Map.merge(acc, fn _key, left, right ->
|
|
|
|
left + right
|
|
|
|
end)
|
|
|
|
end)
|
|
|
|
end
|
|
|
|
end
|