emoji_test.exs (6434B)
- defmodule Mix.Tasks.Pleroma.EmojiTest do
- use ExUnit.Case, async: true
- import ExUnit.CaptureIO
- import Tesla.Mock
- alias Mix.Tasks.Pleroma.Emoji
- describe "ls-packs" do
- test "with default manifest as url" do
- mock(fn
- %{
- method: :get,
- url: "https://git.pleroma.social/pleroma/emoji-index/raw/master/index.json"
- } ->
- %Tesla.Env{
- status: 200,
- body: File.read!("test/fixtures/emoji/packs/default-manifest.json")
- }
- end)
- capture_io(fn -> Emoji.run(["ls-packs"]) end) =~
- "https://finland.fi/wp-content/uploads/2017/06/finland-emojis.zip"
- end
- test "with passed manifest as file" do
- capture_io(fn ->
- Emoji.run(["ls-packs", "-m", "test/fixtures/emoji/packs/manifest.json"])
- end) =~ "https://git.pleroma.social/pleroma/emoji-index/raw/master/packs/blobs_gg.zip"
- end
- end
- describe "get-packs" do
- test "download pack from default manifest" do
- mock(fn
- %{
- method: :get,
- url: "https://git.pleroma.social/pleroma/emoji-index/raw/master/index.json"
- } ->
- %Tesla.Env{
- status: 200,
- body: File.read!("test/fixtures/emoji/packs/default-manifest.json")
- }
- %{
- method: :get,
- url: "https://finland.fi/wp-content/uploads/2017/06/finland-emojis.zip"
- } ->
- %Tesla.Env{
- status: 200,
- body: File.read!("test/fixtures/emoji/packs/blank.png.zip")
- }
- %{
- method: :get,
- url: "https://git.pleroma.social/pleroma/emoji-index/raw/master/finmoji.json"
- } ->
- %Tesla.Env{
- status: 200,
- body: File.read!("test/fixtures/emoji/packs/finmoji.json")
- }
- end)
- assert capture_io(fn -> Emoji.run(["get-packs", "finmoji"]) end) =~ "Writing pack.json for"
- emoji_path =
- Path.join(
- Pleroma.Config.get!([:instance, :static_dir]),
- "emoji"
- )
- assert File.exists?(Path.join([emoji_path, "finmoji", "pack.json"]))
- on_exit(fn -> File.rm_rf!("test/instance_static/emoji/finmoji") end)
- end
- test "install local emoji pack" do
- assert capture_io(fn ->
- Emoji.run([
- "get-packs",
- "local",
- "--manifest",
- "test/instance_static/local_pack/manifest.json"
- ])
- end) =~ "Writing pack.json for"
- on_exit(fn -> File.rm_rf!("test/instance_static/emoji/local") end)
- end
- test "pack not found" do
- mock(fn
- %{
- method: :get,
- url: "https://git.pleroma.social/pleroma/emoji-index/raw/master/index.json"
- } ->
- %Tesla.Env{
- status: 200,
- body: File.read!("test/fixtures/emoji/packs/default-manifest.json")
- }
- end)
- assert capture_io(fn -> Emoji.run(["get-packs", "not_found"]) end) =~
- "No pack named \"not_found\" found"
- end
- test "raise on bad sha256" do
- mock(fn
- %{
- method: :get,
- url: "https://git.pleroma.social/pleroma/emoji-index/raw/master/packs/blobs_gg.zip"
- } ->
- %Tesla.Env{
- status: 200,
- body: File.read!("test/fixtures/emoji/packs/blank.png.zip")
- }
- end)
- assert_raise RuntimeError, ~r/^Bad SHA256 for blobs.gg/, fn ->
- capture_io(fn ->
- Emoji.run(["get-packs", "blobs.gg", "-m", "test/fixtures/emoji/packs/manifest.json"])
- end)
- end
- end
- end
- describe "gen-pack" do
- setup do
- url = "https://finland.fi/wp-content/uploads/2017/06/finland-emojis.zip"
- mock(fn %{
- method: :get,
- url: ^url
- } ->
- %Tesla.Env{status: 200, body: File.read!("test/fixtures/emoji/packs/blank.png.zip")}
- end)
- {:ok, url: url}
- end
- test "with default extensions", %{url: url} do
- name = "pack1"
- pack_json = "#{name}.json"
- files_json = "#{name}_file.json"
- refute File.exists?(pack_json)
- refute File.exists?(files_json)
- captured =
- capture_io(fn ->
- Emoji.run([
- "gen-pack",
- url,
- "--name",
- name,
- "--license",
- "license",
- "--homepage",
- "homepage",
- "--description",
- "description",
- "--files",
- files_json,
- "--extensions",
- ".png .gif"
- ])
- end)
- assert captured =~ "#{pack_json} has been created with the pack1 pack"
- assert captured =~ "Using .png .gif extensions"
- assert File.exists?(pack_json)
- assert File.exists?(files_json)
- on_exit(fn ->
- File.rm!(pack_json)
- File.rm!(files_json)
- end)
- end
- test "with custom extensions and update existing files", %{url: url} do
- name = "pack2"
- pack_json = "#{name}.json"
- files_json = "#{name}_file.json"
- refute File.exists?(pack_json)
- refute File.exists?(files_json)
- captured =
- capture_io(fn ->
- Emoji.run([
- "gen-pack",
- url,
- "--name",
- name,
- "--license",
- "license",
- "--homepage",
- "homepage",
- "--description",
- "description",
- "--files",
- files_json,
- "--extensions",
- " .png .gif .jpeg "
- ])
- end)
- assert captured =~ "#{pack_json} has been created with the pack2 pack"
- assert captured =~ "Using .png .gif .jpeg extensions"
- assert File.exists?(pack_json)
- assert File.exists?(files_json)
- captured =
- capture_io(fn ->
- Emoji.run([
- "gen-pack",
- url,
- "--name",
- name,
- "--license",
- "license",
- "--homepage",
- "homepage",
- "--description",
- "description",
- "--files",
- files_json,
- "--extensions",
- " .png .gif .jpeg "
- ])
- end)
- assert captured =~ "#{pack_json} has been updated with the pack2 pack"
- on_exit(fn ->
- File.rm!(pack_json)
- File.rm!(files_json)
- end)
- end
- end
- end