54b5a95662314a943fa0eecf9e34551235e310f9
[akkoma] / test / support / oban_helpers.ex
1 # Pleroma: A lightweight social networking server
2 # Copyright © 2017-2018 Pleroma Authors <https://pleroma.social/>
3 # SPDX-License-Identifier: AGPL-3.0-only
4
5 defmodule Pleroma.ObanHelpers do
6 @moduledoc """
7 Oban test helpers.
8 """
9
10 alias Pleroma.Repo
11
12 def perform(%Oban.Job{} = job) do
13 res = apply(String.to_existing_atom("Elixir." <> job.worker), :perform, [job])
14 Repo.delete(job)
15 res
16 end
17
18 def perform(jobs) when is_list(jobs) do
19 for job <- jobs, do: perform(job)
20 end
21
22 def member?(%{} = job_args, jobs) when is_list(jobs) do
23 Enum.any?(jobs, fn job ->
24 member?(job_args, job.args)
25 end)
26 end
27
28 def member?(%{} = test_attrs, %{} = attrs) do
29 Enum.all?(
30 test_attrs,
31 fn {k, _v} -> member?(test_attrs[k], attrs[k]) end
32 )
33 end
34
35 def member?(x, y), do: x == y
36 end