//Imports here
import { ITestData } from "@business-logic/types/ITestData"
import { PaymentMethod, AppointmentType, DamageType, PartQuestionType, VehicleDamage, PaymentType } from "@business-logic/types/Enums";
import TestCase from "@business-logic/types/TestCase";
import { VehicleLookupType } from "@business-logic/types/Enums";
import { getDefaultTestData, setFakerSeedFromTestName } from "@business-logic/constants/DefaultTestData";

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

// Now get the test data with the seeded faker
const insuranceAcuityPaypalData: Partial<ITestData> = {
    ...getDefaultTestData(),  // Get default data with current seed
   
    // Key feature: Insurance flow with Acuity
    paymentMethod: PaymentMethod.Insurance,
   
    // Insurance claim flags
    isDuplicateClaim: true,
    isPolicyFound: true,
    isUseVehicleOnPolicy: true,
   
    // Override customer details for Kentucky location
    customerDetails: {
        ...getDefaultTestData().customerDetails!,
        address: {
            street: getDefaultTestData().customerDetails!.address.street,
            city: 'Concord',
            state: 'Kentucky',
            postalCode: '42071',
            country: 'United States'
        }
    },
   
    // Insurance claim details
    claimDetails: {
        client: 'ACUITY INSURANCE',
        policyNumber: 'Mock532809F',
        policyDeductible: 0,
        damageDate: new Date(new Date().setDate(new Date().getDate() - 1)).toLocaleDateString('en-US', {month: '2-digit', day: '2-digit', year: 'numeric'}),
        damageCause: DamageType.Hail
    },
   
    // Heavy duty truck details with VIN lookup
    vehicleDetails: {
        ...getDefaultTestData().vehicleDetails!,
        year: '2006',
        make: 'Ford',
        model: 'F Series F550',
        style: '2 door standard cab',
        vin: '1FDAF57P86EA68105',
        vehicleLookupType: VehicleLookupType.Vin,
    },
   
    // No need to override vehicleDamage as it already defaults to WindshieldCrack
   
    // Override for in-shop appointment
    appointmentDetails: {
        serviceLocation: AppointmentType.InShop,
        shopAddress: '8985 Yellow Brick Rd, Rosedale, MD 21237',
        appointmentDate: getDefaultTestData().appointmentDetails?.appointmentDate
    },
   
    // Part questions for windshield
    vehiclePartQuestions: [
        {
            partQuestionType: PartQuestionType.WindshieldColor,
            isOnPage: true,
            optionToSelect: 'Green Tint',
            secondaryQuestionOptionToSelect: 'solar, third visor frit, aftermarket'
        },
    ],
   
    // Other vehicles on policy
    otherVehiclesOnPolicy: [
        {
            year: '2000',
            make: 'Ford',
            model: 'F250 Super Duty',
            vehicleLookupType: VehicleLookupType.Vin
        }
    ],
   
    // Override payment details (empty because we skip payment method page in insurance flow)
    paymentDetails: {}
}

const insuranceAcuityPaypalTests: TestCase[] = [];

const tc = new TestCase({
    name: `InsuranceAcuityPaypal`,
    tags: ['@E2E','@InsuranceAcuityPaypal', '@test_report', '@Insurance'],
    testData: insuranceAcuityPaypalData
}, undefined, 'InsuranceAcuityPaypal');
insuranceAcuityPaypalTests.push(tc);

export default insuranceAcuityPaypalTests;