blob: ca8d483e1b941d92a4589fc3b5de33a4541bbf45 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
|
(ns dompa.nodes-test
#?(:clj (:require
[clojure.test :refer [deftest is testing]]
[clojure.zip :as zip]
[dompa.html :as html]
[dompa.nodes :as nodes :refer [$ defhtml]]))
#?(:cljs (:require [cljs.test :refer-macros [deftest testing is]]
[clojure.zip :as zip]
[dompa.nodes :as nodes :refer [$] :refer-macros [defhtml]]
[dompa.html :as html])))
(defhtml hello [who]
($ :div
($ "hello " who)))
(deftest defhtml-test
(is (= "<div>hello world</div>"
(hello "world"))))
(defhtml list-items [items]
($ :ul
(->> items
(map (fn [item]
($ :li ($ item))))
(into []))))
(deftest list-items-test
(is (= "<ul><li>one</li><li>two</li><li>three</li></ul>"
(list-items ["one" "two" "three"]))))
(deftest $-test
(testing "a simple node"
(is (= {:node/name :div
:node/children [{:node/name :dompa/text
:node/value "hello world"}]}
($ :div ($ "hello world")))))
(testing "a fragment node"
(is (= {:node/name :<>
:node/children [{:node/name :span
:node/children [{:node/name :dompa/text
:node/value "hello"}]}
{:node/name :span
:node/children [{:node/name :dompa/text
:node/value "world"}]}]}
($ :<>
($ :span
($ "hello"))
($ :span
($ "world")))))))
(deftest traverse-test
(let [traverser-fn (fn [node]
(if (= :dompa/text (:node/name node))
(assoc node :node/value "world hello")
node))]
(is (= "<div>world hello</div>"
(-> (html/->nodes "<div>hello world</div>")
(nodes/traverse traverser-fn)
nodes/->html)))))
(deftest zip-test
(let [nodes (html/->nodes "<div><p>hello</p><p>world</p></div>")
zipper (nodes/zip (first nodes))]
(is (= :div
(:node/name (zip/node zipper))))
(is (= "hello"
(-> zipper
zip/down
zip/down
zip/node
:node/value)))))
|