forked from AkkomaGang/akkoma
added tests
This commit is contained in:
parent
fcf604fa43
commit
007e0c1ce1
4 changed files with 68 additions and 21 deletions
|
@ -870,41 +870,44 @@ def add_mention_tags(object) do
|
||||||
mentions =
|
mentions =
|
||||||
object
|
object
|
||||||
|> Utils.get_notified_from_object()
|
|> Utils.get_notified_from_object()
|
||||||
|> Enum.map(fn user ->
|
|> Enum.map(&build_mention_tag/1)
|
||||||
%{"type" => "Mention", "href" => user.ap_id, "name" => "@#{user.nickname}"}
|
|
||||||
end)
|
|
||||||
|
|
||||||
tags = object["tag"] || []
|
tags = object["tag"] || []
|
||||||
|
|
||||||
Map.put(object, "tag", tags ++ mentions)
|
Map.put(object, "tag", tags ++ mentions)
|
||||||
end
|
end
|
||||||
|
|
||||||
def add_emoji_tags(%User{info: %{"emoji" => _emoji} = user_info} = object) do
|
defp build_mention_tag(%{ap_id: ap_id, nickname: nickname} = _) do
|
||||||
user_info = add_emoji_tags(user_info)
|
%{"type" => "Mention", "href" => ap_id, "name" => "@#{nickname}"}
|
||||||
|
end
|
||||||
|
|
||||||
Map.put(object, :info, user_info)
|
def take_emoji_tags(%User{info: %{emoji: emoji} = _user_info} = _user) do
|
||||||
|
emoji
|
||||||
|
|> Enum.flat_map(&Map.to_list/1)
|
||||||
|
|> Enum.map(&build_emoji_tag/1)
|
||||||
end
|
end
|
||||||
|
|
||||||
# TODO: we should probably send mtime instead of unix epoch time for updated
|
# TODO: we should probably send mtime instead of unix epoch time for updated
|
||||||
def add_emoji_tags(%{"emoji" => emoji} = object) do
|
def add_emoji_tags(%{"emoji" => emoji} = object) do
|
||||||
tags = object["tag"] || []
|
tags = object["tag"] || []
|
||||||
|
|
||||||
out =
|
out = Enum.map(emoji, &build_emoji_tag/1)
|
||||||
Enum.map(emoji, fn {name, url} ->
|
|
||||||
%{
|
|
||||||
"icon" => %{"url" => url, "type" => "Image"},
|
|
||||||
"name" => ":" <> name <> ":",
|
|
||||||
"type" => "Emoji",
|
|
||||||
"updated" => "1970-01-01T00:00:00Z",
|
|
||||||
"id" => url
|
|
||||||
}
|
|
||||||
end)
|
|
||||||
|
|
||||||
Map.put(object, "tag", tags ++ out)
|
Map.put(object, "tag", tags ++ out)
|
||||||
end
|
end
|
||||||
|
|
||||||
def add_emoji_tags(object), do: object
|
def add_emoji_tags(object), do: object
|
||||||
|
|
||||||
|
defp build_emoji_tag({name, url}) do
|
||||||
|
%{
|
||||||
|
"icon" => %{"url" => url, "type" => "Image"},
|
||||||
|
"name" => ":" <> name <> ":",
|
||||||
|
"type" => "Emoji",
|
||||||
|
"updated" => "1970-01-01T00:00:00Z",
|
||||||
|
"id" => url
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
def set_conversation(object) do
|
def set_conversation(object) do
|
||||||
Map.put(object, "conversation", object["context"])
|
Map.put(object, "conversation", object["context"])
|
||||||
end
|
end
|
||||||
|
|
|
@ -75,10 +75,7 @@ def render("user.json", %{user: user}) do
|
||||||
|
|
||||||
endpoints = render("endpoints.json", %{user: user})
|
endpoints = render("endpoints.json", %{user: user})
|
||||||
|
|
||||||
user_tags =
|
emoji_tags = Transmogrifier.take_emoji_tags(user)
|
||||||
user
|
|
||||||
|> Transmogrifier.add_emoji_tags()
|
|
||||||
|> Map.get("tag", [])
|
|
||||||
|
|
||||||
fields =
|
fields =
|
||||||
user.info
|
user.info
|
||||||
|
@ -110,7 +107,7 @@ def render("user.json", %{user: user}) do
|
||||||
},
|
},
|
||||||
"endpoints" => endpoints,
|
"endpoints" => endpoints,
|
||||||
"attachment" => fields,
|
"attachment" => fields,
|
||||||
"tag" => (user.info.source_data["tag"] || []) ++ user_tags
|
"tag" => (user.info.source_data["tag"] || []) ++ emoji_tags
|
||||||
}
|
}
|
||||||
|> Map.merge(maybe_make_image(&User.avatar_url/2, "icon", user))
|
|> Map.merge(maybe_make_image(&User.avatar_url/2, "icon", user))
|
||||||
|> Map.merge(maybe_make_image(&User.banner_url/2, "image", user))
|
|> Map.merge(maybe_make_image(&User.banner_url/2, "image", user))
|
||||||
|
|
|
@ -1687,4 +1687,35 @@ test "returns modified object when attachment is list" do
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe "fix_emoji/1" do
|
||||||
|
test "returns not modified object when object not contains tags" do
|
||||||
|
data = Poison.decode!(File.read!("test/fixtures/mastodon-post-activity.json"))
|
||||||
|
assert Transmogrifier.fix_emoji(data) == data
|
||||||
|
end
|
||||||
|
|
||||||
|
test "returns object with emoji when object contains list tags" do
|
||||||
|
assert Transmogrifier.fix_emoji(%{
|
||||||
|
"tag" => [
|
||||||
|
%{"type" => "Emoji", "name" => ":bib:", "icon" => %{"url" => "/test"}},
|
||||||
|
%{"type" => "Hashtag"}
|
||||||
|
]
|
||||||
|
}) == %{
|
||||||
|
"emoji" => %{"bib" => "/test"},
|
||||||
|
"tag" => [
|
||||||
|
%{"icon" => %{"url" => "/test"}, "name" => ":bib:", "type" => "Emoji"},
|
||||||
|
%{"type" => "Hashtag"}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
test "returns object with emoji when object contains map tag" do
|
||||||
|
assert Transmogrifier.fix_emoji(%{
|
||||||
|
"tag" => %{"type" => "Emoji", "name" => ":bib:", "icon" => %{"url" => "/test"}}
|
||||||
|
}) == %{
|
||||||
|
"emoji" => %{"bib" => "/test"},
|
||||||
|
"tag" => %{"icon" => %{"url" => "/test"}, "name" => ":bib:", "type" => "Emoji"}
|
||||||
|
}
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -37,6 +37,22 @@ test "Renders profile fields" do
|
||||||
} = UserView.render("user.json", %{user: user})
|
} = UserView.render("user.json", %{user: user})
|
||||||
end
|
end
|
||||||
|
|
||||||
|
test "Renders with emoji tags" do
|
||||||
|
user = insert(:user, %{info: %{emoji: [%{"bib" => "/test"}]}})
|
||||||
|
|
||||||
|
assert %{
|
||||||
|
"tag" => [
|
||||||
|
%{
|
||||||
|
"icon" => %{"type" => "Image", "url" => "/test"},
|
||||||
|
"id" => "/test",
|
||||||
|
"name" => ":bib:",
|
||||||
|
"type" => "Emoji",
|
||||||
|
"updated" => "1970-01-01T00:00:00Z"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
} = UserView.render("user.json", %{user: user})
|
||||||
|
end
|
||||||
|
|
||||||
test "Does not add an avatar image if the user hasn't set one" do
|
test "Does not add an avatar image if the user hasn't set one" do
|
||||||
user = insert(:user)
|
user = insert(:user)
|
||||||
{:ok, user} = User.ensure_keys_present(user)
|
{:ok, user} = User.ensure_keys_present(user)
|
||||||
|
|
Loading…
Reference in a new issue