User preloader: Put user info at correct key
authorlain <lain@soykaf.club>
Mon, 29 Jun 2020 09:06:20 +0000 (11:06 +0200)
committerlain <lain@soykaf.club>
Mon, 29 Jun 2020 09:06:20 +0000 (11:06 +0200)
lib/pleroma/web/preload/user.ex
test/web/preload/user_test.exs

index 3a244845b499f0d9221815465eeafa0f32726240..7fef0a4acef505e3e6aea254e9a6f90a0505e9b7 100644 (file)
@@ -3,11 +3,12 @@
 # SPDX-License-Identifier: AGPL-3.0-only
 
 defmodule Pleroma.Web.Preload.Providers.User do
+  alias Pleroma.User
   alias Pleroma.Web.MastodonAPI.AccountView
   alias Pleroma.Web.Preload.Providers.Provider
 
   @behaviour Provider
-  @account_url :"/api/v1/accounts"
+  @account_url_base :"/api/v1/accounts"
 
   @impl Provider
   def generate_terms(%{user: user}) do
@@ -16,10 +17,10 @@ defmodule Pleroma.Web.Preload.Providers.User do
 
   def generate_terms(_params), do: %{}
 
-  def build_accounts_tag(acc, nil), do: acc
-
-  def build_accounts_tag(acc, user) do
+  def build_accounts_tag(acc, %User{} = user) do
     account_data = AccountView.render("show.json", %{user: user, for: user})
-    Map.put(acc, @account_url, account_data)
+    Map.put(acc, :"#{@account_url_base}/#{user.id}", account_data)
   end
+
+  def build_accounts_tag(acc, _), do: acc
 end
index 99232cdfa9fa7f3ecbdc6e636dee88d50c2c8528..68d69d97760a51bfaed5cd5815b2071c0d890d6f 100644 (file)
@@ -9,13 +9,11 @@ defmodule Pleroma.Web.Preload.Providers.UserTest do
 
   describe "returns empty when user doesn't exist" do
     test "nil user specified" do
-      refute User.generate_terms(%{user: nil})
-             |> Map.has_key?("/api/v1/accounts")
+      assert User.generate_terms(%{user: nil}) == %{}
     end
 
     test "missing user specified" do
-      refute User.generate_terms(%{user: :not_a_user})
-             |> Map.has_key?("/api/v1/accounts")
+      assert User.generate_terms(%{user: :not_a_user}) == %{}
     end
   end
 
@@ -23,11 +21,13 @@ defmodule Pleroma.Web.Preload.Providers.UserTest do
     setup do
       user = insert(:user)
 
-      {:ok, User.generate_terms(%{user: user})}
+      terms = User.generate_terms(%{user: user})
+      %{terms: terms, user: user}
     end
 
-    test "account is rendered", %{"/api/v1/accounts": accounts} do
-      assert %{acct: user, username: user} = accounts
+    test "account is rendered", %{terms: terms, user: user} do
+      account = terms[:"/api/v1/accounts/#{user.id}"]
+      assert %{acct: user, username: user} = account
     end
   end
 end