First
[anni] / test / pleroma / repo / migrations / fix_malformed_formatter_config_test.exs
1 # Pleroma: A lightweight social networking server
2 # Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
3 # SPDX-License-Identifier: AGPL-3.0-only
4
5 defmodule Pleroma.Repo.Migrations.FixMalformedFormatterConfigTest do
6   use Pleroma.DataCase
7   import Pleroma.Factory
8   import Pleroma.Tests.Helpers
9   alias Pleroma.ConfigDB
10
11   setup do: clear_config(Pleroma.Formatter)
12   setup_all do: require_migration("20200722185515_fix_malformed_formatter_config")
13
14   test "change/0 converts a map into a list", %{migration: migration} do
15     incorrect_opts = %{
16       class: false,
17       extra: true,
18       new_window: false,
19       rel: "F",
20       strip_prefix: false
21     }
22
23     insert(:config, group: :pleroma, key: Pleroma.Formatter, value: incorrect_opts)
24
25     assert :ok == migration.change()
26
27     %{value: new_opts} = ConfigDB.get_by_params(%{group: :pleroma, key: Pleroma.Formatter})
28
29     assert new_opts == [
30              class: false,
31              extra: true,
32              new_window: false,
33              rel: "F",
34              strip_prefix: false
35            ]
36
37     clear_config(Pleroma.Formatter, new_opts)
38     assert new_opts == Pleroma.Config.get(Pleroma.Formatter)
39
40     {text, _mentions, []} =
41       Pleroma.Formatter.linkify(
42         "https://www.businessinsider.com/walmart-will-close-stores-on-thanksgiving-ending-black-friday-tradition-2020-7\n\nOmg will COVID finally end Black Friday???"
43       )
44
45     assert text ==
46              "<a href=\"https://www.businessinsider.com/walmart-will-close-stores-on-thanksgiving-ending-black-friday-tradition-2020-7\" rel=\"F\">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???"
47   end
48
49   test "change/0 skips if Pleroma.Formatter config is already a list", %{migration: migration} do
50     opts = [
51       class: false,
52       extra: true,
53       new_window: false,
54       rel: "ugc",
55       strip_prefix: false
56     ]
57
58     insert(:config, group: :pleroma, key: Pleroma.Formatter, value: opts)
59
60     assert :skipped == migration.change()
61
62     %{value: new_opts} = ConfigDB.get_by_params(%{group: :pleroma, key: Pleroma.Formatter})
63
64     assert new_opts == opts
65   end
66
67   test "change/0 skips if Pleroma.Formatter is empty", %{migration: migration} do
68     assert :skipped == migration.change()
69   end
70 end