fortify-schema
Version:
TypeScript interface-like schema validation system that's easier to use than Zod
71 lines (56 loc) โข 2.08 kB
text/typescript
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!");