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.

155 lines
3.8KB

  1. defmodule Pleroma.FilterTest do
  2. alias Pleroma.{User, Repo}
  3. use Pleroma.DataCase
  4. import Pleroma.Factory
  5. import Ecto.Query
  6. describe "creating filters" do
  7. test "creating one filter" do
  8. user = insert(:user)
  9. query = %Pleroma.Filter{
  10. user_id: user.id,
  11. filter_id: 42,
  12. phrase: "knights",
  13. context: ["home"]
  14. }
  15. {:ok, %Pleroma.Filter{} = filter} = Pleroma.Filter.create(query)
  16. result = Pleroma.Filter.get(filter.filter_id, user)
  17. assert query.phrase == result.phrase
  18. end
  19. test "creating one filter without a pre-defined filter_id" do
  20. user = insert(:user)
  21. query = %Pleroma.Filter{
  22. user_id: user.id,
  23. phrase: "knights",
  24. context: ["home"]
  25. }
  26. {:ok, %Pleroma.Filter{} = filter} = Pleroma.Filter.create(query)
  27. # Should start at 1
  28. assert filter.filter_id == 1
  29. end
  30. test "creating additional filters uses previous highest filter_id + 1" do
  31. user = insert(:user)
  32. query_one = %Pleroma.Filter{
  33. user_id: user.id,
  34. filter_id: 42,
  35. phrase: "knights",
  36. context: ["home"]
  37. }
  38. {:ok, %Pleroma.Filter{} = filter_one} = Pleroma.Filter.create(query_one)
  39. query_two = %Pleroma.Filter{
  40. user_id: user.id,
  41. # No filter_id
  42. phrase: "who",
  43. context: ["home"]
  44. }
  45. {:ok, %Pleroma.Filter{} = filter_two} = Pleroma.Filter.create(query_two)
  46. assert filter_two.filter_id == filter_one.filter_id + 1
  47. end
  48. test "filter_id is unique per user" do
  49. user_one = insert(:user)
  50. user_two = insert(:user)
  51. query_one = %Pleroma.Filter{
  52. user_id: user_one.id,
  53. phrase: "knights",
  54. context: ["home"]
  55. }
  56. {:ok, %Pleroma.Filter{} = filter_one} = Pleroma.Filter.create(query_one)
  57. query_two = %Pleroma.Filter{
  58. user_id: user_two.id,
  59. phrase: "who",
  60. context: ["home"]
  61. }
  62. {:ok, %Pleroma.Filter{} = filter_two} = Pleroma.Filter.create(query_two)
  63. assert filter_one.filter_id == 1
  64. assert filter_two.filter_id == 1
  65. result_one = Pleroma.Filter.get(filter_one.filter_id, user_one)
  66. assert result_one.phrase == filter_one.phrase
  67. result_two = Pleroma.Filter.get(filter_two.filter_id, user_two)
  68. assert result_two.phrase == filter_two.phrase
  69. end
  70. end
  71. test "deleting a filter" do
  72. user = insert(:user)
  73. query = %Pleroma.Filter{
  74. user_id: user.id,
  75. filter_id: 0,
  76. phrase: "knights",
  77. context: ["home"]
  78. }
  79. {:ok, filter} = Pleroma.Filter.create(query)
  80. {:ok, filter} = Pleroma.Filter.delete(query)
  81. assert is_nil(Repo.get(Pleroma.Filter, filter.filter_id))
  82. end
  83. test "getting all filters by an user" do
  84. user = insert(:user)
  85. query_one = %Pleroma.Filter{
  86. user_id: user.id,
  87. filter_id: 1,
  88. phrase: "knights",
  89. context: ["home"]
  90. }
  91. query_two = %Pleroma.Filter{
  92. user_id: user.id,
  93. filter_id: 2,
  94. phrase: "who",
  95. context: ["home"]
  96. }
  97. {:ok, filter_one} = Pleroma.Filter.create(query_one)
  98. {:ok, filter_two} = Pleroma.Filter.create(query_two)
  99. filters = Pleroma.Filter.get_filters(user)
  100. assert filter_one in filters
  101. assert filter_two in filters
  102. end
  103. test "updating a filter" do
  104. user = insert(:user)
  105. query_one = %Pleroma.Filter{
  106. user_id: user.id,
  107. filter_id: 1,
  108. phrase: "knights",
  109. context: ["home"]
  110. }
  111. query_two = %Pleroma.Filter{
  112. user_id: user.id,
  113. filter_id: 1,
  114. phrase: "who",
  115. context: ["home", "timeline"]
  116. }
  117. {:ok, filter_one} = Pleroma.Filter.create(query_one)
  118. {:ok, filter_two} = Pleroma.Filter.update(query_two)
  119. assert filter_one != filter_two
  120. assert filter_two.phrase == query_two.phrase
  121. assert filter_two.context == query_two.context
  122. end
  123. end