Files
jspg/fixtures/contains.json
Alex Groleau e026e82f65 test(jspg): rename items fixture to array and resolve unused HashMap warning
- Rename fixtures/items.json to fixtures/array.json to better reflect array testing constraints.
- Update reference paths in src/tests/fixtures.rs and across other fixture JSON files.
- Remove unused HashMap import in src/validator/rules/dict.rs to resolve the compiler warning.
2026-06-23 20:17:03 -04:00

617 lines
13 KiB
JSON

[
{
"description": "contains keyword validation",
"database": {
"types": [
{
"name": "contains_0_0",
"schemas": {
"contains_0_0": {
"contains": {
"minimum": 5
},
"items": true
}
}
}
]
},
"tests": [
{
"description": "array with item matching schema (5) is valid (items: true)",
"data": [
3,
4,
5
],
"schema_id": "contains_0_0",
"action": "validate",
"expect": {
"success": true
}
},
{
"description": "array with item matching schema (6) is valid (items: true)",
"data": [
3,
4,
6
],
"schema_id": "contains_0_0",
"action": "validate",
"expect": {
"success": true
}
},
{
"description": "array with two items matching schema (5, 6) is valid (items: true)",
"data": [
3,
4,
5,
6
],
"schema_id": "contains_0_0",
"action": "validate",
"expect": {
"success": true
}
},
{
"description": "array without items matching schema is invalid",
"data": [
2,
3,
4
],
"schema_id": "contains_0_0",
"action": "validate",
"expect": {
"success": false,
"errors": [
{
"code": "CONTAINS_VIOLATED",
"values": {
"limit": "1",
"count": "0"
},
"details": {
"path": "",
"schema": "contains_0_0"
}
}
]
}
},
{
"description": "empty array is invalid",
"data": [],
"schema_id": "contains_0_0",
"action": "validate",
"expect": {
"success": false,
"errors": [
{
"code": "CONTAINS_VIOLATED",
"values": {
"count": "0",
"limit": "1"
},
"details": {
"path": "",
"schema": "contains_0_0"
}
}
]
}
},
{
"description": "not array is valid",
"data": {},
"schema_id": "contains_0_0",
"action": "validate",
"expect": {
"success": true
}
}
]
},
{
"description": "contains keyword with const keyword",
"database": {
"types": [
{
"name": "contains_1_0",
"schemas": {
"contains_1_0": {
"contains": {
"const": 5
},
"items": true
}
}
}
]
},
"tests": [
{
"description": "array with item 5 is valid (items: true)",
"data": [
3,
4,
5
],
"schema_id": "contains_1_0",
"action": "validate",
"expect": {
"success": true
}
},
{
"description": "array with two items 5 is valid (items: true)",
"data": [
3,
4,
5,
5
],
"schema_id": "contains_1_0",
"action": "validate",
"expect": {
"success": true
}
},
{
"description": "array without item 5 is invalid",
"data": [
1,
2,
3,
4
],
"schema_id": "contains_1_0",
"action": "validate",
"expect": {
"success": false,
"errors": [
{
"code": "CONTAINS_VIOLATED",
"values": {
"limit": "1",
"count": "0"
},
"details": {
"path": "",
"schema": "contains_1_0"
}
}
]
}
}
]
},
{
"description": "contains keyword with boolean schema true",
"database": {
"types": [
{
"name": "contains_2_0",
"schemas": {
"contains_2_0": {
"contains": true
}
}
}
]
},
"tests": [
{
"description": "any non-empty array is valid",
"data": [
"foo"
],
"schema_id": "contains_2_0",
"action": "validate",
"expect": {
"success": true
}
},
{
"description": "empty array is invalid",
"data": [],
"schema_id": "contains_2_0",
"action": "validate",
"expect": {
"success": false,
"errors": [
{
"code": "CONTAINS_VIOLATED",
"values": {
"count": "0",
"limit": "1"
},
"details": {
"path": "",
"schema": "contains_2_0"
}
}
]
}
}
]
},
{
"description": "contains keyword with boolean schema false",
"database": {
"types": [
{
"name": "contains_3_0",
"schemas": {
"contains_3_0": {
"contains": false
}
}
}
]
},
"tests": [
{
"description": "any non-empty array is invalid",
"data": [
"foo"
],
"schema_id": "contains_3_0",
"action": "validate",
"expect": {
"success": false,
"errors": [
{
"code": "CONTAINS_VIOLATED",
"values": {
"count": "0",
"limit": "1"
},
"details": {
"path": "",
"schema": "contains_3_0"
}
}
]
}
},
{
"description": "empty array is invalid",
"data": [],
"schema_id": "contains_3_0",
"action": "validate",
"expect": {
"success": false,
"errors": [
{
"code": "CONTAINS_VIOLATED",
"values": {
"count": "0",
"limit": "1"
},
"details": {
"path": "",
"schema": "contains_3_0"
}
}
]
}
},
{
"description": "non-arrays are valid",
"data": "contains does not apply to strings",
"schema_id": "contains_3_0",
"action": "validate",
"expect": {
"success": true
}
}
]
},
{
"description": "items + contains",
"database": {
"types": [
{
"name": "contains_4_0",
"schemas": {
"contains_4_0": {
"items": {
"multipleOf": 2
},
"contains": {
"multipleOf": 3
}
}
}
}
]
},
"tests": [
{
"description": "matches items, does not match contains",
"data": [
2,
4,
8
],
"schema_id": "contains_4_0",
"action": "validate",
"expect": {
"success": false,
"errors": [
{
"code": "CONTAINS_VIOLATED",
"values": {
"limit": "1",
"count": "0"
},
"details": {
"path": "",
"schema": "contains_4_0"
}
}
]
}
},
{
"description": "does not match items, matches contains",
"data": [
3,
6,
9
],
"schema_id": "contains_4_0",
"action": "validate",
"expect": {
"success": false,
"errors": [
{
"code": "MULTIPLE_OF_VIOLATED",
"values": {
"multiple_of": "2",
"value": "3"
},
"details": {
"path": "0",
"schema": "contains_4_0"
}
},
{
"code": "MULTIPLE_OF_VIOLATED",
"values": {
"value": "9",
"multiple_of": "2"
},
"details": {
"path": "2",
"schema": "contains_4_0"
}
}
]
}
},
{
"description": "matches both items and contains",
"data": [
6,
12
],
"schema_id": "contains_4_0",
"action": "validate",
"expect": {
"success": true
}
},
{
"description": "matches neither items nor contains",
"data": [
1,
5
],
"schema_id": "contains_4_0",
"action": "validate",
"expect": {
"success": false,
"errors": [
{
"code": "CONTAINS_VIOLATED",
"values": {
"count": "0",
"limit": "1"
},
"details": {
"path": "",
"schema": "contains_4_0"
}
},
{
"code": "MULTIPLE_OF_VIOLATED",
"values": {
"multiple_of": "2",
"value": "1"
},
"details": {
"path": "0",
"schema": "contains_4_0"
}
},
{
"code": "MULTIPLE_OF_VIOLATED",
"values": {
"multiple_of": "2",
"value": "5"
},
"details": {
"path": "1",
"schema": "contains_4_0"
}
}
]
}
}
]
},
{
"description": "contains with false if subschema",
"database": {
"types": [
{
"name": "contains_5_0",
"schemas": {
"contains_5_0": {
"contains": {
"if": false,
"else": true
}
}
}
}
]
},
"tests": [
{
"description": "any non-empty array is valid",
"data": [
"foo"
],
"schema_id": "contains_5_0",
"action": "validate",
"expect": {
"success": true
}
},
{
"description": "empty array is invalid",
"data": [],
"schema_id": "contains_5_0",
"action": "validate",
"expect": {
"success": false,
"errors": [
{
"code": "CONTAINS_VIOLATED",
"values": {
"count": "0",
"limit": "1"
},
"details": {
"path": "",
"schema": "contains_5_0"
}
}
]
}
}
]
},
{
"description": "contains with null instance elements",
"database": {
"types": [
{
"name": "contains_6_0",
"schemas": {
"contains_6_0": {
"contains": {
"type": "null"
}
}
}
}
]
},
"tests": [
{
"description": "allows null items",
"data": [
null
],
"schema_id": "contains_6_0",
"action": "validate",
"expect": {
"success": true
}
}
]
},
{
"description": "extensible: true allows non-matching items in contains",
"database": {
"types": [
{
"name": "contains_7_0",
"schemas": {
"contains_7_0": {
"contains": {
"const": 1
},
"extensible": true
}
}
}
]
},
"tests": [
{
"description": "extra items acceptable",
"data": [
1,
2
],
"schema_id": "contains_7_0",
"action": "validate",
"expect": {
"success": true
}
}
]
},
{
"description": "strict by default: non-matching items in contains are invalid",
"database": {
"types": [
{
"name": "contains_8_0",
"schemas": {
"contains_8_0": {
"contains": {
"const": 1
}
}
}
}
]
},
"tests": [
{
"description": "extra items do not cause failure",
"data": [
1,
2
],
"schema_id": "contains_8_0",
"action": "validate",
"expect": {
"success": true
}
},
{
"description": "only matching items is valid",
"data": [
1,
1
],
"schema_id": "contains_8_0",
"action": "validate",
"expect": {
"success": true
}
}
]
}
]