(ns dompa.nodes-test #?(:clj (:require [clojure.test :refer [deftest is testing]] [dompa.nodes :refer [$ defhtml traverse ->html]] [dompa.html :as html])) #?(:cljs (:require [cljs.test :refer-macros [deftest testing is]] [dompa.nodes :refer [$ traverse ->html] :refer-macros [defhtml]] [dompa.html :as html]))) (defhtml hello [who] ($ :div ($ "hello " who))) (deftest defhtml-test (is (= "
hello world
" (hello "world")))) (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 (= "
world hello
" (-> (html/->nodes "
hello world
") (traverse traverser-fn) ->html)))))