From 7280c6f41be33f78df1aabe4666df4b49862accd Mon Sep 17 00:00:00 2001
From: Simon Brooke <simon@journeyman.cc>
Date: Mon, 6 Aug 2018 09:32:42 +0100
Subject: [PATCH] Safety commit

Ran out of electricity last night when I'd almost but not quite got creation working properly. Frustrating! I don't have much electricity this morning so I'm pushing this up to GitHub for safety.
---
 src/adl_support/forms_support.clj       |  9 ++++++++-
 test/adl_support/forms_support_test.clj | 20 +++++++++++++++++++-
 2 files changed, 27 insertions(+), 2 deletions(-)

diff --git a/src/adl_support/forms_support.clj b/src/adl_support/forms_support.clj
index 550fd3c..b7c2e3f 100644
--- a/src/adl_support/forms_support.clj
+++ b/src/adl_support/forms_support.clj
@@ -1,6 +1,6 @@
 (ns adl-support.forms-support
   (:require [adl-support.core :refer [do-or-log-error do-or-return-reason]]
-            [adl-support.utils :refer [safe-name singularise]]
+            [adl-support.utils :refer [descendants-with-tag safe-name singularise]]
             [clojure.core.memoize :as memo]
             [clojure.data.json :as json]
             [clojure.java.io :as io]
@@ -103,3 +103,10 @@
     (reduce {} (map #(hash-map (keyword %) nil) ~fields))
     ~params))
 
+(defn property-defaults
+  [entity]
+  (reduce
+    merge {}
+    (map
+      #(hash-map (keyword (-> % :attrs :name)) (-> % :attrs :default))
+      (descendants-with-tag entity :property #(-> % :attrs :default)))))
diff --git a/test/adl_support/forms_support_test.clj b/test/adl_support/forms_support_test.clj
index 96b5755..20f94c4 100644
--- a/test/adl_support/forms_support_test.clj
+++ b/test/adl_support/forms_support_test.clj
@@ -1,4 +1,3 @@
-
 (ns adl-support.forms-support-test
   (:require [clojure.test :refer :all]
             [adl-support.forms-support :refer :all]))
@@ -14,3 +13,22 @@
           expected "auxlist-dwellings"
           actual (auxlist-data-name auxlist)]
       (is (= expected actual) "Just checking..."))))
+
+
+(deftest prepare-insertion-params-tests
+  (testing "prepare-insertion-params"
+    (is (= {:test1 nil :test2 nil}
+           (prepare-insertion-params {} #{:test1 :test2}))
+        "Empty params; set")
+    (is (= {:test1 nil :test2 nil}
+           (prepare-insertion-params {} '(:test1 :test2)))
+        "Empty params; list")
+    (is (= {:test1 nil :test2 nil :test3 6}
+           (prepare-insertion-params {:test3 6} #{:test1 :test2}))
+        "Unlisted param; set")
+    (is (= {:test1 "foo" :test2 nil}
+           (prepare-insertion-params {:test1 "foo"} '(:test1 :test2)))
+        "Listed param; list")
+    (is (= {:test1 "foo" :test2 6}
+           (prepare-insertion-params {:test1 "foo" :test2 6} '(:test1 :test2)))
+        "Listed params; list")))