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,
+ ' /* pending data-extra */',
+ );
+ assertStrictEquals(
+ eltTag().name,
+ '',
+ );
+ },
+});
+
Deno.test({
name: "Lemon tags support all kinds of expression.",
fn: () => {