HS: as HTML (NodeList elements via outerHTML) + as Fragment (+4 tests)
hs-coerce HTML list case: use outerHTML for element items, not str. hs-coerce Fragment case: actually build a DocumentFragment — element items are appended directly; strings are parsed via a temp div. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -3759,7 +3759,25 @@
|
||||
))
|
||||
)
|
||||
(deftest "converts a NodeList into HTML"
|
||||
(error "SKIP (untranslated): converts a NodeList into HTML"))
|
||||
(let ((_frag (host-call (dom-document) "createDocumentFragment")))
|
||||
(let ((_d (dom-create-element "div")))
|
||||
(do
|
||||
(host-set! _d "id" "first")
|
||||
(host-set! _d "innerText" "With Text")
|
||||
(dom-append _frag _d)
|
||||
(let ((_span (dom-create-element "span")))
|
||||
(do
|
||||
(host-set! _span "id" "second")
|
||||
(dom-append _frag _span)
|
||||
(let ((_i (dom-create-element "i")))
|
||||
(do
|
||||
(host-set! _i "id" "third")
|
||||
(dom-append _frag _i)
|
||||
(let ((_nodeList (host-get _frag "childNodes")))
|
||||
(assert=
|
||||
(eval-hs-locals "nodeList as HTML" (list (list (quote nodeList) _nodeList)))
|
||||
"<div id=\"first\">With Text</div><span id=\"second\"></span><i id=\"third\"></i>")))))))))
|
||||
)
|
||||
(deftest "converts a complete form into Values"
|
||||
(let ((_node (dom-create-element "form")))
|
||||
(dom-set-inner-html _node "<div><span><b> Catches elements nested deeply within the DOM tree <input name=\"firstName\" value=\"John\"><br> <input name=\"lastName\" value=\"Connor\"><br> <input name=\"phone\" value=\"555-1212\"> </b></span></div> Works with Textareas <textarea name=\"aboutMe\">It began on a warm summer day in 1969...</textarea> Works with Single Select Boxes <select name=\"animal\"> <option value=\"dog\" selected>Doggo</option> <option value=\"cat\">Kitteh</option> <option value=\"raccoon\">Trash Panda</option> <option value=\"possum\">Sleepy Boi</option> </select> Works with Multi-Select Boxes <select name=\"spiritAnimal\" multiple> <option value=\"dog\" selected>Doggo</option> <option value=\"cat\">Kitteh</option> <option value=\"raccoon\" selected>Trash Panda</option> <option value=\"possum\">Sleepy Boi</option> </select> Works with Radio Buttons <input type=\"radio\" name=\"coolOrNaw\" value=\"Cool\" checked> <input type=\"radio\" name=\"coolOrNaw\" value=\"Naw Bruh\"> Works with Checkboxes <input type=\"checkbox\" name=\"gender\" value=\"Male\" checked> <input type=\"checkbox\" name=\"gender\" value=\"Female\" checked> <input type=\"checkbox\" name=\"gender\" value=\"Other\" checked>")
|
||||
@@ -3858,7 +3876,14 @@
|
||||
(assert= (eval-hs "[1,2,2,3,3] as Unique") (list 1 2 3))
|
||||
)
|
||||
(deftest "converts arrays into fragments"
|
||||
(error "SKIP (untranslated): converts arrays into fragments"))
|
||||
(let ((_p (dom-create-element "p")))
|
||||
(let ((_arr (list _p "<p></p>")))
|
||||
(let ((_r (eval-hs-locals "value as Fragment" (list (list (quote value) _arr)))))
|
||||
(do
|
||||
(assert= (len (host-get _r "children")) 2)
|
||||
(assert= (host-get (nth (host-get _r "children") 0) "tagName") "P")
|
||||
(assert= (host-get (nth (host-get _r "children") 1) "tagName") "P")))))
|
||||
)
|
||||
(deftest "converts checkboxes into a Value correctly"
|
||||
(let ((_node (dom-create-element "form")))
|
||||
(dom-set-inner-html _node "<div> <input type=\"checkbox\" name=\"gender\" value=\"Male\" checked> <input type=\"checkbox\" name=\"gender\" value=\"Female\" checked> <input type=\"checkbox\" name=\"gender\" value=\"Other\" checked> </div>")
|
||||
@@ -3869,7 +3894,12 @@
|
||||
))
|
||||
)
|
||||
(deftest "converts elements into fragments"
|
||||
(error "SKIP (untranslated): converts elements into fragments"))
|
||||
(let ((_p (dom-create-element "p")))
|
||||
(let ((_r (eval-hs-locals "value as Fragment" (list (list (quote value) _p)))))
|
||||
(do
|
||||
(assert= (len (host-get _r "children")) 1)
|
||||
(assert= (host-get (first (host-get _r "children")) "tagName") "P"))))
|
||||
)
|
||||
(deftest "converts multiple selects into a Value correctly"
|
||||
(let ((_node (dom-create-element "form")))
|
||||
(dom-set-inner-html _node "<select name=\"animal\" multiple> <option value=\"dog\" selected>Doggo</option> <option value=\"cat\">Kitteh</option> <option value=\"raccoon\" selected>Trash Panda</option> <option value=\"possum\">Sleepy Boi</option> </select>")
|
||||
@@ -3922,7 +3952,11 @@
|
||||
(assert= (host-get (eval-hs "'{\"foo\":\"bar\"}' as Object") "foo") "bar")
|
||||
)
|
||||
(deftest "converts strings into fragments"
|
||||
(error "SKIP (untranslated): converts strings into fragments"))
|
||||
(let ((_r (eval-hs-locals "value as Fragment" (list (list (quote value) "<p></p>")))))
|
||||
(do
|
||||
(assert= (len (host-get _r "children")) 1)
|
||||
(assert= (host-get (first (host-get _r "children")) "tagName") "P")))
|
||||
)
|
||||
(deftest "converts value as Boolean"
|
||||
(assert= (eval-hs "1 as Boolean") true)
|
||||
(assert= (eval-hs "0 as Boolean") false)
|
||||
|
||||
Reference in New Issue
Block a user