summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/dompa/nodes.cljc8
-rw-r--r--test/dompa/nodes_test.cljc14
2 files changed, 22 insertions, 0 deletions
diff --git a/src/dompa/nodes.cljc b/src/dompa/nodes.cljc
index d2f8e4b..eef65d3 100644
--- a/src/dompa/nodes.cljc
+++ b/src/dompa/nodes.cljc
@@ -142,11 +142,19 @@
(and (sequential? coll)
(> (count coll) 1)))
+(defn- empty-seq?
+ [coll]
+ (and (sequential? coll)
+ (empty? coll)))
+
(defn- nodes-from-opt
[opt]
(cond (map? opt)
opt
+ (empty-seq? opt)
+ nil
+
(list-of-many? opt)
{:node/name :<>
:node/children opt}
diff --git a/test/dompa/nodes_test.cljc b/test/dompa/nodes_test.cljc
index 53e502a..b1c7b0f 100644
--- a/test/dompa/nodes_test.cljc
+++ b/test/dompa/nodes_test.cljc
@@ -31,6 +31,20 @@
(is (= "<ul><li>one</li><li>two</li><li>three</li></ul>"
(list-items ["one" "two" "three"]))))
+(defhtml empty-list-items [items]
+ ($ :ul
+ (map (fn [item]
+ ($ :li item))
+ items)))
+
+(deftest empty-list-items-test
+ (testing "map over empty vector should not produce LazySeq string"
+ (is (= "<ul></ul>"
+ (empty-list-items []))))
+ (testing "map over non-empty vector should work"
+ (is (= "<ul><li>one</li><li>two</li></ul>"
+ (empty-list-items ["one" "two"])))))
+
(deftest $-test
(testing "a simple node"
(is (= {:node/name :div