From eeba7cffbe03230e1b9079c1dea69afaf1cab885 Mon Sep 17 00:00:00 2001
From: Case Nelson <case@metabase.com>
Date: Mon, 29 Aug 2022 10:12:43 -0600
Subject: [PATCH] [App] Raise card visualization_settings onto actions (#25043)

Like `parameters`, it is desirable to use an `is_write` card's
visualization_settings to store information for form customizations.
When fetching an action, pull up the card's visualization_settings to
the root of action, later http actions can add a visualization_settings
field and they can be unified with query actions in the same way that
wwe do parameters.
---
 src/metabase/models/action.clj      | 5 +++--
 test/metabase/actions/test_util.clj | 3 ++-
 test/metabase/api/action_test.clj   | 2 ++
 3 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/src/metabase/models/action.clj b/src/metabase/models/action.clj
index cf6968fd4ea..96e0e3a2005 100644
--- a/src/metabase/models/action.clj
+++ b/src/metabase/models/action.clj
@@ -99,7 +99,7 @@
                        :description description
                        :disabled (::disabled card)
                        :card (dissoc card ::disabled)}
-                      (select-keys card [:parameters :parameter_mappings])))))
+                      (select-keys card [:parameters :parameter_mappings :visualization_settings])))))
             actions))))
 
 (defn- normalize-http-actions [actions]
@@ -112,7 +112,8 @@
                    (merge
                      {:disabled false
                       :parameters []
-                      :parameter_mappings {}}
+                      :parameter_mappings {}
+                      :visualization_settings {}}
                      (select-keys http-action [:name :description :template :response_handle :error_handle])
                      (select-keys (:template http-action) [:parameters :parameter_mappings])))))
            actions))))
diff --git a/test/metabase/actions/test_util.clj b/test/metabase/actions/test_util.clj
index 15b9d5047ea..e24d8bf98ef 100644
--- a/test/metabase/actions/test_util.clj
+++ b/test/metabase/actions/test_util.clj
@@ -128,7 +128,8 @@
                                                                                             :required     true}}}}
                                            :name          "Query Example"
                                            :parameters    [{:id "id" :type "number"}]
-                                           :is_write      true}
+                                           :is_write      true
+                                           :visualization_settings {:inline true}}
                                           (dissoc options-map :type))]]
       (let [action-id (db/select-one-field :action_id QueryAction :card_id card-id)]
         (f {:query-action-card-id card-id
diff --git a/test/metabase/api/action_test.clj b/test/metabase/api/action_test.clj
index d1fe41095a6..f99d44f214d 100644
--- a/test/metabase/api/action_test.clj
+++ b/test/metabase/api/action_test.clj
@@ -25,6 +25,8 @@
                                          s/Keyword s/Any}
                               s/Keyword s/Any}
               s/Keyword      s/Any}
+   :parameters s/Any
+   :visualization_settings su/Map
    s/Keyword s/Any})
 
 (deftest list-actions-test
-- 
GitLab