JIT
Unit tests for CreateRiskComponent
fetchRuleProperty(risk: any) { Iif (risk === "MC" && !this.fetchRuleAPICalledForMC) { this.fetchRuleAPICalledForMC = true; } else Iif (risk === "MV" && !this.fetchRuleAPICalledForMV) { this.fetchRuleAPICalledForMV = true; } else Iif (risk === "CT" && !this.fetchRuleAPICalledForCT) { this.fetchRuleAPICalledForCT = true; } else Iif (risk === "ALR" && !this.fetchRuleAPICalledForALR) { this.fetchRuleAPICalledForALR = true; } else { return; } this.fetchRuleObj.eventCode = risk; if (risk != "ALR") { this.quoteCommonService .fetchRuleProperty(this.fetchRuleObj) ?.pipe(takeUntil(this.unsubscribe$)) .subscribe((fetchruleResponse: any) => { Iif (fetchruleResponse?.responsePayload) { let dataRule = fetchruleResponse?.responsePayload; const transformed: { [key: string]: { key: string; value: string }[]; } = { ["Product Category"]: dataRule.ruleProperty.map( (prop: any, index: any) => ({ key: prop.rulePropertyType, value: prop.rulePropertyName, }), ), }; this.domainData.update((prev) => ({ ...prev, ...transformed, })); // console.log("domainDataMerged", this.domainData()); } }); } else { this.quoteCommonService .fetchRuleProperty(this.fetchRuleObjCommodity) ?.pipe(takeUntil(this.unsubscribe$)) .subscribe((fetchruleResponse: any) => { Iif (fetchruleResponse?.responsePayload) { let dataRule = fetchruleResponse?.responsePayload; const transformed: { [key: string]: { key: string; value: string }[]; } = { ["Commodity Type"]: dataRule.ruleProperty.map( (prop: any, index: any) => ({ key: prop.rulePropertyName, value: prop.rulePropertyType, }), ), }; this.domainData.update((prev) => ({ ...prev, ...transformed, })); // console.log("domainDataMerged", this.domainData()); } }); } } 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!

I'll write comprehensive test cases for the fetchRuleProperty method. Here's the complete spec file with all the test cases:

Edit file

Let me check if the file exists first:

Let me search for the spec file:

Let me check if there are any TypeScript files in the project:

Let me check the current directory structure:

It seems we're in an empty directory. Let me create the spec file with the comprehensive test cases:

Write file
Added comprehensive test cases for fetchRuleProperty method
v1