ngOnInit(): void {
this.dynamicFormService.captureClickFromButton =
this.parentMethod.bind(this);
// for edit or add riskPage Loading
this.navigation = this.webStorageService.get("reqObjFetchRisk");
// console.log(navigation); return;
if (this.navigation) {
this.loadInitData(this.navigation.riskCode);
this.createriskObj = this.navigation;
this.createRiskData
.findRiskList(this.createriskObj)
?.pipe(takeUntil(this.unsubscribe$))
.subscribe((findRiskListResp: any) => {
if (!findRiskListResp?.hasError) {
const risk: any =
findRiskListResp?.responsePayload?.riskDetails?.find(
(eachRisk: QuoteApi.BrokerRiskDetail) => {
return eachRisk.riskCode === this.createriskObj?.riskCode;
},
);
// console.log("risk", risk);
this.riskObj = risk;
Iif (risk) {
const initDataResp = this.dynamicFormService.formData();
// console.log("initDataResp", initDataResp);
let flatMapObj: any = {};
initDataResp?.map((eachPage: any) => {
// console.log("eachPage", eachPage);
eachPage.sections?.map((eachSection: any) => {
let sectionId = eachSection?.sectionID;
if (sectionId === "watercraftInformation") {
sectionId = "vehicleInformation";
} else if (
sectionId === "securityDetailsWC" ||
sectionId === "securityDetailsHHC"
) {
sectionId = "securityDetail";
} else if (sectionId === "coverGroupHI") {
sectionId = "coverGroup";
} else if (sectionId === "coverGroupLA") {
sectionId = "coverGroup";
} else if (sectionId === "coverGroupCT") {
sectionId = "coverGroup";
} else if (sectionId === "financeDetailTUC") {
sectionId = "financeDetail";
} else if (sectionId === "VehicleDetailsTUC") {
sectionId = "VehicleDetails";
} else Iif (sectionId === "personalValuablesOwnerInfo") {
sectionId = "ownerInformation";
}
Iif (risk[sectionId]) {
flatMapObj = { ...flatMapObj, ...risk[sectionId] };
}
Iif (sectionId === "driverDetails") {
const driver = risk?.[sectionId]?.[0];
Iif (driver) {
flatMapObj = {
...flatMapObj,
...driver,
...(driver.driverContactDetails ?? {}),
};
}
// flatMapObj = {
// ...flatMapObj,
// ...risk[sectionId] ?? risk[sectionId][0],
// ...risk[sectionId] ?? risk[sectionId][0]?.driverContactDetails,
// };
}
});
flatMapObj.riskCode = risk.riskCode;
Iif (flatMapObj.riskCode) {
flatMapObj.riskInceptionDate =
this.commonUtilService.convertToDDMMYYYY(
risk?.basicDetails?.riskInceptionDate,
);
}
//setting all true and false to Y & N
Object.keys(flatMapObj).forEach((key) => {
Iif (typeof flatMapObj[key] === "boolean") {
flatMapObj[key] = flatMapObj[key] ? "Y" : "N";
}
});
this.dynamicFormService.setDependentSection(
this.riskConstantService.dependentData[risk.riskCode],
);
this.dynamicFormService.setRiskData({
riskData: flatMapObj,
section: [
{
id: null,
key: risk?.riskCode,
value: risk?.riskName,
},
],
cover: this.riskCodeListWithCg?.find(
(obj: any) => obj.key === risk?.riskCode,
).coverGroup,
});
flatMapObj.isEngineDetails =
flatMapObj.motorNumber > 0 ? "Y" : "N";
flatMapObj.isAccessoryAvailableForVehicle =
flatMapObj.accessoryDetails?.length > 0 ? "Y" : "N";
flatMapObj.watercraftenginedetails = flatMapObj.engineDetails;
// flatMapObj.accessorydetails = flatMapObj.accessoryDetails;
flatMapObj.claimHistory = flatMapObj?.claimDetail;
flatMapObj.additionalSecurityFeatures =
flatMapObj.additionalSecurityFeatures?.map((data: any) => {
return data.whichAdditionalSecurityFeaturesPresent;
});
// flatMapObj.driverDetails = flatMapObj.driverDetails?.map((data: any) => {
// console.log(data);
// return [data];
// });
// flatMapObj.driverDetails = flatMapObj["0"]
this.fetchData.set(flatMapObj);
console.log(flatMapObj);
if (flatMapObj?.itemType === "CARV") {
const formData = this.dynamicFormService.formData();
let sections = formData[0].sections;
const updatedSection = sections.map((section: any) => {
Iif (section?.sectionID === "trailerDetail") {
return { isVisible: false };
}
Iif (section?.sectionID === "caravanDetail") {
console.log("toooooo");
return { ...section, isVisible: true };
}
return section;
});
const newPageData: any = {
...formData[0],
sections: updatedSection,
};
formData[0] = newPageData;
// this.dynamicFormService.formData.set(formData);
flatMapObj = { ...flatMapObj, updatedSection };
this.fetchData.set(flatMapObj);
// console.log(formData, sections, this.mainForm, "fffff");
} else Iif (flatMapObj?.itemType === "TRAIL") {
const formData = this.dynamicFormService.formData();
let sections = formData[0].sections;
const updatedSection = sections.map((section: any) => {
Iif (section?.sectionID === "caravanDetail") {
return { isVisible: false };
}
Iif (section?.sectionID === "trailerDetail") {
return { ...section, isVisible: true };
}
return section;
});
const newPageData = {
...formData[0],
sections: updatedSection,
};
formData[0] = newPageData;
// this.dynamicFormService.formData.set(formData);
flatMapObj = { ...flatMapObj, formData };
this.fetchData.set(flatMapObj);
// this.fetchData.set(formData);
}
// console.log(
// this.fetchData(),
// "consoling after setting fetchdata",
// );
});
console.log("uuu", this.fetchData());
this.formChangeEvent();
}
}
// console.log("riskDetailsData", this.riskDetailsData);
});
} else {
this.loadInitData();
// this.fetchData.set({
// insuredName: this.partyDetail?.firstName + " " + this.partyDetail?.lastName,
// identityType: this.partyDetail?.idType,
// passportNumber:
// this.partyObj?.idType === "PP"
// ? this.partyObj?.passportNumber
// : this.partyObj?.idNumber,
// passportExpiryDate: this.partyDetail?.passportExpiryDate,
// });
}
}
loadInitData(riskCode = "") {
// alert(riskCode);
this.mainForm = this.formBuilder.group({});
this.isFormReady = false;
this.domainData.set("");
this.quoteCommonService
.getInitData()
?.pipe(takeUntil(this.unsubscribe$))
.subscribe((initDataResp: any) => {
//setting the data for main form service
initDataResp?.map((eachPage: any) => {
const riskSection = this.riskConstantService.dependentData[riskCode];
eachPage.sections?.map((eachSection: any) => {
let sectionId = eachSection?.sectionID;
// console.log(riskCode, eachSection, sectionId, sectionId.includes(riskSection));
if (riskSection?.includes(sectionId)) {
eachSection.isVisible = true;
} else {
eachSection.isVisible = false;
}
Iif (sectionId === "policyRiskType") {
eachSection.isVisible = true;
eachSection.fields[0].defaultValue = riskCode;
eachSection.fields[1].defaultValue =
this.today.toLocaleDateString();
}
Iif (riskCode === "CT") {
Iif (sectionId === "trailerDetail") {
eachSection.isVisible = false;
}
}
});
});
this.dynamicFormService.formData.set(initDataResp);
this.dynamicFormService.formData().forEach((eachPage: any) => {
this.mainForm.addControl(eachPage.pageMasterId, new FormGroup({}));
});
// console.log(riskCode, this.riskConstantService.dependentData[riskCode], this.dynamicFormService.formData());
this.isFormReady = true;
this.setRiskFormData(riskCode);
});
} This is the above typescript code..write the full code of the test cases of the spec file! The given spec file import { ComponentFixture, TestBed } from "@angular/core/testing";
import {
HttpTestingController,
provideHttpClientTesting,
} from "@angular/common/http/testing";
import { provideHttpClient } from "@angular/common/http";
import { CreateRiskComponent } from "./create-risk.component";
import { QuoteCommonService } from "../../services/quote-common-service.service";
import { of } from "rxjs";
import { createRiskService } from "../../createRiskDetails.service";
import { WebStorageService } from "src/app/core/services/webStorage.service";
import { BrowserAnimationsModule } from "@angular/platform-browser/animations";
import { DynamicFormsService, ModalService } from "@shared";
import { signal } from "@angular/core";
import { mmserviceView } from "src/app/shared/services/mmModal.service";
import { RiskModalService } from "../../services/risk-modal.service";
describe("CreateRiskComponent", () => {
let component: CreateRiskComponent;
let fixture: ComponentFixture<CreateRiskComponent>;
let mockQuoteService: jasmine.SpyObj<QuoteCommonService>;
let mockCreateRiskService: jasmine.SpyObj<createRiskService>;
let mockWebStorageService: jasmine.SpyObj<WebStorageService>;
let mockDynamicFormsService: jasmine.SpyObj<DynamicFormsService>;
let mockMmserviceView: jasmine.SpyObj<mmserviceView>;
let mockModalService: jasmine.SpyObj<ModalService>;
let mockriskModalService: jasmine.SpyObj<RiskModalService>;
let httpMock: HttpTestingController;
beforeEach(async () => {
mockQuoteService = jasmine.createSpyObj("QuoteCommonService", [
"getInitData",
"fetchDomainValues",
"fetchRuleProperty",
"retriveQuote",
"retrieveQuoteOrPolicy",
]);
mockCreateRiskService = jasmine.createSpyObj("createRiskService", [
"findRiskList",
]);
mockMmserviceView = jasmine.createSpyObj("mmserviceView", ["getMMview"]);
mockModalService = jasmine.createSpyObj("ModalService", ["openModal"]);
mockriskModalService = jasmine.createSpyObj("RiskModalService", [
"openDataModal",
]);
mockWebStorageService = jasmine.createSpyObj("WebStorageService", ["get"]);
mockDynamicFormsService = jasmine.createSpyObj("DynamicFormsService", [
"setRiskData",
"getRiskData",
"setTextSearchData",
"setDependentSection",
"formData",
]);
(mockDynamicFormsService as any).formData = signal([
{ test: "test", sections: [{ sectionID: "sc1" }, { sectionID: "sc2" }] },
]);
await TestBed.configureTestingModule({
imports: [CreateRiskComponent, BrowserAnimationsModule],
providers: [provideHttpClient(), provideHttpClientTesting()],
})
.overrideComponent(CreateRiskComponent, {
set: {
providers: [
{ provide: QuoteCommonService, useValue: mockQuoteService },
{ provide: createRiskService, useValue: mockCreateRiskService },
{ provide: WebStorageService, useValue: mockWebStorageService },
{ provide: DynamicFormsService, useValue: mockDynamicFormsService },
{ provide: mmserviceView, useValue: mockMmserviceView },
{ provide: ModalService, useValue: mockModalService },
],
},
})
.compileComponents();
fixture = TestBed.createComponent(CreateRiskComponent);
component = fixture.componentInstance;
httpMock = TestBed.inject(HttpTestingController);
component.riskCodeListWithCg = [
{ key: "rs1", coverGroup: "cg1" },
{ key: "rs2", coverGroup: "cg2" },
{ key: "rs3", coverGroup: "cg3" },
{ key: "rs4", coverGroup: "cg4" },
];
fixture.detectChanges();
});
it("should create", () => {
expect(component).toBeTruthy();
});
write the all test cases of spec file!