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