Handle non-list keys in Config.fetch/1

This commit is contained in:
Roman Chvanikov 2020-08-05 18:23:12 +03:00
parent 2299bfe4c1
commit 8c57a299b4
2 changed files with 4 additions and 0 deletions

View file

@ -32,6 +32,8 @@ def get!(key) do
end end
end end
def fetch(key) when is_atom(key), do: fetch([key])
def fetch([root_key | keys]) do def fetch([root_key | keys]) do
Enum.reduce_while(keys, Application.fetch_env(:pleroma, root_key), fn Enum.reduce_while(keys, Application.fetch_env(:pleroma, root_key), fn
key, {:ok, config} when is_map(config) or is_list(config) -> key, {:ok, config} when is_map(config) or is_list(config) ->

View file

@ -127,9 +127,11 @@ test "fetch/1" do
Pleroma.Config.put([:ipsum], dolor: :sit) Pleroma.Config.put([:ipsum], dolor: :sit)
assert Pleroma.Config.fetch([:lorem]) == {:ok, :ipsum} assert Pleroma.Config.fetch([:lorem]) == {:ok, :ipsum}
assert Pleroma.Config.fetch(:lorem) == {:ok, :ipsum}
assert Pleroma.Config.fetch([:ipsum, :dolor]) == {:ok, :sit} assert Pleroma.Config.fetch([:ipsum, :dolor]) == {:ok, :sit}
assert Pleroma.Config.fetch([:lorem, :ipsum]) == :error assert Pleroma.Config.fetch([:lorem, :ipsum]) == :error
assert Pleroma.Config.fetch([:loremipsum]) == :error assert Pleroma.Config.fetch([:loremipsum]) == :error
assert Pleroma.Config.fetch(:loremipsum) == :error
Pleroma.Config.delete([:lorem]) Pleroma.Config.delete([:lorem])
Pleroma.Config.delete([:ipsum]) Pleroma.Config.delete([:ipsum])