logo

pleroma

My custom branche(s) on git.pleroma.social/pleroma/pleroma git clone https://hacktivis.me/git/pleroma.git

scheduled_activity_test.exs (3865B)


  1. # Pleroma: A lightweight social networking server
  2. # Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
  3. # SPDX-License-Identifier: AGPL-3.0-only
  4. defmodule Pleroma.ScheduledActivityTest do
  5. use Pleroma.DataCase, async: true
  6. alias Pleroma.ScheduledActivity
  7. alias Pleroma.Test.StaticConfig
  8. alias Pleroma.UnstubbedConfigMock, as: ConfigMock
  9. import Mox
  10. import Pleroma.Factory
  11. describe "creation" do
  12. test "scheduled activities with jobs when ScheduledActivity enabled" do
  13. ConfigMock
  14. |> stub(:get, fn
  15. [ScheduledActivity, :enabled] -> true
  16. path -> StaticConfig.get(path)
  17. end)
  18. user = insert(:user)
  19. today =
  20. NaiveDateTime.utc_now()
  21. |> NaiveDateTime.add(:timer.minutes(6), :millisecond)
  22. |> NaiveDateTime.to_iso8601()
  23. attrs = %{params: %{}, scheduled_at: today}
  24. {:ok, sa1} = ScheduledActivity.create(user, attrs)
  25. {:ok, sa2} = ScheduledActivity.create(user, attrs)
  26. jobs =
  27. Repo.all(from(j in Oban.Job, where: j.queue == "scheduled_activities", select: j.args))
  28. assert jobs == [%{"activity_id" => sa1.id}, %{"activity_id" => sa2.id}]
  29. end
  30. test "scheduled activities without jobs when ScheduledActivity disabled" do
  31. ConfigMock
  32. |> stub(:get, fn
  33. [ScheduledActivity, :enabled] -> false
  34. path -> StaticConfig.get(path)
  35. end)
  36. user = insert(:user)
  37. today =
  38. NaiveDateTime.utc_now()
  39. |> NaiveDateTime.add(:timer.minutes(6), :millisecond)
  40. |> NaiveDateTime.to_iso8601()
  41. attrs = %{params: %{}, scheduled_at: today}
  42. {:ok, _sa1} = ScheduledActivity.create(user, attrs)
  43. {:ok, _sa2} = ScheduledActivity.create(user, attrs)
  44. jobs =
  45. Repo.all(from(j in Oban.Job, where: j.queue == "scheduled_activities", select: j.args))
  46. assert jobs == []
  47. end
  48. test "when daily user limit is exceeded" do
  49. ConfigMock
  50. |> stub_with(StaticConfig)
  51. user = insert(:user)
  52. today =
  53. NaiveDateTime.utc_now()
  54. |> NaiveDateTime.add(:timer.minutes(6), :millisecond)
  55. |> NaiveDateTime.to_iso8601()
  56. attrs = %{params: %{}, scheduled_at: today}
  57. {:ok, _} = ScheduledActivity.create(user, attrs)
  58. {:ok, _} = ScheduledActivity.create(user, attrs)
  59. {:error, changeset} = ScheduledActivity.create(user, attrs)
  60. assert changeset.errors == [scheduled_at: {"daily limit exceeded", []}]
  61. end
  62. test "when total user limit is exceeded" do
  63. ConfigMock
  64. |> stub_with(StaticConfig)
  65. user = insert(:user)
  66. today =
  67. NaiveDateTime.utc_now()
  68. |> NaiveDateTime.add(:timer.minutes(6), :millisecond)
  69. |> NaiveDateTime.to_iso8601()
  70. tomorrow =
  71. NaiveDateTime.utc_now()
  72. |> NaiveDateTime.add(:timer.hours(36), :millisecond)
  73. |> NaiveDateTime.to_iso8601()
  74. {:ok, _} = ScheduledActivity.create(user, %{params: %{}, scheduled_at: today})
  75. {:ok, _} = ScheduledActivity.create(user, %{params: %{}, scheduled_at: today})
  76. {:ok, _} = ScheduledActivity.create(user, %{params: %{}, scheduled_at: tomorrow})
  77. {:error, changeset} = ScheduledActivity.create(user, %{params: %{}, scheduled_at: tomorrow})
  78. assert changeset.errors == [scheduled_at: {"total limit exceeded", []}]
  79. end
  80. test "when scheduled_at is earlier than 5 minute from now" do
  81. ConfigMock
  82. |> stub_with(StaticConfig)
  83. user = insert(:user)
  84. scheduled_at =
  85. NaiveDateTime.utc_now()
  86. |> NaiveDateTime.add(:timer.minutes(4), :millisecond)
  87. |> NaiveDateTime.to_iso8601()
  88. attrs = %{params: %{}, scheduled_at: scheduled_at}
  89. {:error, changeset} = ScheduledActivity.create(user, attrs)
  90. assert changeset.errors == [scheduled_at: {"must be at least 5 minutes from now", []}]
  91. end
  92. end
  93. end