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.

158 lines
3.9KB

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