summaryrefslogtreecommitdiff
path: root/test/support/oban_helpers.ex
blob: 54b5a95662314a943fa0eecf9e34551235e310f9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# Pleroma: A lightweight social networking server
# Copyright © 2017-2018 Pleroma Authors <https://pleroma.social/>
# SPDX-License-Identifier: AGPL-3.0-only

defmodule Pleroma.ObanHelpers do
  @moduledoc """
  Oban test helpers.
  """

  alias Pleroma.Repo

  def perform(%Oban.Job{} = job) do
    res = apply(String.to_existing_atom("Elixir." <> job.worker), :perform, [job])
    Repo.delete(job)
    res
  end

  def perform(jobs) when is_list(jobs) do
    for job <- jobs, do: perform(job)
  end

  def member?(%{} = job_args, jobs) when is_list(jobs) do
    Enum.any?(jobs, fn job ->
      member?(job_args, job.args)
    end)
  end

  def member?(%{} = test_attrs, %{} = attrs) do
    Enum.all?(
      test_attrs,
      fn {k, _v} -> member?(test_attrs[k], attrs[k]) end
    )
  end

  def member?(x, y), do: x == y
end