Handle new-style mastodon follow lists
[akkoma] / test / config_test.exs
1 # Pleroma: A lightweight social networking server
2 # Copyright © 2017-2018 Pleroma Authors <https://pleroma.social/>
3 # SPDX-License-Identifier: AGPL-3.0-only
4
5 defmodule Pleroma.ConfigTest do
6 use ExUnit.Case
7
8 test "get/1 with an atom" do
9 assert Pleroma.Config.get(:instance) == Application.get_env(:pleroma, :instance)
10 assert Pleroma.Config.get(:azertyuiop) == nil
11 assert Pleroma.Config.get(:azertyuiop, true) == true
12 end
13
14 test "get/1 with a list of keys" do
15 assert Pleroma.Config.get([:instance, :public]) ==
16 Keyword.get(Application.get_env(:pleroma, :instance), :public)
17
18 assert Pleroma.Config.get([Pleroma.Web.Endpoint, :render_errors, :view]) ==
19 get_in(
20 Application.get_env(
21 :pleroma,
22 Pleroma.Web.Endpoint
23 ),
24 [:render_errors, :view]
25 )
26
27 assert Pleroma.Config.get([:azerty, :uiop]) == nil
28 assert Pleroma.Config.get([:azerty, :uiop], true) == true
29 end
30
31 test "get!/1" do
32 assert Pleroma.Config.get!(:instance) == Application.get_env(:pleroma, :instance)
33
34 assert Pleroma.Config.get!([:instance, :public]) ==
35 Keyword.get(Application.get_env(:pleroma, :instance), :public)
36
37 assert_raise(Pleroma.Config.Error, fn ->
38 Pleroma.Config.get!(:azertyuiop)
39 end)
40
41 assert_raise(Pleroma.Config.Error, fn ->
42 Pleroma.Config.get!([:azerty, :uiop])
43 end)
44 end
45
46 test "put/2 with a key" do
47 Pleroma.Config.put(:config_test, true)
48
49 assert Pleroma.Config.get(:config_test) == true
50 end
51
52 test "put/2 with a list of keys" do
53 Pleroma.Config.put([:instance, :config_test], true)
54 Pleroma.Config.put([:instance, :config_nested_test], [])
55 Pleroma.Config.put([:instance, :config_nested_test, :x], true)
56
57 assert Pleroma.Config.get([:instance, :config_test]) == true
58 assert Pleroma.Config.get([:instance, :config_nested_test, :x]) == true
59 end
60
61 test "delete/1 with a key" do
62 Pleroma.Config.put([:delete_me], :delete_me)
63 Pleroma.Config.delete([:delete_me])
64 assert Pleroma.Config.get([:delete_me]) == nil
65 end
66
67 test "delete/2 with a list of keys" do
68 Pleroma.Config.put([:delete_me], hello: "world", world: "Hello")
69 Pleroma.Config.delete([:delete_me, :world])
70 assert Pleroma.Config.get([:delete_me]) == [hello: "world"]
71 Pleroma.Config.put([:delete_me, :delete_me], hello: "world", world: "Hello")
72 Pleroma.Config.delete([:delete_me, :delete_me, :world])
73 assert Pleroma.Config.get([:delete_me, :delete_me]) == [hello: "world"]
74 end
75 end