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!");
