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.

143 lines
4.8KB

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