forked from Yara724/api
Fixed mock TP Inquiry
This commit is contained in:
@@ -15,6 +15,9 @@ describe("SandHubService inquiry mocks", () => {
|
||||
const lookupsService = {
|
||||
findLastProcessedCarPolicy: jest.fn(),
|
||||
};
|
||||
const offlineInquiryService = {
|
||||
findPlateInquiry: jest.fn(),
|
||||
};
|
||||
|
||||
let service: SandHubService;
|
||||
|
||||
@@ -38,12 +41,11 @@ describe("SandHubService inquiry mocks", () => {
|
||||
sandHubDbService as any,
|
||||
externalInquirySettings as unknown as ExternalInquirySettingsService,
|
||||
plateNormalizer as any,
|
||||
{
|
||||
findPlateInquiry: jest.fn().mockResolvedValue(null),
|
||||
} as any,
|
||||
offlineInquiryService as any,
|
||||
lookupsService as any,
|
||||
);
|
||||
externalInquirySettings.isInquiryLive.mockResolvedValue(false);
|
||||
offlineInquiryService.findPlateInquiry.mockResolvedValue(null);
|
||||
externalInquirySettings.getMockCompanyContext.mockResolvedValue({
|
||||
companyId: "8",
|
||||
companyName: "بیمه پارسیان",
|
||||
@@ -108,6 +110,28 @@ describe("SandHubService inquiry mocks", () => {
|
||||
expect(httpService.post).not.toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it("does not let an offline third-party seed override a live ESG inquiry", async () => {
|
||||
process.env.CLIENT_ID = "8";
|
||||
externalInquirySettings.isInquiryLive.mockResolvedValue(true);
|
||||
offlineInquiryService.findPlateInquiry.mockResolvedValue({
|
||||
source: "OFFLINE_SEED_INQUIRY",
|
||||
raw: { mocked: true },
|
||||
mapped: { PrntPlcyCmpDocNo: "MOCK-POLICY" },
|
||||
});
|
||||
const esg = jest
|
||||
.spyOn(service as any, "makeEsgRequest")
|
||||
.mockResolvedValue({
|
||||
success: true,
|
||||
data: { PrntCmpDocNo: "REAL-ESG-POLICY" },
|
||||
});
|
||||
|
||||
const result = await service.getTejaratBlockInquiry(userDetail);
|
||||
|
||||
expect(esg).toHaveBeenCalled();
|
||||
expect(result.raw).not.toEqual({ mocked: true });
|
||||
expect(result.mapped.PrntPlcyCmpDocNo).toBe("REAL-ESG-POLICY");
|
||||
});
|
||||
|
||||
it("uses the processed CAR_BODY lookup when the active Fanavaran client is Parsian", async () => {
|
||||
process.env.FANAVARAN_CLIENT = "parsian";
|
||||
externalInquirySettings.isInquiryLive.mockResolvedValue(true);
|
||||
|
||||
@@ -766,25 +766,30 @@ export class SandHubService {
|
||||
person?: Record<string, unknown>;
|
||||
};
|
||||
}> {
|
||||
const offlineHit = await this.offlineInquiryService.findPlateInquiry({
|
||||
clientKey: resolveFanavaranClientKey(),
|
||||
nationalCode: String(userDetail.nationalCodeOfInsurer),
|
||||
leftDigits: String(userDetail.plate.leftDigits),
|
||||
centerAlphabet: String(userDetail.plate.centerAlphabet),
|
||||
centerDigits: String(userDetail.plate.centerDigits),
|
||||
ir: String(userDetail.plate.ir),
|
||||
});
|
||||
if (offlineHit) {
|
||||
return {
|
||||
raw: offlineHit.raw,
|
||||
mapped: offlineHit.mapped,
|
||||
offline: {
|
||||
source: offlineHit.source,
|
||||
fanavaranDriverId: offlineHit.fanavaranDriverId,
|
||||
insurance: offlineHit.insurance,
|
||||
person: offlineHit.person,
|
||||
},
|
||||
};
|
||||
const live = await this.isInquiryLive("thirdPartyPlate", options);
|
||||
// Offline records are a fallback for disabled inquiry mode only. They must
|
||||
// never override a configured live ESG/Tejarat inquiry.
|
||||
if (!live) {
|
||||
const offlineHit = await this.offlineInquiryService.findPlateInquiry({
|
||||
clientKey: resolveFanavaranClientKey(),
|
||||
nationalCode: String(userDetail.nationalCodeOfInsurer),
|
||||
leftDigits: String(userDetail.plate.leftDigits),
|
||||
centerAlphabet: String(userDetail.plate.centerAlphabet),
|
||||
centerDigits: String(userDetail.plate.centerDigits),
|
||||
ir: String(userDetail.plate.ir),
|
||||
});
|
||||
if (offlineHit) {
|
||||
return {
|
||||
raw: offlineHit.raw,
|
||||
mapped: offlineHit.mapped,
|
||||
offline: {
|
||||
source: offlineHit.source,
|
||||
fanavaranDriverId: offlineHit.fanavaranDriverId,
|
||||
insurance: offlineHit.insurance,
|
||||
person: offlineHit.person,
|
||||
},
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
const ctx = await this.mockCompanyContext(options);
|
||||
@@ -799,7 +804,6 @@ export class SandHubService {
|
||||
};
|
||||
|
||||
const requestUrl = `${baseUrl}/inquiry/policyByPlate`;
|
||||
const live = await this.isInquiryLive("thirdPartyPlate", options);
|
||||
const raw = live
|
||||
? await this.makeEsgRequest(
|
||||
requestUrl,
|
||||
@@ -828,7 +832,6 @@ export class SandHubService {
|
||||
};
|
||||
|
||||
const requestUrl = `${baseUrl}/block-inquiry-tejarat`;
|
||||
const live = await this.isInquiryLive("thirdPartyPlate", options);
|
||||
const raw = live
|
||||
? await this.makeTejaratRequest(
|
||||
requestUrl,
|
||||
|
||||
Reference in New Issue
Block a user