Fixed mock TP Inquiry

This commit is contained in:
SepehrYahyaee
2026-09-07 13:00:18 +03:30
parent 01346f950c
commit 519967855e
2 changed files with 51 additions and 24 deletions

View File

@@ -15,6 +15,9 @@ describe("SandHubService inquiry mocks", () => {
const lookupsService = { const lookupsService = {
findLastProcessedCarPolicy: jest.fn(), findLastProcessedCarPolicy: jest.fn(),
}; };
const offlineInquiryService = {
findPlateInquiry: jest.fn(),
};
let service: SandHubService; let service: SandHubService;
@@ -38,12 +41,11 @@ describe("SandHubService inquiry mocks", () => {
sandHubDbService as any, sandHubDbService as any,
externalInquirySettings as unknown as ExternalInquirySettingsService, externalInquirySettings as unknown as ExternalInquirySettingsService,
plateNormalizer as any, plateNormalizer as any,
{ offlineInquiryService as any,
findPlateInquiry: jest.fn().mockResolvedValue(null),
} as any,
lookupsService as any, lookupsService as any,
); );
externalInquirySettings.isInquiryLive.mockResolvedValue(false); externalInquirySettings.isInquiryLive.mockResolvedValue(false);
offlineInquiryService.findPlateInquiry.mockResolvedValue(null);
externalInquirySettings.getMockCompanyContext.mockResolvedValue({ externalInquirySettings.getMockCompanyContext.mockResolvedValue({
companyId: "8", companyId: "8",
companyName: "بیمه پارسیان", companyName: "بیمه پارسیان",
@@ -108,6 +110,28 @@ describe("SandHubService inquiry mocks", () => {
expect(httpService.post).not.toHaveBeenCalled(); 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 () => { it("uses the processed CAR_BODY lookup when the active Fanavaran client is Parsian", async () => {
process.env.FANAVARAN_CLIENT = "parsian"; process.env.FANAVARAN_CLIENT = "parsian";
externalInquirySettings.isInquiryLive.mockResolvedValue(true); externalInquirySettings.isInquiryLive.mockResolvedValue(true);

View File

@@ -766,6 +766,10 @@ export class SandHubService {
person?: Record<string, unknown>; person?: Record<string, unknown>;
}; };
}> { }> {
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({ const offlineHit = await this.offlineInquiryService.findPlateInquiry({
clientKey: resolveFanavaranClientKey(), clientKey: resolveFanavaranClientKey(),
nationalCode: String(userDetail.nationalCodeOfInsurer), nationalCode: String(userDetail.nationalCodeOfInsurer),
@@ -786,6 +790,7 @@ export class SandHubService {
}, },
}; };
} }
}
const ctx = await this.mockCompanyContext(options); const ctx = await this.mockCompanyContext(options);
if (this.shouldUseEsgInquiryProvider()) { if (this.shouldUseEsgInquiryProvider()) {
@@ -799,7 +804,6 @@ export class SandHubService {
}; };
const requestUrl = `${baseUrl}/inquiry/policyByPlate`; const requestUrl = `${baseUrl}/inquiry/policyByPlate`;
const live = await this.isInquiryLive("thirdPartyPlate", options);
const raw = live const raw = live
? await this.makeEsgRequest( ? await this.makeEsgRequest(
requestUrl, requestUrl,
@@ -828,7 +832,6 @@ export class SandHubService {
}; };
const requestUrl = `${baseUrl}/block-inquiry-tejarat`; const requestUrl = `${baseUrl}/block-inquiry-tejarat`;
const live = await this.isInquiryLive("thirdPartyPlate", options);
const raw = live const raw = live
? await this.makeTejaratRequest( ? await this.makeTejaratRequest(
requestUrl, requestUrl,