2019-07-09 23:13:23 -06:00
|
|
|
# Pleroma: A lightweight social networking server
|
2023-01-02 13:38:50 -07:00
|
|
|
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
|
2019-07-09 23:13:23 -06:00
|
|
|
# SPDX-License-Identifier: AGPL-3.0-only
|
|
|
|
|
2019-04-01 04:17:57 -06:00
|
|
|
defmodule Pleroma.EmojiTest do
|
2020-12-21 04:21:40 -07:00
|
|
|
use ExUnit.Case, async: true
|
2019-04-01 04:17:57 -06:00
|
|
|
alias Pleroma.Emoji
|
|
|
|
|
2019-09-12 18:11:02 -06:00
|
|
|
describe "is_unicode_emoji?/1" do
|
|
|
|
test "tells if a string is an unicode emoji" do
|
|
|
|
refute Emoji.is_unicode_emoji?("X")
|
2020-12-02 08:15:03 -07:00
|
|
|
refute Emoji.is_unicode_emoji?("ね")
|
|
|
|
|
2020-12-02 08:46:19 -07:00
|
|
|
# Only accept fully-qualified (RGI) emoji
|
|
|
|
# See http://www.unicode.org/reports/tr51/
|
|
|
|
refute Emoji.is_unicode_emoji?("❤")
|
|
|
|
refute Emoji.is_unicode_emoji?("☂")
|
|
|
|
|
2019-09-12 18:11:02 -06:00
|
|
|
assert Emoji.is_unicode_emoji?("🥺")
|
2020-12-02 08:15:03 -07:00
|
|
|
assert Emoji.is_unicode_emoji?("🤰")
|
|
|
|
assert Emoji.is_unicode_emoji?("❤️")
|
2020-12-02 08:18:08 -07:00
|
|
|
assert Emoji.is_unicode_emoji?("🏳️⚧️")
|
2022-02-21 11:28:33 -07:00
|
|
|
assert Emoji.is_unicode_emoji?("🫵")
|
2020-12-03 08:17:39 -07:00
|
|
|
|
|
|
|
# Additionally, we accept regional indicators.
|
|
|
|
assert Emoji.is_unicode_emoji?("🇵")
|
|
|
|
assert Emoji.is_unicode_emoji?("🇴")
|
|
|
|
assert Emoji.is_unicode_emoji?("🇬")
|
2019-09-12 18:11:02 -06:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2019-04-01 04:17:57 -06:00
|
|
|
describe "get_all/0" do
|
|
|
|
setup do
|
|
|
|
emoji_list = Emoji.get_all()
|
|
|
|
{:ok, emoji_list: emoji_list}
|
|
|
|
end
|
2019-04-01 04:54:30 -06:00
|
|
|
|
2019-04-01 04:17:57 -06:00
|
|
|
test "first emoji", %{emoji_list: emoji_list} do
|
|
|
|
[emoji | _others] = emoji_list
|
2019-08-31 01:14:53 -06:00
|
|
|
{code, %Emoji{file: path, tags: tags}} = emoji
|
2019-04-01 04:17:57 -06:00
|
|
|
|
2019-08-31 01:14:53 -06:00
|
|
|
assert tuple_size(emoji) == 2
|
2019-04-01 04:17:57 -06:00
|
|
|
assert is_binary(code)
|
|
|
|
assert is_binary(path)
|
2019-04-18 12:17:52 -06:00
|
|
|
assert is_list(tags)
|
2019-04-01 04:17:57 -06:00
|
|
|
end
|
|
|
|
|
|
|
|
test "random emoji", %{emoji_list: emoji_list} do
|
|
|
|
emoji = Enum.random(emoji_list)
|
2019-08-31 01:14:53 -06:00
|
|
|
{code, %Emoji{file: path, tags: tags}} = emoji
|
2019-04-01 04:17:57 -06:00
|
|
|
|
2019-08-31 01:14:53 -06:00
|
|
|
assert tuple_size(emoji) == 2
|
2019-04-01 04:17:57 -06:00
|
|
|
assert is_binary(code)
|
|
|
|
assert is_binary(path)
|
2019-04-18 12:17:52 -06:00
|
|
|
assert is_list(tags)
|
2019-04-01 04:17:57 -06:00
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|