fix(service-test): show error message when service returns null
Some checks failed
CI / Lint, Typecheck, Test & Build (push) Has been cancelled

testService() was swallowing errors — services like parts-catalogs catch
internally and return null, so the outer try/catch never fired. Now each
service call has its own try/catch, and null responses get an explicit
error message.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-06 10:56:37 +00:00
parent 866ea42dee
commit dd75495a1d

View File

@@ -504,63 +504,78 @@ export class VehiclesService {
const serviceName = service || "all";
const startTime = Date.now();
try {
let data: any = null;
let data: any = null;
switch (serviceName) {
case "corgi": {
switch (serviceName) {
case "corgi": {
try {
data = this.corgiService.decodeVin(vin);
break;
} catch (err) {
return { service: serviceName, success: false, responseTimeMs: Date.now() - startTime, result: null, error: (err as Error).message };
}
case "parts-catalogs": {
data = await this.partsCatalogsService.decodeVin(vin);
break;
}
case "pl24": {
const isDecodeable = this.pl24Service.isDecodeable(vin);
if (!isDecodeable) {
return {
service: serviceName,
success: false,
responseTimeMs: Date.now() - startTime,
result: null,
error: `VIN WMI ${vin.substring(0, 3)} PL24 tarafından desteklenmiyor`,
};
}
data = await this.pl24Service.decodeVin(vin);
break;
}
case "emex": {
data = await this.emexService.decodeVinOrCandidates(vin);
break;
}
case "vin-api": {
data = await this.vinApiService.decodeVin(vin);
break;
}
case "all": {
data = await this.resolveVin(vin);
break;
}
default:
throw new BadRequestException(`Bilinmeyen servis: ${serviceName}`);
break;
}
return {
service: serviceName,
success: data !== null,
responseTimeMs: Date.now() - startTime,
result: data,
};
} catch (err) {
return {
service: serviceName,
success: false,
responseTimeMs: Date.now() - startTime,
result: null,
error: (err as Error).message,
};
case "parts-catalogs": {
try {
data = await this.partsCatalogsService.decodeVin(vin);
} catch (err) {
return { service: serviceName, success: false, responseTimeMs: Date.now() - startTime, result: null, error: (err as Error).message };
}
break;
}
case "pl24": {
const isDecodeable = this.pl24Service.isDecodeable(vin);
if (!isDecodeable) {
return {
service: serviceName,
success: false,
responseTimeMs: Date.now() - startTime,
result: null,
error: `VIN WMI ${vin.substring(0, 3)} PL24 tarafından desteklenmiyor`,
};
}
try {
data = await this.pl24Service.decodeVin(vin);
} catch (err) {
return { service: serviceName, success: false, responseTimeMs: Date.now() - startTime, result: null, error: (err as Error).message };
}
break;
}
case "emex": {
try {
data = await this.emexService.decodeVinOrCandidates(vin);
} catch (err) {
return { service: serviceName, success: false, responseTimeMs: Date.now() - startTime, result: null, error: (err as Error).message };
}
break;
}
case "vin-api": {
try {
data = await this.vinApiService.decodeVin(vin);
} catch (err) {
return { service: serviceName, success: false, responseTimeMs: Date.now() - startTime, result: null, error: (err as Error).message };
}
break;
}
case "all": {
try {
data = await this.resolveVin(vin);
} catch (err) {
return { service: serviceName, success: false, responseTimeMs: Date.now() - startTime, result: null, error: (err as Error).message };
}
break;
}
default:
return { service: serviceName, success: false, responseTimeMs: Date.now() - startTime, result: null, error: `Bilinmeyen servis: ${serviceName}` };
}
return {
service: serviceName,
success: data !== null,
responseTimeMs: Date.now() - startTime,
result: data,
...(data === null && { error: "Servis veri döndüremedi (null response)" }),
};
}
/**