ListController: Fix being unable to add / remove users.
authorLain Soykaf <lain@lain.com>
Mon, 18 Jan 2021 15:28:36 +0000 (16:28 +0100)
committerLain Soykaf <lain@lain.com>
Mon, 18 Jan 2021 15:28:36 +0000 (16:28 +0100)
lib/pleroma/list.ex
test/pleroma/web/mastodon_api/controllers/list_controller_test.exs

index ff975e7a64e44ab8c74732b473a829bcfd937f14..fe5721c342de61fcf2b71a0f5c8c985196bdfaee 100644 (file)
@@ -113,11 +113,15 @@ defmodule Pleroma.List do
     end
   end
 
-  def follow(%Pleroma.List{following: following} = list, %User{} = followed) do
+  def follow(%Pleroma.List{id: id}, %User{} = followed) do
+    list = Repo.get(Pleroma.List, id)
+    %{following: following} = list
     update_follows(list, %{following: Enum.uniq([followed.follower_address | following])})
   end
 
-  def unfollow(%Pleroma.List{following: following} = list, %User{} = unfollowed) do
+  def unfollow(%Pleroma.List{id: id}, %User{} = unfollowed) do
+    list = Repo.get(Pleroma.List, id)
+    %{following: following} = list
     update_follows(list, %{following: List.delete(following, unfollowed.follower_address)})
   end
 
index cc5e1e66db9f70a3e25b657c44063c69434777c0..28099837eda26b16bf9256a8fb1cb54e2e3f8725 100644 (file)
@@ -55,30 +55,39 @@ defmodule Pleroma.Web.MastodonAPI.ListControllerTest do
   test "adding users to a list" do
     %{user: user, conn: conn} = oauth_access(["write:lists"])
     other_user = insert(:user)
+    third_user = insert(:user)
     {:ok, list} = Pleroma.List.create("name", user)
 
     assert %{} ==
              conn
              |> put_req_header("content-type", "application/json")
-             |> post("/api/v1/lists/#{list.id}/accounts", %{"account_ids" => [other_user.id]})
+             |> post("/api/v1/lists/#{list.id}/accounts", %{
+               "account_ids" => [other_user.id, third_user.id]
+             })
              |> json_response_and_validate_schema(:ok)
 
     %Pleroma.List{following: following} = Pleroma.List.get(list.id, user)
-    assert following == [other_user.follower_address]
+    assert length(following) == 2
+    assert other_user.follower_address in following
+    assert third_user.follower_address in following
   end
 
   test "removing users from a list, body params" do
     %{user: user, conn: conn} = oauth_access(["write:lists"])
     other_user = insert(:user)
     third_user = insert(:user)
+    fourth_user = insert(:user)
     {:ok, list} = Pleroma.List.create("name", user)
     {:ok, list} = Pleroma.List.follow(list, other_user)
     {:ok, list} = Pleroma.List.follow(list, third_user)
+    {:ok, list} = Pleroma.List.follow(list, fourth_user)
 
     assert %{} ==
              conn
              |> put_req_header("content-type", "application/json")
-             |> delete("/api/v1/lists/#{list.id}/accounts", %{"account_ids" => [other_user.id]})
+             |> delete("/api/v1/lists/#{list.id}/accounts", %{
+               "account_ids" => [other_user.id, fourth_user.id]
+             })
              |> json_response_and_validate_schema(:ok)
 
     %Pleroma.List{following: following} = Pleroma.List.get(list.id, user)