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.

113 lines
3.9KB

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