Merge branch 'config-delete' into 'develop'

Add Pleroma.Config.delete/1

See merge request pleroma/pleroma!484
This commit is contained in:
lambda 2018-11-30 17:57:06 +00:00
commit e99bab8f27
2 changed files with 29 additions and 0 deletions

View file

@ -39,4 +39,18 @@ defmodule Pleroma.Config do
def put(key, value) do def put(key, value) do
Application.put_env(:pleroma, key, value) Application.put_env(:pleroma, key, value)
end end
def delete([key]), do: delete(key)
def delete([parent_key | keys]) do
{_, parent} =
Application.get_env(:pleroma, parent_key)
|> get_and_update_in(keys, fn _ -> :pop end)
Application.put_env(:pleroma, parent_key, parent)
end
def delete(key) do
Application.delete_env(:pleroma, key)
end
end end

View file

@ -53,4 +53,19 @@ defmodule Pleroma.ConfigTest do
assert Pleroma.Config.get([:instance, :config_test]) == true assert Pleroma.Config.get([:instance, :config_test]) == true
assert Pleroma.Config.get([:instance, :config_nested_test, :x]) == true assert Pleroma.Config.get([:instance, :config_nested_test, :x]) == true
end end
test "delete/1 with a key" do
Pleroma.Config.put([:delete_me], :delete_me)
Pleroma.Config.delete([:delete_me])
assert Pleroma.Config.get([:delete_me]) == nil
end
test "delete/2 with a list of keys" do
Pleroma.Config.put([:delete_me], hello: "world", world: "Hello")
Pleroma.Config.delete([:delete_me, :world])
assert Pleroma.Config.get([:delete_me]) == [hello: "world"]
Pleroma.Config.put([:delete_me, :delete_me], hello: "world", world: "Hello")
Pleroma.Config.delete([:delete_me, :delete_me, :world])
assert Pleroma.Config.get([:delete_me, :delete_me]) == [hello: "world"]
end
end end