forked from Yara724/api
update the lookups list
This commit is contained in:
145
src/lookups/lookups.service.vehicle.spec.ts
Normal file
145
src/lookups/lookups.service.vehicle.spec.ts
Normal file
@@ -0,0 +1,145 @@
|
||||
import { NotFoundException } from "@nestjs/common";
|
||||
import { LookupsService } from "./lookups.service";
|
||||
|
||||
describe("LookupsService.vehicleById", () => {
|
||||
const originalClient = process.env.FANAVARAN_CLIENT;
|
||||
|
||||
beforeAll(() => {
|
||||
process.env.FANAVARAN_CLIENT = "parsian";
|
||||
});
|
||||
|
||||
afterAll(() => {
|
||||
process.env.FANAVARAN_CLIENT = originalClient;
|
||||
});
|
||||
|
||||
function createService(lookup: Record<string, jest.Mock>) {
|
||||
return new LookupsService({} as any, lookup as any);
|
||||
}
|
||||
|
||||
it("returns the vehicle with kind, used, and plaque lookups", async () => {
|
||||
const lookup = {
|
||||
vehicleById: jest.fn().mockResolvedValue({
|
||||
Id: 3379978,
|
||||
VehicleKindId: 5904,
|
||||
UsedId: 36,
|
||||
VIN: "IRNKAEK4150012345",
|
||||
PlaqueLeftNo: "12",
|
||||
PlaqueMiddleCodeId: 2,
|
||||
PlaqueRightNo: "345",
|
||||
PlaqueSerial: "67",
|
||||
VersionNo: 2,
|
||||
}),
|
||||
getRemoteLookup: jest.fn().mockImplementation((_key, url: string) => {
|
||||
if (url.includes("vehicle-kinds")) {
|
||||
return Promise.resolve([
|
||||
{ Id: 5904, Caption: "بنز", VehicleGroupId: 3, IsActive: 1 },
|
||||
]);
|
||||
}
|
||||
if (url.includes("vehicle-use-types")) {
|
||||
return Promise.resolve([
|
||||
{ Id: 36, Caption: "حمل مواد سريع الاشتعال", VehicleGroupId: 3, IsActive: 1 },
|
||||
]);
|
||||
}
|
||||
return Promise.resolve([]);
|
||||
}),
|
||||
};
|
||||
|
||||
const service = createService(lookup);
|
||||
const result = (await service.vehicleById(3379978, 2)) as Record<
|
||||
string,
|
||||
unknown
|
||||
>;
|
||||
|
||||
expect(lookup.vehicleById).toHaveBeenCalledWith("parsian", 3379978, 2);
|
||||
expect(result.Id).toBe(3379978);
|
||||
expect(result.vehicleKind).toEqual({
|
||||
Id: 5904,
|
||||
Caption: "بنز",
|
||||
VehicleGroupId: 3,
|
||||
IsActive: 1,
|
||||
});
|
||||
expect(result.used).toEqual({
|
||||
Id: 36,
|
||||
Caption: "حمل مواد سريع الاشتعال",
|
||||
VehicleGroupId: 3,
|
||||
IsActive: 1,
|
||||
});
|
||||
expect(result.plaque).toEqual({
|
||||
leftTwoDigits: "12",
|
||||
serialLetter: "ب",
|
||||
threeDigits: "345",
|
||||
rightTwoDigits: "67",
|
||||
});
|
||||
});
|
||||
|
||||
it("enriches inquiry-by-vin rows with used and vehicleKind", async () => {
|
||||
const lookup = {
|
||||
inquiryByVin: jest.fn().mockResolvedValue([
|
||||
{
|
||||
Id: 3379978,
|
||||
UsedId: 84,
|
||||
VehicleKindId: 5950,
|
||||
VIN: "NAS451100P4934023",
|
||||
},
|
||||
]),
|
||||
getRemoteLookup: jest.fn().mockImplementation((_key, url: string) => {
|
||||
if (url.includes("vehicle-kinds")) {
|
||||
return Promise.resolve([
|
||||
{ Id: 5950, Caption: "کامیون", VehicleGroupId: 3, IsActive: 1 },
|
||||
]);
|
||||
}
|
||||
if (url.includes("vehicle-use-types")) {
|
||||
return Promise.resolve([
|
||||
{ Id: 84, Caption: "حمل بار", VehicleGroupId: 3, IsActive: 1 },
|
||||
]);
|
||||
}
|
||||
return Promise.resolve([]);
|
||||
}),
|
||||
};
|
||||
|
||||
const service = createService(lookup);
|
||||
const result = (await service.inquiryByVin("NAS451100P4934023")) as Array<
|
||||
Record<string, unknown>
|
||||
>;
|
||||
|
||||
expect(lookup.inquiryByVin).toHaveBeenCalledWith(
|
||||
"parsian",
|
||||
"NAS451100P4934023",
|
||||
);
|
||||
expect(result[0].UsedId).toBe(84);
|
||||
expect(result[0].used).toEqual({
|
||||
Id: 84,
|
||||
Caption: "حمل بار",
|
||||
VehicleGroupId: 3,
|
||||
IsActive: 1,
|
||||
});
|
||||
expect(result[0].vehicleKind).toEqual({
|
||||
Id: 5950,
|
||||
Caption: "کامیون",
|
||||
VehicleGroupId: 3,
|
||||
IsActive: 1,
|
||||
});
|
||||
});
|
||||
|
||||
it("unwraps an array payload and 404s when Fanavaran returns nothing", async () => {
|
||||
const lookup = {
|
||||
vehicleById: jest
|
||||
.fn()
|
||||
.mockResolvedValueOnce([{ Id: 3379978, VehicleKindId: 1 }])
|
||||
.mockResolvedValueOnce([]),
|
||||
getRemoteLookup: jest.fn().mockResolvedValue([]),
|
||||
};
|
||||
|
||||
const service = createService(lookup);
|
||||
const unwrapped = (await service.vehicleById(3379978)) as Record<
|
||||
string,
|
||||
unknown
|
||||
>;
|
||||
expect(unwrapped.Id).toBe(3379978);
|
||||
expect(unwrapped.color).toBeNull();
|
||||
|
||||
await expect(service.vehicleById(1)).rejects.toBeInstanceOf(
|
||||
NotFoundException,
|
||||
);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user