// 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"; // Invalid zip (alert) - Combined test cases for all lookup types const nextWeekday = getNextWeekday(); const baseInvalidZipData: 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: 'Saco', state: 'Montana', postalCode: '99999', country: 'United States' } }, vehicleDamage: [ VehicleDamage.WindshieldCrack ], appointmentDetails: { serviceLocation: AppointmentType.DropOff, appointmentDate: nextWeekday }, alertFlags: { isInvalidZip: 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.Zip, displayName: 'Zip', tag: 'Zip', vehicleDetails: { year: '2020', make: 'Acura', model: 'ILX', style: '4 door sedan' } }, { type: VehicleLookupType.LicensePlateNumber, displayName: 'License Plate', tag: 'Plate', vehicleDetails: { year: '2013', make: 'Hyundai', model: 'Sonata', style: '4 door sedan', licensePlateNumber: 'FTY 7776', licensePlateState: 'Texas' } }, { type: VehicleLookupType.Vin, displayName: 'VIN', tag: 'Vin', vehicleDetails: { year: '2019', make: 'Toyota', model: 'C-HR', style: '4 door hatchback', vin: 'NMTKHMBX5KR086519' } } ]; const invalidZipTests: TestCase[] = []; // Generate test cases for each lookup type lookupTypesToTest.forEach((lookupType) => { const testData = { ...baseInvalidZipData, 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 = { ...baseInvalidZipData.customerDetails!, address: lookupType.customerDetails.address }; } const tc = new TestCase({ name: `alert0006 ${lookupType.displayName} Lookup Invalid zip`, tags: ['@Alert', `@InvalidZip_${lookupType.tag}`, '@test_report'], testData: testData }, undefined, `InvalidZip_${lookupType.tag}`); invalidZipTests.push(tc); }); export default invalidZipTests;