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.

114 lines
4.0KB

  1. defmodule Pleroma.ListTest do
  2. alias Pleroma.{User, Repo}
  3. use Pleroma.DataCase
  4. import Pleroma.Factory
  5. import Ecto.Query
  6. test "creating a list" do
  7. user = insert(:user)
  8. {:ok, %Pleroma.List{} = list} = Pleroma.List.create("title", user)
  9. %Pleroma.List{title: title} = Pleroma.List.get(list.id, user)
  10. assert title == "title"
  11. end
  12. test "getting a list not belonging to the user" do
  13. user = insert(:user)
  14. other_user = insert(:user)
  15. {:ok, %Pleroma.List{} = list} = Pleroma.List.create("title", user)
  16. ret = Pleroma.List.get(list.id, other_user)
  17. assert is_nil(ret)
  18. end
  19. test "adding an user to a list" do
  20. user = insert(:user)
  21. other_user = insert(:user)
  22. {:ok, list} = Pleroma.List.create("title", user)
  23. {:ok, %{following: following}} = Pleroma.List.follow(list, other_user)
  24. assert [other_user.follower_address] == following
  25. end
  26. test "removing an user from a list" do
  27. user = insert(:user)
  28. other_user = insert(:user)
  29. {:ok, list} = Pleroma.List.create("title", user)
  30. {:ok, %{following: following}} = Pleroma.List.follow(list, other_user)
  31. {:ok, %{following: following}} = Pleroma.List.unfollow(list, other_user)
  32. assert [] == following
  33. end
  34. test "renaming a list" do
  35. user = insert(:user)
  36. {:ok, list} = Pleroma.List.create("title", user)
  37. {:ok, %{title: title}} = Pleroma.List.rename(list, "new")
  38. assert "new" == title
  39. end
  40. test "deleting a list" do
  41. user = insert(:user)
  42. {:ok, list} = Pleroma.List.create("title", user)
  43. {:ok, list} = Pleroma.List.delete(list)
  44. assert is_nil(Repo.get(Pleroma.List, list.id))
  45. end
  46. test "getting users in a list" do
  47. user = insert(:user)
  48. other_user = insert(:user)
  49. third_user = insert(:user)
  50. {:ok, list} = Pleroma.List.create("title", user)
  51. {:ok, list} = Pleroma.List.follow(list, other_user)
  52. {:ok, list} = Pleroma.List.follow(list, third_user)
  53. {:ok, following} = Pleroma.List.get_following(list)
  54. assert other_user in following
  55. assert third_user in following
  56. end
  57. test "getting all lists by an user" do
  58. user = insert(:user)
  59. other_user = insert(:user)
  60. {:ok, list_one} = Pleroma.List.create("title", user)
  61. {:ok, list_two} = Pleroma.List.create("other title", user)
  62. {:ok, list_three} = Pleroma.List.create("third title", other_user)
  63. lists = Pleroma.List.for_user(user, %{})
  64. assert list_one in lists
  65. assert list_two in lists
  66. refute list_three in lists
  67. end
  68. test "getting all lists the user is a member of" do
  69. user = insert(:user)
  70. other_user = insert(:user)
  71. {:ok, list_one} = Pleroma.List.create("title", user)
  72. {:ok, list_two} = Pleroma.List.create("other title", user)
  73. {:ok, list_three} = Pleroma.List.create("third title", other_user)
  74. {:ok, list_one} = Pleroma.List.follow(list_one, other_user)
  75. {:ok, list_two} = Pleroma.List.follow(list_two, other_user)
  76. {:ok, list_three} = Pleroma.List.follow(list_three, user)
  77. lists = Pleroma.List.get_lists_from_activity(%Pleroma.Activity{actor: other_user.ap_id})
  78. assert list_one in lists
  79. assert list_two in lists
  80. refute list_three in lists
  81. end
  82. test "getting own lists a given user belongs to" do
  83. owner = insert(:user)
  84. not_owner = insert(:user)
  85. member_1 = insert(:user)
  86. member_2 = insert(:user)
  87. {:ok, owned_list} = Pleroma.List.create("owned", owner)
  88. {:ok, not_owned_list} = Pleroma.List.create("not owned", not_owner)
  89. {:ok, owned_list} = Pleroma.List.follow(owned_list, member_1)
  90. {:ok, owned_list} = Pleroma.List.follow(owned_list, member_2)
  91. {:ok, not_owned_list} = Pleroma.List.follow(not_owned_list, member_1)
  92. {:ok, not_owned_list} = Pleroma.List.follow(not_owned_list, member_2)
  93. lists_1 = Pleroma.List.get_lists_account_belongs(owner, member_1.id)
  94. assert owned_list in lists_1
  95. refute not_owned_list in lists_1
  96. lists_2 = Pleroma.List.get_lists_account_belongs(owner, member_2.id)
  97. assert owned_list in lists_2
  98. refute not_owned_list in lists_2
  99. end
  100. end