Test OO params are correct type
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
window.testSuites.push( class testShadow {
|
window.testSuites.push( class testInit {
|
||||||
|
|
||||||
ObjectAsStateField() {
|
ObjectAsStateField() {
|
||||||
class File extends Shadow {
|
class File extends Shadow {
|
||||||
@@ -207,6 +207,32 @@ window.testSuites.push( class testShadow {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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() {
|
FieldsInCorrectOrder() {
|
||||||
window.register(class ChildSpace extends Shadow {
|
window.register(class ChildSpace extends Shadow {
|
||||||
$$form
|
$$form
|
||||||
@@ -221,9 +247,13 @@ window.testSuites.push( class testShadow {
|
|||||||
this.name = this.form.path.split("/").pop()
|
this.name = this.form.path.split("/").pop()
|
||||||
}
|
}
|
||||||
}, randomName("space-"))
|
}, randomName("space-"))
|
||||||
|
|
||||||
|
class Form extends ObservedObject {
|
||||||
|
$path
|
||||||
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
let space = ChildSpace({path: "/asd"})
|
let space = ChildSpace(Form.decode({path: "/asd"}))
|
||||||
} catch(e) {
|
} catch(e) {
|
||||||
if(e.message.includes("Cannot read properties of undefined (reading 'path')")) {
|
if(e.message.includes("Cannot read properties of undefined (reading 'path')")) {
|
||||||
return "Form did not get initialized!"
|
return "Form did not get initialized!"
|
||||||
@@ -2,7 +2,7 @@ console.log("Tests initializing.")
|
|||||||
window.testSuites = [];
|
window.testSuites = [];
|
||||||
|
|
||||||
await import ("./parse.test.js")
|
await import ("./parse.test.js")
|
||||||
await import ("./shadow.test.js")
|
await import ("./init.test.js")
|
||||||
await import ("./observedobject.test.js")
|
await import ("./observedobject.test.js")
|
||||||
await import ("./render.test.js")
|
await import ("./render.test.js")
|
||||||
|
|
||||||
|
|||||||
15
index.js
15
index.js
@@ -419,21 +419,22 @@ window.Registry = class Registry {
|
|||||||
makeState(elem, stateNames, params)
|
makeState(elem, stateNames, params)
|
||||||
makeObservedObjects(elem, observedObjectNames, params)
|
makeObservedObjects(elem, observedObjectNames, params)
|
||||||
|
|
||||||
let allNamesCleaned = allNames
|
|
||||||
.filter(key => typeof elem[key] !== 'function' && key !== "_observers" && key !== "_observedObjects")
|
|
||||||
.map(key => key.replace(/^(\$\$|\$)/, ''));
|
|
||||||
|
|
||||||
let i = -1
|
let i = -1
|
||||||
for (let param of params) {
|
for (let param of params) {
|
||||||
i++
|
i++
|
||||||
|
|
||||||
if(i > allNamesCleaned.length) {
|
if(i > allNames.length) {
|
||||||
console.error(`${el.prototype.constructor.name}: too many parameters for field!`)
|
console.error(`${el.prototype.constructor.name}: too many parameters for field!`)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if(elem[allNamesCleaned[i]] === undefined) {
|
let bareName = allNames[i].replace(/^(\$\$|\$)/, '');
|
||||||
elem[allNamesCleaned[i]] = param
|
|
||||||
|
if(elem[bareName] === undefined) {
|
||||||
|
if(allNames[i].startsWith("$$") && !(param instanceof ObservedObject)) {
|
||||||
|
throw new Error(`Field ${allNames[i]} must be an Observed Object!`)
|
||||||
|
}
|
||||||
|
elem[bareName] = param
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user