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

// Set the seed before generating any data
setFakerSeedFromTestName("CashReplaceMultiGlassPromoInshop");

// Now get the test data with the seeded faker
const cashReplaceMultiGlassPromoInshopData: Partial<ITestData> = {
    ...getDefaultTestData(),  // Get default data with current seed

    // CASH Client
    paymentMethod: PaymentMethod.SelfPay,
   
    // Flag for recalibration vehicle
    isRecalVehicle: true,
   
    // Override customer details - different postal code
    customerDetails: {
        ...getDefaultTestData().customerDetails!,
        address: {
            ...getDefaultTestData().customerDetails!.address,
            postalCode: '43085'
        }
    },
   
    // Override vehicle details with VIN lookup
    vehicleDetails: {
        ...getDefaultTestData().vehicleDetails!,
        year: '2019',
        make: 'Subaru',
        model: 'Outback',
        style: '4 door station wagon',
        vin: '4S4BSENC4K3221004',
        vehicleLookupType: VehicleLookupType.Vin
    },
   
    // Key feature: multiple damaged glasses
    vehicleDamage: [
        VehicleDamage.WindshieldCrack,
        VehicleDamage.DriverFrontDoor,
        VehicleDamage.DriverRearDoor,
        VehicleDamage.DriverVentGlass,
        VehicleDamage.PassengerVentGlass,
        VehicleDamage.RearWindow
    ],
   
    // Override payment details
    paymentDetails: {
        paymentType: PaymentType.PayAtService,
        // Add promo code
        promoCode: '20CALL',
    },
   
    // Vehicle part questions for multiple glass parts
    vehiclePartQuestions: [
        {
            partQuestionType: PartQuestionType.WindshieldColor,
            isOnPage: true,
            optionToSelect: 'Green Tint, Blue Shade',
            secondaryQuestionOptionToSelect: 'solar, lane departure warning system, heated glass wiper park, high beam assist, soundproofing'
        },
        {
            partQuestionType: PartQuestionType.DriverFrontColor,
            isOnPage: true,
            optionToSelect: 'Green Tint',
            secondaryQuestionOptionToSelect: 'solar, driver side, front, soundproofing, laminated'
        },
        {
            partQuestionType: PartQuestionType.DriverRearColor,
            isOnPage: true,
            optionToSelect: 'Gray Tint Privacy',
            secondaryQuestionOptionToSelect: 'solar, driver side, rear'
        },
        {
            partQuestionType: PartQuestionType.DriverVentColor,
            isOnPage: true,
            optionToSelect: 'Gray Tint Privacy',
            secondaryQuestionOptionToSelect: 'solar, driver side, rear'
        },
        {
            partQuestionType: PartQuestionType.PassengerVentColor,
            isOnPage: true,
            optionToSelect: 'Gray Tint Privacy',
            secondaryQuestionOptionToSelect: 'solar, passenger side, rear'
        },
        {
            partQuestionType: PartQuestionType.RearWindowColor,
            isOnPage: true,
            optionToSelect: 'Green Tint',
            secondaryQuestionOptionToSelect: 'heated glass, solar, antenna, manual liftgate, 1 hole'
        }
    ]
}

const cashReplaceMultiGlassPromoInshopTests: ITestCase[] = [];

const tc = {
    name: `CashReplaceMultiGlassPromoInshop`,
    tags: ['@E2E','@CashReplaceMultiGlassPromoInshop', '@test_report', '@CASH', '@CASH-1182'],
    testData: cashReplaceMultiGlassPromoInshopData
};
cashReplaceMultiGlassPromoInshopTests.push(tc);

export default cashReplaceMultiGlassPromoInshopTests;