forked from Yara724/api
fix: harden claim review and inquiry workflows
Preserve damage history and current vehicle price, restore depreciation mapping, normalize inquiry/report output, and support resumable expert review with paginated case retrieval.
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
import { SandHubService } from "./sand-hub.service";
|
||||
import {
|
||||
ForbiddenException,
|
||||
NotFoundException,
|
||||
ServiceUnavailableException,
|
||||
} from "@nestjs/common";
|
||||
import { ExternalInquirySettingsService } from "src/client/external-inquiry-settings.service";
|
||||
@@ -58,7 +59,9 @@ describe("SandHubService inquiry mocks", () => {
|
||||
});
|
||||
|
||||
it("keeps disabled-live third-party mock policy usable", async () => {
|
||||
const result = await service.getTejaratBlockInquiry(userDetail);
|
||||
const result = await service.getTejaratBlockInquiry(userDetail, {
|
||||
enforceDeploymentClientMatch: true,
|
||||
});
|
||||
|
||||
expect(isMappedPolicyCurrent(result.mapped)).toBe(true);
|
||||
});
|
||||
@@ -121,6 +124,17 @@ describe("SandHubService inquiry mocks", () => {
|
||||
expect(httpService.post).not.toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it("returns a contextual Persian error when no car-body policy matches", async () => {
|
||||
externalInquirySettings.isInquiryLive.mockResolvedValue(true);
|
||||
lookupsService.findLastProcessedCarPolicy.mockRejectedValue(
|
||||
new NotFoundException("No active Fanavaran car-body policy was found"),
|
||||
);
|
||||
|
||||
await expect(service.getCarBodyInquiry(userDetail)).rejects.toThrow(
|
||||
"بیمهنامه بدنه فعالی مطابق پلاک و کد ملی واردشده یافت نشد.",
|
||||
);
|
||||
});
|
||||
|
||||
it("does not let an offline third-party seed override a live ESG inquiry", async () => {
|
||||
process.env.CLIENT_ID = "8";
|
||||
externalInquirySettings.isInquiryLive.mockResolvedValue(true);
|
||||
@@ -129,12 +143,10 @@ describe("SandHubService inquiry mocks", () => {
|
||||
raw: { mocked: true },
|
||||
mapped: { PrntPlcyCmpDocNo: "MOCK-POLICY" },
|
||||
});
|
||||
const esg = jest
|
||||
.spyOn(service as any, "makeEsgRequest")
|
||||
.mockResolvedValue({
|
||||
success: true,
|
||||
data: { PrntCmpDocNo: "REAL-ESG-POLICY" },
|
||||
});
|
||||
const esg = jest.spyOn(service as any, "makeEsgRequest").mockResolvedValue({
|
||||
success: true,
|
||||
data: { PrntCmpDocNo: "REAL-ESG-POLICY" },
|
||||
});
|
||||
|
||||
const result = await service.getTejaratBlockInquiry(userDetail);
|
||||
|
||||
@@ -143,6 +155,40 @@ describe("SandHubService inquiry mocks", () => {
|
||||
expect(result.mapped.PrntPlcyCmpDocNo).toBe("REAL-ESG-POLICY");
|
||||
});
|
||||
|
||||
it("preserves ESG not-found semantics as a Persian plate-specific error", async () => {
|
||||
process.env.CLIENT_ID = "8";
|
||||
externalInquirySettings.isInquiryLive.mockResolvedValue(true);
|
||||
jest.spyOn(service as any, "makeEsgRequest").mockResolvedValue({
|
||||
success: false,
|
||||
message: "موردی یافت نشد",
|
||||
});
|
||||
|
||||
const result = await service.getTejaratBlockInquiry(userDetail, {
|
||||
enforceDeploymentClientMatch: true,
|
||||
});
|
||||
|
||||
expect(result.mapped.Error.Message).toBe(
|
||||
"بیمهنامه شخص ثالثی مطابق پلاک و کد ملی واردشده یافت نشد.",
|
||||
);
|
||||
});
|
||||
|
||||
it("uses a VIN-specific message for the same ESG not-found response", async () => {
|
||||
externalInquirySettings.isInquiryLive.mockResolvedValue(true);
|
||||
jest.spyOn(service as any, "makeEsgRequest").mockResolvedValue({
|
||||
success: false,
|
||||
message: "موردی یافت نشد",
|
||||
});
|
||||
|
||||
const result = await service.getPolicyByChassisInquiry({
|
||||
nationalCode: "0012345678",
|
||||
chassis: "NAAR03HFFRDE07024",
|
||||
});
|
||||
|
||||
expect(result.mapped.Error.Message).toBe(
|
||||
"بیمهنامه شخص ثالثی مطابق شماره شاسی (VIN) و کد ملی واردشده یافت نشد.",
|
||||
);
|
||||
});
|
||||
|
||||
it("rejects a guilty third-party policy issued by another insurer", async () => {
|
||||
process.env.CLIENT_ID = "15";
|
||||
externalInquirySettings.isInquiryLive.mockResolvedValue(true);
|
||||
|
||||
Reference in New Issue
Block a user