Fork of Pleroma with site-specific changes and feature branches https://git.pleroma.social/pleroma/pleroma
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

47 lines
973B

  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. defmodule Pleroma.Tests.ObanHelpers do
  5. @moduledoc """
  6. Oban test helpers.
  7. """
  8. alias Pleroma.Repo
  9. def wipe_all do
  10. Repo.delete_all(Oban.Job)
  11. end
  12. def perform_all do
  13. Oban.Job
  14. |> Repo.all()
  15. |> perform()
  16. end
  17. def perform(%Oban.Job{} = job) do
  18. res = apply(String.to_existing_atom("Elixir." <> job.worker), :perform, [job.args, job])
  19. Repo.delete(job)
  20. res
  21. end
  22. def perform(jobs) when is_list(jobs) do
  23. for job <- jobs, do: perform(job)
  24. end
  25. def member?(%{} = job_args, jobs) when is_list(jobs) do
  26. Enum.any?(jobs, fn job ->
  27. member?(job_args, job.args)
  28. end)
  29. end
  30. def member?(%{} = test_attrs, %{} = attrs) do
  31. Enum.all?(
  32. test_attrs,
  33. fn {k, _v} -> member?(test_attrs[k], attrs[k]) end
  34. )
  35. end
  36. def member?(x, y), do: x == y
  37. end