UNPKG

fortify-schema

Version:

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

71 lines (56 loc) โ€ข 2.08 kB
import { Interface, Make } from "../schema/mode/interfaces/Interface"; import { When } from "../schema/extensions"; console.log("๐Ÿงช Testing Conditional Validation Integration"); console.log("============================================\n"); try { // Test 1: Simple conditional validation console.log("1๏ธโƒฃ Testing Simple Conditional Field"); const SimpleSchema = Interface({ status: Make.union("active", "inactive"), description: When.field("status") .is("active") .then("string") .default("string?") }); console.log("โœ… Schema created successfully"); // Test validation const result = SimpleSchema.safeParse({ status: "active", description: "This is active" }); console.log("โœ… Validation result:", result.success); if (result.success) { console.log(" Data:", result.data); } else { console.log(" Errors:", result.errors); } } catch (error) { console.log("โŒ Error:", error instanceof Error ? error.message : String(error)); } try { // Test 2: Order schema from original test console.log("\n2๏ธโƒฃ Testing Order Schema"); const OrderSchema = Interface({ orderType: Make.union("pickup", "delivery"), address: "string?", deliveryFee: When.field("orderType") .is("delivery") .then("number(0,)") .default("number?") }); console.log("โœ… Order schema created successfully"); const orderResult = OrderSchema.safeParse({ orderType: "delivery", address: "123 Main St", deliveryFee: 5.99 }); console.log("โœ… Order validation result:", orderResult.success); if (orderResult.success) { console.log(" Order data:", orderResult.data); } else { console.log(" Order errors:", orderResult.errors); } } catch (error) { console.log("โŒ Order error:", error instanceof Error ? error.message : String(error)); } console.log("\n๐ŸŽ‰ Conditional validation integration test complete!");