UNPKG

fortify-schema

Version:

TypeScript interface-like schema validation system that's easier to use than Zod

65 lines (55 loc) • 2.31 kB
import { Interface } from "../schema/mode/interfaces/Interface"; console.log("šŸ” DEBUG: Conditional Logic"); console.log("===========================\n"); // Simple test case that should FAIL const TestSchema = Interface({ role: "admin|user", permissions: "when:role=admin:string[]:string[]?" }); console.log("Testing conditional validation logic...\n"); // This should PASS (role=admin, permissions=string[]) const adminTest = TestSchema.safeParse({ role: "admin", permissions: ["read", "write"] }); console.log("1. Admin with permissions:", adminTest.success); if (!adminTest.success) { console.log(" Errors:", adminTest.errors); } // This should PASS (role=user, permissions=undefined - optional) const userNoPermissions = TestSchema.safeParse({ role: "user" // No permissions field }); console.log("2. User without permissions:", userNoPermissions.success); if (!userNoPermissions.success) { console.log(" Errors:", userNoPermissions.errors); } // This should FAIL (role=user, permissions=string[] - not allowed for user) const userWithPermissions = TestSchema.safeParse({ role: "user", permissions: ["read"] // This should fail because user role shouldn't have permissions }); console.log("3. User WITH permissions (should FAIL):", userWithPermissions.success); if (!userWithPermissions.success) { console.log(" Errors:", userWithPermissions.errors); } else { console.log(" āŒ ERROR: This should have failed but passed!"); } // This should FAIL (role=admin, permissions=undefined - admin needs permissions) const adminNoPermissions = TestSchema.safeParse({ role: "admin" // No permissions - admin should require permissions }); console.log("4. Admin without permissions (should FAIL):", adminNoPermissions.success); if (!adminNoPermissions.success) { console.log(" Errors:", adminNoPermissions.errors); } else { console.log(" āŒ ERROR: This should have failed but passed!"); } console.log("\nšŸŽÆ Expected Results:"); console.log("1. Admin with permissions: āœ… PASS"); console.log("2. User without permissions: āœ… PASS"); console.log("3. User WITH permissions: āŒ FAIL"); console.log("4. Admin without permissions: āŒ FAIL"); console.log("\nIf tests 3 and 4 are passing, the conditional logic is broken!");