UNPKG

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.

68 lines (56 loc) โ€ข 2.44 kB
// ==================================================================== // TEST ORIGINAL FAILING CASE // ==================================================================== import { Interface } from "../../schema/mode/interfaces/Interface"; // bugs in logics and extension const ComplexDefaultsSchema = Interface({ config: "any?", // Object defaults // @fortify-ignore defaultSettings: 'when config.settings.$exists() *? any : ={"theme":"dark","lang":"en"}', // Array defaults // @fortify-ignore defaultTags: 'when config.tags.$exists() *? string[] : =["default","user"]', // Nested object defaults defaultProfile: 'when config.profile.$exists() *? any : ={"name":"Anonymous","avatar":null}', // Complex conditional defaults advancedConfig: 'when config.advanced.$exists() *? any : ={"features":[],"permissions":{}}', }); const config = { // settings: "yes", //not exist // advancedConfig: "yes", //not exist defaultProfile: "yes", defaultTags: "yes", }; console.log("๐Ÿ” Starting complex default tests..."); // Test 1: Wrong values (should fail with correct error messages) console.log("๐Ÿงช Test 1: Wrong values (should fail)"); const result1 = ComplexDefaultsSchema.safeParse({ config, defaultSettings: "", // WRONG: condition false, expects ={"theme":"dark","lang":"en"} defaultTags: true, // WRONG: condition false, expects =["default","user"] defaultProfile: true, // WRONG: condition false, expects ={"name":"Anonymous","avatar":null} advancedConfig: "", // WRONG: condition false, expects ={"features":[],"permissions":{}} }); if (result1.success) { console.log("โœ… Unexpected success:", result1.data); } else { console.log("โŒ Expected errors:", result1.errors); } // Test 2: Correct default values (should pass) console.log("\n๐Ÿงช Test 2: Correct default values (should pass)"); const result2 = ComplexDefaultsSchema.safeParse({ config, defaultSettings: { theme: "dark", lang: "en" }, // CORRECT: matches default defaultTags: ["default", "user"], // CORRECT: matches default defaultProfile: { name: "Anonymous", avatar: null }, // CORRECT: matches default advancedConfig: { features: [], permissions: {} }, // CORRECT: matches default }); if (result2.success) { console.log("โœ… Expected success:", result2.data); } else { console.log("โŒ Unexpected errors:", result2.errors); }