summaryrefslogtreecommitdiff
path: root/test/pleroma/repo/migrations/move_welcome_settings_test.exs
blob: 3e485c3ad4c5b076d664c0042ac23433215a4bee (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
# Pleroma: A lightweight social networking server
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
# SPDX-License-Identifier: AGPL-3.0-only

defmodule Pleroma.Repo.Migrations.MoveWelcomeSettingsTest do
  use Pleroma.DataCase, async: true
  import Pleroma.Factory
  import Pleroma.Tests.Helpers
  alias Pleroma.ConfigDB

  setup_all do: require_migration("20200724133313_move_welcome_settings")

  describe "up/0" do
    test "converts welcome settings", %{migration: migration} do
      insert(:config,
        group: :pleroma,
        key: :instance,
        value: [
          welcome_message: "Test message",
          welcome_user_nickname: "jimm",
          name: "Pleroma"
        ]
      )

      migration.up()
      instance_config = ConfigDB.get_by_params(%{group: :pleroma, key: :instance})
      welcome_config = ConfigDB.get_by_params(%{group: :pleroma, key: :welcome})

      assert instance_config.value == [name: "Pleroma"]

      assert welcome_config.value == [
               direct_message: %{
                 enabled: true,
                 message: "Test message",
                 sender_nickname: "jimm"
               },
               email: %{
                 enabled: false,
                 html: "Welcome to <%= instance_name %>",
                 sender: nil,
                 subject: "Welcome to <%= instance_name %>",
                 text: "Welcome to <%= instance_name %>"
               }
             ]
    end

    test "does nothing when message empty", %{migration: migration} do
      insert(:config,
        group: :pleroma,
        key: :instance,
        value: [
          welcome_message: "",
          welcome_user_nickname: "jimm",
          name: "Pleroma"
        ]
      )

      migration.up()
      instance_config = ConfigDB.get_by_params(%{group: :pleroma, key: :instance})
      refute ConfigDB.get_by_params(%{group: :pleroma, key: :welcome})
      assert instance_config.value == [name: "Pleroma"]
    end

    test "does nothing when welcome_message not set", %{migration: migration} do
      insert(:config,
        group: :pleroma,
        key: :instance,
        value: [welcome_user_nickname: "jimm", name: "Pleroma"]
      )

      migration.up()
      instance_config = ConfigDB.get_by_params(%{group: :pleroma, key: :instance})
      refute ConfigDB.get_by_params(%{group: :pleroma, key: :welcome})
      assert instance_config.value == [name: "Pleroma"]
    end
  end

  describe "down/0" do
    test "revert new settings to old when instance setting not exists", %{migration: migration} do
      insert(:config,
        group: :pleroma,
        key: :welcome,
        value: [
          direct_message: %{
            enabled: true,
            message: "Test message",
            sender_nickname: "jimm"
          },
          email: %{
            enabled: false,
            html: "Welcome to <%= instance_name %>",
            sender: nil,
            subject: "Welcome to <%= instance_name %>",
            text: "Welcome to <%= instance_name %>"
          }
        ]
      )

      migration.down()

      refute ConfigDB.get_by_params(%{group: :pleroma, key: :welcome})
      instance_config = ConfigDB.get_by_params(%{group: :pleroma, key: :instance})

      assert instance_config.value == [
               welcome_user_nickname: "jimm",
               welcome_message: "Test message"
             ]
    end

    test "revert new settings to old when instance setting exists", %{migration: migration} do
      insert(:config, group: :pleroma, key: :instance, value: [name: "Pleroma App"])

      insert(:config,
        group: :pleroma,
        key: :welcome,
        value: [
          direct_message: %{
            enabled: true,
            message: "Test message",
            sender_nickname: "jimm"
          },
          email: %{
            enabled: false,
            html: "Welcome to <%= instance_name %>",
            sender: nil,
            subject: "Welcome to <%= instance_name %>",
            text: "Welcome to <%= instance_name %>"
          }
        ]
      )

      migration.down()

      refute ConfigDB.get_by_params(%{group: :pleroma, key: :welcome})
      instance_config = ConfigDB.get_by_params(%{group: :pleroma, key: :instance})

      assert instance_config.value == [
               name: "Pleroma App",
               welcome_user_nickname: "jimm",
               welcome_message: "Test message"
             ]
    end
  end
end