Files
Quill/Test/init.test.js
2024-04-02 17:19:28 -05:00

315 lines
7.4 KiB
JavaScript

window.testSuites.push( class testInit {
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
}
}
}
CannotAddUndefinedPropertiesAfterDefaultConstructor() {
register(class File extends Shadow {
render = () => {
p("boi")
}
}, 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
}
}
}
ErrorIfNotObservedObject() {
window.register(class ChildSpace extends Shadow {
$$form
$name
render = () => {
}
constructor() {
super()
this.name = this.form.path.split("/").pop()
}
}, randomName("space-"))
try {
let space = ChildSpace({path: "/asd"})
return "no error thrown!"
} catch(e) {
if(e.message.includes("Observed Object")) {
} else {
throw e
}
}
}
FieldsInCorrectOrder() {
window.register(class ChildSpace extends Shadow {
$$form
$name
render = () => {
}
constructor() {
super()
this.name = this.form.path.split("/").pop()
}
}, randomName("space-"))
class Form extends ObservedObject {
$path
}
try {
let space = ChildSpace(Form.create({path: "/asd"}))
} catch(e) {
if(e.message.includes("Cannot read properties of undefined (reading 'path')")) {
return "Form did not get initialized!"
} else {
throw e
}
}
}
UnneededArgumentThrowsError() {
register(class SidebarFile extends Shadow {
}, randomName("sb-file"))
try {
SidebarFile({path: "/asd"})
return "Did not throw error!"
} catch(e) {
if(!e.message.includes("passed in where")) {
throw e
}
}
}
ConflictingPropertyNameThrowsError() {
register(class SidebarFile extends Shadow {
$width = 0
}, randomName("sb-file"))
try {
SidebarFile()
return "Did not throw error!"
} catch(e) {
if(!e.message.includes(`Property name "width" is not valid`)) {
throw e
}
}
}
})