fortify-schema
Version:
A modern TypeScript validation library designed around familiar interface syntax and powerful conditional validation. Experience schema validation that feels natural to TypeScript developers while unlocking advanced runtime validation capabilities.
55 lines (42 loc) โข 1.87 kB
text/typescript
/**
* Test parser support for special syntax
*/
import { Interface } from "../schema/mode/interfaces/Interface";
// Test 1: Special character property access
console.log("๐งช Test 1: Special character property access");
const SpecialCharsSchema = Interface({
config: "any?",
hasAdminOverride: 'when config["admin-override"].$exists() *? boolean : =false',
});
const result1 = SpecialCharsSchema.safeParse({
config: { "admin-override": true },
hasAdminOverride: true, // Should pass since condition is true and expects boolean
});
console.log("Result 1:", result1.success ? "โ
SUCCESS" : `โ ${result1.errors.join(", ")}`);
// Test 2: Array property access
console.log("\n๐งช Test 2: Array property access");
const ArrayAccessSchema = Interface({
data: "any?",
hasFirstItem: 'when data.items[0].$exists() *? boolean : =false',
});
const result2 = ArrayAccessSchema.safeParse({
data: { items: [{ id: 1 }] },
hasFirstItem: true, // Should pass since condition is true and expects boolean
});
console.log("Result 2:", result2.success ? "โ
SUCCESS" : `โ ${result2.errors.join(", ")}`);
// Test 3: Debug parser directly
console.log("\n๐งช Test 3: Direct parser test");
try {
const { ConditionalParser } = await import("../schema/mode/interfaces/conditional/parser/ConditionalParser");
const parser = new ConditionalParser();
// Test bracket notation
console.log("Testing bracket notation...");
const ast1 = parser.parse('when config["admin-override"].$exists() *? boolean : =false');
console.log("โ
Bracket notation parsed successfully");
// Test array access
console.log("Testing array access...");
const ast2 = parser.parse('when data.items[0].$exists() *? boolean : =false');
console.log("โ
Array access parsed successfully");
} catch (error) {
console.log("โ Parser error:", error.message);
}