massively improves the jspg validator by removing mathmatical functions like allOf, anyOf, ref, etc to effectively use discriminators and OOP with types to determine valid pathing an nno intersections, unions, or guesswork; added cases to replace the former conditionals

This commit is contained in:
2026-04-08 13:08:24 -04:00
parent e4286ac6a9
commit 7c8df22709
30 changed files with 2526 additions and 4816 deletions

183
fixtures/cases.json Normal file
View File

@ -0,0 +1,183 @@
[
{
"description": "Multi-Paradigm Declarative Cases",
"database": {
"schemas": [
{
"$id": "parallel_rules",
"type": "object",
"properties": {
"status": { "type": "string" },
"kind": { "type": "string" }
},
"cases": [
{
"when": { "properties": { "status": {"const": "unverified"} }, "required": ["status"] },
"then": {
"properties": {
"amount_1": {"type": "number"},
"amount_2": {"type": "number"}
},
"required": ["amount_1", "amount_2"]
}
},
{
"when": { "properties": { "kind": {"const": "credit"} }, "required": ["kind"] },
"then": {
"properties": {
"cvv": {"type": "number"}
},
"required": ["cvv"]
}
}
]
},
{
"$id": "mutually_exclusive",
"type": "object",
"properties": {
"type": { "type": "string" }
},
"cases": [
{
"when": { "properties": { "type": {"const": "A"} }, "required": ["type"] },
"then": {
"properties": { "field_a": {"type": "number"} },
"required": ["field_a"]
}
},
{
"when": { "properties": { "type": {"const": "B"} }, "required": ["type"] },
"then": {
"properties": { "field_b": {"type": "number"} },
"required": ["field_b"]
},
"else": {
"properties": { "fallback_b": {"type": "number"} },
"required": ["fallback_b"]
}
}
]
},
{
"$id": "nested_fallbacks",
"type": "object",
"properties": {
"tier": { "type": "string" }
},
"cases": [
{
"when": { "properties": { "tier": {"const": "1"} }, "required": ["tier"] },
"then": {
"properties": { "basic": {"type": "number"} },
"required": ["basic"]
},
"else": {
"cases": [
{
"when": { "properties": { "tier": {"const": "2"} }, "required": ["tier"] },
"then": {
"properties": { "standard": {"type": "number"} },
"required": ["standard"]
},
"else": {
"properties": { "premium": {"type": "number"} },
"required": ["premium"]
}
}
]
}
}
]
},
{
"$id": "missing_when",
"type": "object",
"cases": [
{
"else": {
"properties": { "unconditional": {"type": "number"} },
"required": ["unconditional"]
}
}
]
}
]
},
"tests": [
{
"description": "Fires only the first rule successfully",
"data": { "status": "unverified", "amount_1": 1, "amount_2": 2 },
"schema_id": "parallel_rules",
"action": "validate",
"expect": { "success": true }
},
{
"description": "Fires both independent parallel rules flawlessly",
"data": { "status": "unverified", "kind": "credit", "amount_1": 1, "amount_2": 2, "cvv": 123 },
"schema_id": "parallel_rules",
"action": "validate",
"expect": { "success": true }
},
{
"description": "Catches errors triggered concurrently by multiple independent blocked rules",
"data": { "status": "unverified", "kind": "credit" },
"schema_id": "parallel_rules",
"action": "validate",
"expect": {
"success": false,
"errors": [
{ "code": "REQUIRED_FIELD_MISSING", "details": { "path": "amount_1" } },
{ "code": "REQUIRED_FIELD_MISSING", "details": { "path": "amount_2" } },
{ "code": "REQUIRED_FIELD_MISSING", "details": { "path": "cvv" } }
]
}
},
{
"description": "STRICT_PROPERTY_VIOLATION throws if an un-triggered then property is submitted",
"data": { "status": "verified", "cvv": 123 },
"schema_id": "parallel_rules",
"action": "validate",
"expect": {
"success": false,
"errors": [
{ "code": "STRICT_PROPERTY_VIOLATION", "details": { "path": "cvv" } }
]
}
},
{
"description": "Successfully routes mutually exclusive properties seamlessly",
"data": { "type": "A", "field_a": 1, "fallback_b": 2 },
"schema_id": "mutually_exclusive",
"action": "validate",
"expect": { "success": true }
},
{
"description": "Nested fallbacks execute seamlessly",
"data": { "tier": "3", "premium": 1 },
"schema_id": "nested_fallbacks",
"action": "validate",
"expect": { "success": true }
},
{
"description": "A case without a when executes its else indiscriminately",
"data": { "unconditional": 1 },
"schema_id": "missing_when",
"action": "validate",
"expect": { "success": true }
},
{
"description": "A case without a when throws if else unconditionally requires field",
"data": { },
"schema_id": "missing_when",
"action": "validate",
"expect": {
"success": false,
"errors": [
{ "code": "REQUIRED_FIELD_MISSING", "details": { "path": "unconditional" } }
]
}
}
]
}
]