Merge branch 'hardening/disallow-ostatus-downgrade' into 'develop'
[akkoma] / test / emoji_test.exs
index c9c32e20b204ee5a4b192346a3e8dc8a1eacdc8e..07ac6ff1daada3d8da311f2c512fa59c967c736e 100644 (file)
@@ -1,3 +1,7 @@
+# Pleroma: A lightweight social networking server
+# Copyright © 2017-2019 Pleroma Authors <https://pleroma.social/>
+# SPDX-License-Identifier: AGPL-3.0-only
+
 defmodule Pleroma.EmojiTest do
   use ExUnit.Case, async: true
   alias Pleroma.Emoji
@@ -7,6 +11,7 @@ defmodule Pleroma.EmojiTest do
       emoji_list = Emoji.get_all()
       {:ok, emoji_list: emoji_list}
     end
+
     test "first emoji", %{emoji_list: emoji_list} do
       [emoji | _others] = emoji_list
       {code, path, tags} = emoji
@@ -14,17 +19,92 @@ defmodule Pleroma.EmojiTest do
       assert tuple_size(emoji) == 3
       assert is_binary(code)
       assert is_binary(path)
-      assert is_binary(tags)
+      assert is_list(tags)
     end
 
     test "random emoji", %{emoji_list: emoji_list} do
       emoji = Enum.random(emoji_list)
-     {code, path, tags} = emoji
+      {code, path, tags} = emoji
 
       assert tuple_size(emoji) == 3
       assert is_binary(code)
       assert is_binary(path)
-      assert is_binary(tags)
+      assert is_list(tags)
+    end
+  end
+
+  describe "match_extra/2" do
+    setup do
+      groups = [
+        "list of files": ["/emoji/custom/first_file.png", "/emoji/custom/second_file.png"],
+        "wildcard folder": "/emoji/custom/*/file.png",
+        "wildcard files": "/emoji/custom/folder/*.png",
+        "special file": "/emoji/custom/special.png"
+      ]
+
+      {:ok, groups: groups}
+    end
+
+    test "config for list of files", %{groups: groups} do
+      group =
+        groups
+        |> Emoji.match_extra("/emoji/custom/first_file.png")
+        |> to_string()
+
+      assert group == "list of files"
+    end
+
+    test "config with wildcard folder", %{groups: groups} do
+      group =
+        groups
+        |> Emoji.match_extra("/emoji/custom/some_folder/file.png")
+        |> to_string()
+
+      assert group == "wildcard folder"
+    end
+
+    test "config with wildcard folder and subfolders", %{groups: groups} do
+      group =
+        groups
+        |> Emoji.match_extra("/emoji/custom/some_folder/another_folder/file.png")
+        |> to_string()
+
+      assert group == "wildcard folder"
+    end
+
+    test "config with wildcard files", %{groups: groups} do
+      group =
+        groups
+        |> Emoji.match_extra("/emoji/custom/folder/some_file.png")
+        |> to_string()
+
+      assert group == "wildcard files"
+    end
+
+    test "config with wildcard files and subfolders", %{groups: groups} do
+      group =
+        groups
+        |> Emoji.match_extra("/emoji/custom/folder/another_folder/some_file.png")
+        |> to_string()
+
+      assert group == "wildcard files"
+    end
+
+    test "config for special file", %{groups: groups} do
+      group =
+        groups
+        |> Emoji.match_extra("/emoji/custom/special.png")
+        |> to_string()
+
+      assert group == "special file"
+    end
+
+    test "no mathing returns nil", %{groups: groups} do
+      group =
+        groups
+        |> Emoji.match_extra("/emoji/some_undefined.png")
+
+      refute group
     end
   end
 end