//Imports here
import { ITestData } from 'framework/TestData'
import { ServiceLocation, DamageType, PaymentType, PartQuestionType, Flow } 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("InsuranceNoCompProgressive");

// Now get the test data with the seeded faker
const insuranceNoCompProgressiveData: Partial<ITestData> = {
    ...getDefaultTestData(),  // Get default data with current seed
   
    // Key feature: Insurance flow with GEICO
    paymentMethod: PaymentMethod.Insurance,
   
    // Insurance claim flags
    isDuplicateClaim: true,
    flow: Flow.Managed,
    isPolicyFound: true,
    isUseVehicleOnPolicy: true,
    isHeavyTruck: false,
    isPolicyDriver: true,
    isRecalVehicle: true,
   
    // Override customer details with specific name and California location
    customerDetails: {
        ...getDefaultTestData().customerDetails!,
        firstName: 'SHERI',
        lastName: 'SCHATZ',
        address: {
            ...getDefaultTestData().customerDetails!.address,
            city: 'Slidell',
            state: 'Louisiana',
            postalCode: '70458'
        }
    },

   
    // Insurance claim details
    claimDetails: {
        client: 'Progressive',
        policyNumber: 'Mock495646B',
        policyDeductible: 1722.20,
        policyZip: '70458', 
        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: '2015',
        make: 'Acura',
        model: 'MDX',
        style: '4 door utility',
        vehicleLookupType: VehicleLookupType.Zip,
    },

    // Part questions related to recalibration
    partQuestions: [
        {
            partQuestionType: PartQuestionType.GeneralQuestion1,
            isOnPage: true,
            optionToSelect: 'Yes'
        },
    ],
   
    // Override for in-shop appointment
    appointmentDetails: {
        serviceLocation: ServiceLocation.InShop,
        shopAddress: '56705 Garrett Road, Slidell, LA 70458',
        appointmentDate: getDefaultTestData().appointmentDetails?.appointmentDate
    },
       
    // Override payment details (empty because we skip payment method page in insurance flow)
    paymentDetails: {}
}

const insuranceNoCompProgressiveTests: ITestCase[] = [];

const tc = {
    name: `InsuranceNoCompProgressive`,
    tags: ['@E2E','@InsuranceNoCompProgressive', '@test_report', '@Insurance'],
    testData: insuranceNoCompProgressiveData
};
insuranceNoCompProgressiveTests.push(tc);

export default insuranceNoCompProgressiveTests;