// Imports here import { ITestData } from "@business-logic/types/ITestData"; import { VehicleDamage, AppointmentType, VehicleLookupType } from "@business-logic/types/Enums"; import TestCase from "@business-logic/types/TestCase"; import { getNextWeekday } from "@impl/utils/DateUtils"; import { faker } from "@faker-js/faker"; import { defaultTestData } from "@business-logic/constants/DefaultTestData"; // Vin not found (alert) - Combined test cases for all lookup types const nextWeekday = getNextWeekday(); const baseVinNotFoundData: Partial = { ...defaultTestData, // Start with all defaults // Override specific fields with test-specific data customerDetails: { ...defaultTestData.customerDetails!, firstName: faker.person.firstName(), lastName: faker.person.lastName(), address: { street: faker.location.streetAddress(), city: 'Raleigh', state: 'North Carolina', postalCode: '44089', country: 'United States' } }, vehicleDamage: [ VehicleDamage.WindshieldCrack ], appointmentDetails: { serviceLocation: AppointmentType.DropOff, appointmentDate: nextWeekday }, alertFlags: { isVinNotFound: true } }; interface LookupTestCase { type: VehicleLookupType; vehicleDetails: { year: string; make: string; model: string; style: string; licensePlateNumber?: string; licensePlateState?: string; vin?: string; }; enterFunnelWithZip?: boolean; customerDetails?: { address: { street: string; city: string; state: string; postalCode: string; country: string; }; }; tag: string; displayName: string; } const lookupTypesToTest: LookupTestCase[] = [ { type: VehicleLookupType.Address, displayName: 'Address', tag: 'Addr', vehicleDetails: { year: '2013', make: 'Hyundai', model: 'Sonata', style: '4 door sedan' }, customerDetails: { address: { street: '4076 Spectacle Dr', city: 'Columbus', state: 'Ohio', postalCode: '59261', country: 'United States' } }, enterFunnelWithZip: true }, { type: VehicleLookupType.LicensePlateNumber, displayName: 'License Plate', tag: 'Plate', vehicleDetails: { year: '2013', make: 'Hyundai', model: 'Sonata', style: '4 door sedan', licensePlateNumber: '6WYN462', licensePlateState: 'Texas' } }, { type: VehicleLookupType.Vin, displayName: 'VIN', tag: 'Vin', vehicleDetails: { year: '2019', make: 'Toyota', model: 'C-HR', style: '4 door hatchback', vin: '1MMHK8F81CGA45982' } } ]; const vinNotFoundTests: TestCase[] = []; // Generate test cases for each lookup type lookupTypesToTest.forEach((lookupType) => { const testData = { ...baseVinNotFoundData, vehicleDetails: { ...lookupType.vehicleDetails, vehicleLookupType: lookupType.type }, enterFunnelWithZip: lookupType.enterFunnelWithZip }; // Handle special case for Address lookup which has different customer details if (lookupType.type === VehicleLookupType.Address && lookupType.customerDetails) { testData.customerDetails = { ...baseVinNotFoundData.customerDetails!, address: lookupType.customerDetails.address }; } const tc = new TestCase({ name: `alert0007 ${lookupType.displayName} Lookup Vin Not Found`, tags: ['@Alert', `@VinNotFound_${lookupType.tag}`, '@test_report'], testData: testData }, undefined, `VinNotFound_${lookupType.tag}`); vinNotFoundTests.push(tc); }); export default vinNotFoundTests;