//Imports here
import { ITestData } from 'framework/TestData'
import { ServiceLocation, DamageType, PaymentType, PartQuestionType } from 'safelite-playwright-core';
import { ITestCase } from '../framework/Typedefs'
import { PaymentMethod } from "framework/localTypes/Enums";
import { VehicleLookupType } from 'safelite-playwright-core';
import { getDefaultTestData, setFakerSeedFromTestName } from 'safelite-playwright-core';

// Set the seed based on test name for consistent but unique data
setFakerSeedFromTestName("InsuranceBigTruckVerified");

// Now get the test data with the seeded faker
const insuranceBigTruckVerifiedData: Partial<ITestData> = {
    ...getDefaultTestData(),  // Get default data with current seed
   
    // Key feature: Insurance flow with GEICO
    paymentMethod: PaymentMethod.Insurance,
   
    // Insurance claim flags
    isDuplicateClaim: true,
    isPolicyFound: true,
    isUseVehicleOnPolicy: true,
    isHeavyTruck: true,
   
    // Override customer details with specific name and California location
    customerDetails: {
        ...getDefaultTestData().customerDetails!,
        firstName: 'Big',
        lastName: 'Truck',
        address: {
            ...getDefaultTestData().customerDetails!.address,
            city: 'Ontario',
            state: 'California',
            postalCode: '43085'
        }
    },

   
    // Insurance claim details
    claimDetails: {
        client: 'USAA',
        policyNumber: 'Mock900040BigTruck',
        policyDeductible: 2000.00,
        policyZip: '55414', 
        damageDate: new Date(new Date().setDate(new Date().getDate() - 1)).toLocaleDateString('en-US', {month: '2-digit', day: '2-digit', year: 'numeric'}),
        damageCause: DamageType.Rock
    },
   
    // Hyundai vehicle details with VIN lookup
    vehicleDetails: {
        ...getDefaultTestData().vehicleDetails!,
        year: '2025',
        make: 'Peterbilt',
        model: '579',
        style: 'conventional cab',
        vin: '1XPBDP9X6SD693446', 
        vehicleLookupType: VehicleLookupType.Vin,
    },
   
    // No need to override vehicleDamage as it already defaults to WindshieldCrack
   
    // Override for in-shop appointment
    appointmentDetails: {
        serviceLocation: ServiceLocation.InShop,
        shopAddress: '5719 Brandt Pike, Dayton, OH 45424',
        appointmentDate: getDefaultTestData().appointmentDetails?.appointmentDate
    },
       
    // Override payment details (empty because we skip payment method page in insurance flow)
    paymentDetails: {}
}

const insuranceBigTruckVerifiedTests: ITestCase[] = [];

const tc = {
    name: `InsuranceBigTruckVerified`,
    tags: ['@E2E','@InsuranceBigTruckVerified', '@test_report', '@Insurance'],
    testData: insuranceBigTruckVerifiedData
};
insuranceBigTruckVerifiedTests.push(tc);

export default insuranceBigTruckVerifiedTests;