diff options
author | toasted-nutbread <toasted-nutbread@users.noreply.github.com> | 2021-05-22 14:01:32 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-05-22 14:01:32 -0400 |
commit | 1096bbfa33a4af53ae2bfeee459c313fddb7c20d (patch) | |
tree | da4714238cc0c7cb73a5532b78e04061467c9c7b /ext/js/data | |
parent | be23acf499bcdb530c1b8990aa3d6211323cbdb2 (diff) |
Update schema tests (#1693)
* Update helper functions
* Rename file
* Update deleteProperty
* Add some basic proxy tests
Diffstat (limited to 'ext/js/data')
-rw-r--r-- | ext/js/data/json-schema.js | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/ext/js/data/json-schema.js b/ext/js/data/json-schema.js index 7b6b9c53..6a590911 100644 --- a/ext/js/data/json-schema.js +++ b/ext/js/data/json-schema.js @@ -103,8 +103,12 @@ class JsonSchemaProxyHandler { } deleteProperty(target, property) { - const required = this._schema.required; - if (Array.isArray(required) && required.includes(property)) { + const required = ( + (typeof target === 'object' && target !== null) ? + (Array.isArray(target) || this._jsonSchemaValidator.isObjectPropertyRequired(this._schema, property)) : + true + ); + if (required) { throw new Error(`${property} cannot be deleted`); } return Reflect.deleteProperty(target, property); @@ -159,6 +163,11 @@ class JsonSchemaValidator { this._regexCache.clear(); } + isObjectPropertyRequired(schema, property) { + const {required} = schema; + return Array.isArray(required) && required.includes(property); + } + // Private _getPropertySchema(schema, property, value, path) { |