Files
Quill/Test/shadow.test.js
2024-03-26 21:32:50 -04:00

209 lines
4.9 KiB
JavaScript

window.testSuites.push( class testShadow {
ObjectAsStateField() {
class File extends Shadow {
$form
constructor(...params) {
super(...params)
}
}
window.register(File, "file-el")
let form = {data: "asdf"}
const el = window.File(form)
if(!(el.form === form)) {
return `State field does not match object passed in!`
}
}
MultiParams() {
class File2 extends Shadow {
$form
$tag
constructor(...params) {
super(...params)
}
}
window.register(File2, "file2-el")
let form = {data: "asdf"}
const el = window.File2(form, "tag")
if(!(el.form === form)) {
return `Form field does not match object passed in!`
}
if(!(el.tag === "tag")) {
return `Tag field does not match object passed in!`
}
}
onlyGetFieldsNotUsing$() {
class File5 extends Shadow {
$form
$tag
constructor(...params) {
super(...params)
}
}
window.register(File5, "file5-el")
let form = {data: "asdf"}
const el = window.File5(form, "tag")
if(el.$tag !== undefined) {
return "Got field the wrong way!"
}
}
ChangeAttrChangesField() {
class File3 extends Shadow {
$form
$tag
constructor(...params) {
super(...params)
}
}
window.register(File3, "file3-el")
let form = {data: "asdf"}
const el = window.File3(form, "tag")
el.setAttribute("tag", "asdf")
if(el.tag !== "asdf") {
return "Field did not change!"
}
}
ChangeFieldChangesAttr() {
class File4 extends Shadow {
$form
$tag
constructor(...params) {
super(...params)
}
}
window.register(File4, "file4-el")
let form = {data: "asdf"}
const el = window.File4(form, "tag")
el.tag = "asdf"
if(el.getAttribute("tag") !== "asdf") {
return "Attribute did not change!"
}
}
ConstructorCanUseState() {
class File7 extends Shadow {
$form = {data: "asdf"}
extra
constructor() {
super()
this.extra = this.form
}
}
window.register(File7, "file7-el")
const el = window.File7()
if(el.extra === undefined) {
return `Constructor could not access state`
}
}
DefaultStateFieldWorks() {
class File6 extends Shadow {
$form = {data: "asdf"}
}
window.register(File6, "file6-el")
const el = window.File6()
if(el.form === undefined) {
return `Default value did not work`
}
}
// this needs to be fixed
// CannotAddUndefinedProperties() {
// register(class File extends Shadow {
// render = () => {
// p("boi")
// }
// constructor() {
// super()
// this.hey = "unallowed"
// }
// }, randomName("file"))
// try {
// const file = File()
// return "Did not throw error!"
// } catch(e) {
// if(!e.message.includes("Extensible")) {
// throw e
// }
// }
// }
CannotAddUndefinedPropertiesAfterConstructor() {
register(class File extends Shadow {
render = () => {
p("boi")
}
constructor() {
super()
}
}, randomName("file"))
try {
const file = File()
file.hey = "unallowed"
return "Did not throw error!"
} catch(e) {
if(!e.message.includes("extensible")) {
throw e
}
}
}
NonStateFieldsGetSet() {
register(class File extends Shadow {
nonStateField
constructor() {
super()
}
}, randomName("file"))
const file = File("asd")
if(!(file.nonStateField === "asd")) {
return "Did not set field!"
}
}
AllFieldsMustBeSet() {
register(class File extends Shadow {
$field1
$field2
constructor() {
super()
}
}, randomName("file"))
try {
const file = File("asd")
console.log(file.field1, file.field2)
return "No error thrown"
} catch(e) {
if(!e.message.includes("field2\" must be initialized")) {
throw e
}
}
}
})