fix attemps to merge map
authorAlexander Strizhakov <alex.strizhakov@gmail.com>
Sun, 31 May 2020 10:25:04 +0000 (13:25 +0300)
committerAlexander Strizhakov <alex.strizhakov@gmail.com>
Tue, 16 Jun 2020 12:54:22 +0000 (15:54 +0300)
lib/pleroma/config/config_db.ex
test/config/config_db_test.exs

index 39b37c42e6887727cc56a1ac6a1ef8686d22de63..70be17ecf71f0fa77978b7c6d3868763aa5c247f 100644 (file)
@@ -135,7 +135,8 @@ defmodule Pleroma.ConfigDB do
 
     with %ConfigDB{} = config <- ConfigDB.get_by_params(search_opts),
          {_, true, config} <- {:partial_update, can_be_partially_updated?(config), config},
-         {_, true, config} <- {:can_be_merged, is_list(params[:value]), config} do
+         {_, true, config} <-
+           {:can_be_merged, is_list(params[:value]) and is_list(config.value), config} do
       new_value = merge_group(config.group, config.key, config.value, params[:value])
       update(config, %{value: new_value})
     else
index 8d753e255ccffbd6dcf98e57399872633ac5ca60..3895e2cdac32f7e0132a998625c45d22de744b52 100644 (file)
@@ -43,7 +43,7 @@ defmodule Pleroma.ConfigDBTest do
 
       params = [
         %{group: :pleroma, key: key2, value: "another_value"},
-        %{group: :pleroma, key: config.key, value: "new_value"}
+        %{group: :pleroma, key: config.key, value: [a: 1, b: 2, c: "new_value"]}
       ]
 
       assert Repo.all(ConfigDB) |> length() == 1
@@ -55,7 +55,7 @@ defmodule Pleroma.ConfigDBTest do
       config1 = ConfigDB.get_by_params(%{group: config.group, key: config.key})
       config2 = ConfigDB.get_by_params(%{group: :pleroma, key: key2})
 
-      assert config1.value == "new_value"
+      assert config1.value == [a: 1, b: 2, c: "new_value"]
       assert config2.value == "another_value"
     end
 
@@ -398,6 +398,10 @@ defmodule Pleroma.ConfigDBTest do
              ]
     end
 
+    test "trandformed keyword" do
+      assert ConfigDB.to_elixir_types(a: 1, b: 2, c: "string") == [a: 1, b: 2, c: "string"]
+    end
+
     test "complex keyword with nested mixed childs" do
       assert ConfigDB.to_elixir_types([
                %{"tuple" => [":uploader", "Pleroma.Uploaders.Local"]},