+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,
+ '<xxx:yyy xmlns:xxx="example:xxx" class="abc def" data-wet="💦" data-true="" hidden="" data-name="data-name" data-extra=""> /* pending data-extra */',
+ );
+ assertStrictEquals(
+ eltTag().name,
+ '<xxx:yyy xmlns:xxx="example:xxx" class="abc def" data-wet="💦" data-true="" hidden="" data-name="data-name" data-extra="">',
+ );
+ },
+});
+