Add AutolinkerToLinkify migration test
authorAlex Gleason <alex@alexgleason.me>
Wed, 22 Jul 2020 18:10:10 +0000 (13:10 -0500)
committerAlex Gleason <alex@alexgleason.me>
Wed, 22 Jul 2020 19:32:24 +0000 (14:32 -0500)
priv/repo/migrations/20200716195806_autolinker_to_linkify.exs
test/migrations/20200716195806_autolinker_to_linkify_test.exs [new file with mode: 0644]

index 782a3cc55c1ba921b5c4af1f26471ab24910131a..570acba8404ca9b5f4b8947ccd01165053284068 100644 (file)
@@ -1,7 +1,5 @@
 defmodule Pleroma.Repo.Migrations.AutolinkerToLinkify do
   use Ecto.Migration
-
-  alias Pleroma.Repo
   alias Pleroma.ConfigDB
 
   @autolinker_path %{group: :auto_linker, key: :opts}
@@ -29,7 +27,7 @@ defmodule Pleroma.Repo.Migrations.AutolinkerToLinkify do
     end
   end
 
-  defp transform_opts(opts) when is_list(opts) do
+  def transform_opts(opts) when is_list(opts) do
     opts
     |> Enum.into(%{})
     |> Map.take(@compat_opts)
diff --git a/test/migrations/20200716195806_autolinker_to_linkify_test.exs b/test/migrations/20200716195806_autolinker_to_linkify_test.exs
new file mode 100644 (file)
index 0000000..362cf55
--- /dev/null
@@ -0,0 +1,68 @@
+defmodule Pleroma.Repo.Migrations.AutolinkerToLinkifyTest do
+  use Pleroma.DataCase
+  import Pleroma.Factory
+  alias Pleroma.ConfigDB
+
+  setup_all do
+    [{module, _}] =
+      Code.require_file("20200716195806_autolinker_to_linkify.exs", "priv/repo/migrations")
+
+    {:ok, %{migration: module}}
+  end
+
+  test "change/0 converts auto_linker opts for Pleroma.Formatter", %{migration: migration} do
+    autolinker_opts = [
+      extra: true,
+      validate_tld: true,
+      class: false,
+      strip_prefix: false,
+      new_window: false,
+      rel: "ugc"
+    ]
+
+    insert(:config, group: :auto_linker, key: :opts, value: autolinker_opts)
+
+    migration.change()
+
+    assert nil == ConfigDB.get_by_params(%{group: :auto_linker, key: :opts})
+
+    %{value: new_opts} = ConfigDB.get_by_params(%{group: :pleroma, key: Pleroma.Formatter})
+
+    assert new_opts == [
+             class: false,
+             extra: true,
+             new_window: false,
+             rel: "ugc",
+             strip_prefix: false
+           ]
+
+    {text, _mentions, []} =
+      Pleroma.Formatter.linkify(
+        "https://www.businessinsider.com/walmart-will-close-stores-on-thanksgiving-ending-black-friday-tradition-2020-7\n\nOmg will COVID finally end Black Friday???"
+      )
+
+    assert text ==
+             "<a href=\"https://www.businessinsider.com/walmart-will-close-stores-on-thanksgiving-ending-black-friday-tradition-2020-7\" rel=\"ugc\">https://www.businessinsider.com/walmart-will-close-stores-on-thanksgiving-ending-black-friday-tradition-2020-7</a>\n\nOmg will COVID finally end Black Friday???"
+  end
+
+  test "transform_opts/1 returns a list of compatible opts", %{migration: migration} do
+    old_opts = [
+      extra: true,
+      validate_tld: true,
+      class: false,
+      strip_prefix: false,
+      new_window: false,
+      rel: "ugc"
+    ]
+
+    expected_opts = [
+      class: false,
+      extra: true,
+      new_window: false,
+      rel: "ugc",
+      strip_prefix: false
+    ]
+
+    assert migration.transform_opts(old_opts) == expected_opts
+  end
+end