X-Git-Url: https://git.ladys.computer/Lemon/blobdiff_plain/3cfb1515952fbda9622c2a5d4d7b9925db1a03e3..3f0fb84f4cb391464680ba600592df3b811e44a8:/mod.test.js diff --git a/mod.test.js b/mod.test.js index 8af8f73..44e2b9e 100644 --- a/mod.test.js +++ b/mod.test.js @@ -7,7 +7,11 @@ // License, v. 2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at . -import { assertStrictEquals, DOMImplementation } from "./dev-deps.js"; +import { + assertEquals, + assertStrictEquals, + DOMImplementation, +} from "./dev-deps.js"; import Lemon from "./mod.js"; Deno.test({ @@ -117,6 +121,71 @@ Deno.test({ }, }); +Deno.test({ + name: "Lemon tags can assign attributes with property chaining.", + fn: () => { + const elt = ( + Lemon.xxx + .class("abc") + .class("def") + .dataWet("💦") + .dataFalse("failure") + .dataTrue() + .hidden + .hidden + .dataName("data-name") + .dataName("data-name") + .dataFalse(false) + )``; + assertStrictEquals(elt.getAttribute("class"), "abc def"); + assertStrictEquals(elt.getAttribute("data-wet"), "💦"); + assertStrictEquals(elt.getAttribute("data-true"), ""); + assertStrictEquals(elt.getAttribute("data-hidden"), ""); + assertStrictEquals(elt.getAttribute("data-name"), "data-name"); + assertStrictEquals(elt.hasAttribute("data-false"), false); + }, +}); + +Deno.test({ + name: "Lemon tags expose their internal state.", + fn: () => { + const eltTag = ( + Lemon("xxx:yyy", "example:xxx") + .class("abc") + .class("def") + .dataWet("💦") + .dataFalse("failure") + .dataTrue() + .hidden + .hidden + .dataName("data-name") + .dataName("data-name") + .dataFalse(false) + .dataExtra + ); + assertEquals(eltTag.attributes, { + class: "abc def", + "data-wet": "💦", + "data-true": "", + hidden: "", + "data-name": "data-name", + "data-extra": "", + }); + assertStrictEquals(eltTag.localName, "yyy"); + assertStrictEquals(eltTag.namespaceURI, "example:xxx"); + assertStrictEquals(eltTag.qualifiedName, "xxx:yyy"); + assertStrictEquals(eltTag.ownerDocument, document); + assertStrictEquals( + eltTag.name, + '