// Imports here
import { ITestData } from 'framework/TestData';
import { ITestCase, TestCase } from '../../framework/Typedefs'
import { VehicleDamage } from 'safelite-playwright-core';
import { defaultTestData } from 'safelite-playwright-core';
import { getDefaultTestData, setFakerSeedFromTestName } from 'safelite-playwright-core';

// Windshield selected, when vehicle has split windshield (alert) Test Data
const splitWindshieldData: Partial<ITestData> = {
    ...defaultTestData,  // Start with all defaults

    // Override specific fields with test-specific data
    vehicleDamage: [
        VehicleDamage.SingleSplitWindshield,
        VehicleDamage.DriverSplitWindshield,
        VehicleDamage.PassengerSplitWindshield
    ],
    alertFlags: {
        isSplitWindshield: true
    },
    customerDetails: {
        ...getDefaultTestData().customerDetails!,
        address: {
            ...getDefaultTestData().customerDetails!.address,
            postalCode: '55414'
        }
    },
    isHeavyTruck: true,  // Flag for heavy truck vehicle
};

const vehiclesToTest = [
    {
        year: '2000',
        make: 'Kenworth',
        model: 'T450',
        style: 'conventional cab'
    },
    {
        year: '2006',
        make: 'Navistar',
        model: '5000 I',
        style: '2 door conventional cab'
    },
    {
        year: '1990',
        make: 'Kenworth',
        model: 'T600',
        style: 'conventional cab'
    },
];

const splitWindshieldTests: ITestCase[] = [];

// Generate test cases for each vehicle
vehiclesToTest.forEach((vehicle, index) => {

    const testData = {
        ...splitWindshieldData,
        vehicleDetails: {
            ...defaultTestData.vehicleDetails!,
            ...vehicle
        },
    }

    const tc = {
        name: `alert0003_${vehicle.make.toLowerCase()}_${vehicle.model.toLowerCase()} Windshield selected, when vehicle has split windshield - ${vehicle.make} ${vehicle.model} ${vehicle.year}`,
        tags: ['@Alert', '@SplitWindshield', '@test_report', `@${vehicle.make.toLowerCase()}`],
        testData: testData
    };

    splitWindshieldTests.push(tc);
});

export default splitWindshieldTests;