forked from AkkomaGang/akkoma
User preloader: Put user info at correct key
This commit is contained in:
parent
a2002ebb63
commit
a19f8778af
2 changed files with 13 additions and 12 deletions
|
@ -3,11 +3,12 @@
|
||||||
# SPDX-License-Identifier: AGPL-3.0-only
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
defmodule Pleroma.Web.Preload.Providers.User do
|
defmodule Pleroma.Web.Preload.Providers.User do
|
||||||
|
alias Pleroma.User
|
||||||
alias Pleroma.Web.MastodonAPI.AccountView
|
alias Pleroma.Web.MastodonAPI.AccountView
|
||||||
alias Pleroma.Web.Preload.Providers.Provider
|
alias Pleroma.Web.Preload.Providers.Provider
|
||||||
|
|
||||||
@behaviour Provider
|
@behaviour Provider
|
||||||
@account_url :"/api/v1/accounts"
|
@account_url_base :"/api/v1/accounts"
|
||||||
|
|
||||||
@impl Provider
|
@impl Provider
|
||||||
def generate_terms(%{user: user}) do
|
def generate_terms(%{user: user}) do
|
||||||
|
@ -16,10 +17,10 @@ def generate_terms(%{user: user}) do
|
||||||
|
|
||||||
def generate_terms(_params), do: %{}
|
def generate_terms(_params), do: %{}
|
||||||
|
|
||||||
def build_accounts_tag(acc, nil), do: acc
|
def build_accounts_tag(acc, %User{} = user) do
|
||||||
|
|
||||||
def build_accounts_tag(acc, user) do
|
|
||||||
account_data = AccountView.render("show.json", %{user: user, for: user})
|
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
|
end
|
||||||
|
|
||||||
|
def build_accounts_tag(acc, _), do: acc
|
||||||
end
|
end
|
||||||
|
|
|
@ -9,13 +9,11 @@ defmodule Pleroma.Web.Preload.Providers.UserTest do
|
||||||
|
|
||||||
describe "returns empty when user doesn't exist" do
|
describe "returns empty when user doesn't exist" do
|
||||||
test "nil user specified" do
|
test "nil user specified" do
|
||||||
refute User.generate_terms(%{user: nil})
|
assert User.generate_terms(%{user: nil}) == %{}
|
||||||
|> Map.has_key?("/api/v1/accounts")
|
|
||||||
end
|
end
|
||||||
|
|
||||||
test "missing user specified" do
|
test "missing user specified" do
|
||||||
refute User.generate_terms(%{user: :not_a_user})
|
assert User.generate_terms(%{user: :not_a_user}) == %{}
|
||||||
|> Map.has_key?("/api/v1/accounts")
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -23,11 +21,13 @@ test "missing user specified" do
|
||||||
setup do
|
setup do
|
||||||
user = insert(:user)
|
user = insert(:user)
|
||||||
|
|
||||||
{:ok, User.generate_terms(%{user: user})}
|
terms = User.generate_terms(%{user: user})
|
||||||
|
%{terms: terms, user: user}
|
||||||
end
|
end
|
||||||
|
|
||||||
test "account is rendered", %{"/api/v1/accounts": accounts} do
|
test "account is rendered", %{terms: terms, user: user} do
|
||||||
assert %{acct: user, username: user} = accounts
|
account = terms[:"/api/v1/accounts/#{user.id}"]
|
||||||
|
assert %{acct: user, username: user} = account
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue