From 55d8bd15efc74705d2a89e022485a47f503d14ab Mon Sep 17 00:00:00 2001 From: elinuxhenrik Date: Wed, 31 Mar 2021 14:14:47 +0200 Subject: [PATCH] Add test coverage of PolicyTypeComponent Change-Id: Ie8b62cc8db279d4c3cb5fbc0301258576b4b095c Issue-ID: NONRTRIC-471 Signed-off-by: elinuxhenrik --- .../policy/policy-type/policy-type.component.html | 2 +- .../policy-type/policy-type.component.spec.ts | 57 ++++++++++++++++++++-- .../policy/policy-type/policy-type.component.ts | 16 +++--- 3 files changed, 63 insertions(+), 12 deletions(-) diff --git a/webapp-frontend/src/app/policy/policy-type/policy-type.component.html b/webapp-frontend/src/app/policy/policy-type/policy-type.component.html index a94a3e9..ee8b2d0 100644 --- a/webapp-frontend/src/app/policy/policy-type/policy-type.component.html +++ b/webapp-frontend/src/app/policy/policy-type/policy-type.component.html @@ -19,7 +19,7 @@ -->
-
+
{{isVisible.value? 'expand_less' : 'expand_more'}}
diff --git a/webapp-frontend/src/app/policy/policy-type/policy-type.component.spec.ts b/webapp-frontend/src/app/policy/policy-type/policy-type.component.spec.ts index d02f1b2..28e99b0 100644 --- a/webapp-frontend/src/app/policy/policy-type/policy-type.component.spec.ts +++ b/webapp-frontend/src/app/policy/policy-type/policy-type.component.spec.ts @@ -21,9 +21,12 @@ import { async, ComponentFixture, TestBed } from "@angular/core/testing"; import { PolicyTypeComponent } from "./policy-type.component"; -import { PolicyType } from "@interfaces/policy.types"; +import { PolicyType, PolicyTypeSchema } from "@interfaces/policy.types"; import { PolicyService } from "@services/policy/policy.service"; import { of } from "rxjs"; +import { MockComponent } from "ng-mocks"; +import { PolicyInstanceComponent } from "../policy-instance/policy-instance.component"; +import { By } from "@angular/platform-browser"; describe("PolicyTypeComponent", () => { let component: PolicyTypeComponent; @@ -33,13 +36,16 @@ describe("PolicyTypeComponent", () => { beforeEach(async(() => { policyServiceSpy = jasmine.createSpyObj("PolicyService", ["getPolicyType"]); const policyTypeSchema = JSON.parse( - '{"schemaObject": {"description": "Type 1 policy type"}}' + '{"title": "1", "description": "Type 1 policy type"}' ); const policyType = { policy_schema: policyTypeSchema } as PolicyType; policyServiceSpy.getPolicyType.and.returnValue(of(policyType)); TestBed.configureTestingModule({ - declarations: [PolicyTypeComponent], + declarations: [ + PolicyTypeComponent, + MockComponent(PolicyInstanceComponent), + ], providers: [{ provide: PolicyService, useValue: policyServiceSpy }], }).compileComponents(); })); @@ -53,4 +59,49 @@ describe("PolicyTypeComponent", () => { it("should create", () => { expect(component).toBeTruthy(); }); + + it("should not call service when no type, display correct type info and no PolicyInstanceComponent added", () => { + expect(policyServiceSpy.getPolicyType).not.toHaveBeenCalled(); + + expect(component.policyType).toEqual("< No Type >"); + expect(component.policyDescription).toEqual("Type with no schema"); + + const ele = fixture.debugElement.nativeElement.querySelector("nrcp-policy-instance"); + expect(ele).toBeFalsy(); +}); + + it("should call service when type, display correct type info and no PolicyInstanceComponent added", () => { + component.policyTypeId = "type1"; + component.loadTypeInfo(); + + expect(policyServiceSpy.getPolicyType).toHaveBeenCalledWith("type1"); + + expect(component.policyType).toEqual("type1"); + expect(component.policyDescription).toEqual("Type 1 policy type"); + + const ele = fixture.debugElement.nativeElement.querySelector("nrcp-policy-instance"); + expect(ele).toBeFalsy(); + }); + + it("should add PolicyInstanceComponent with correct data when toggle visible to visible", async () => { + const ele = fixture.debugElement.nativeElement.querySelector("#visible"); + expect(ele.innerText).toEqual("expand_more"); + + ele.click(); + fixture.detectChanges(); + + expect(ele.innerText).toEqual("expand_less"); + + const policyInstanceComp: PolicyInstanceComponent = fixture.debugElement.query( + By.directive(PolicyInstanceComponent) + ).componentInstance; + expect(policyInstanceComp).toBeTruthy(); + const expectedPolicyType = { + id: undefined, + name: undefined, + schemaObject: JSON.parse("{}") + } as PolicyTypeSchema; + expect(policyInstanceComp.policyTypeSchema).toEqual(expectedPolicyType); + expect(policyInstanceComp.expanded).toBeTruthy(); + }); }); diff --git a/webapp-frontend/src/app/policy/policy-type/policy-type.component.ts b/webapp-frontend/src/app/policy/policy-type/policy-type.component.ts index 7d82cb4..cfc0eb5 100644 --- a/webapp-frontend/src/app/policy/policy-type/policy-type.component.ts +++ b/webapp-frontend/src/app/policy/policy-type/policy-type.component.ts @@ -46,7 +46,12 @@ export class PolicyTypeComponent implements OnInit { constructor(private policyService: PolicyService) {} ngOnInit(): void { - if (this.policyTypeId !== "") { + this.loadTypeInfo(); + this.isVisible.next(false); + } + + public loadTypeInfo() { + if (this.policyTypeId && this.policyTypeId !== "") { this.policyService .getPolicyType(this.policyTypeId) .subscribe((policyType: PolicyType) => { @@ -57,15 +62,14 @@ export class PolicyTypeComponent implements OnInit { }); } else { const noType = { - policy_schema: JSON.parse('{"schemaObject": "{}"}'), + policy_schema: JSON.parse('{}'), } as PolicyType; const noTypeSchema = this.getSchemaObject(noType); this.policyTypeInfo = new PolicyTypeInfo(noTypeSchema); this.policyType = "< No Type >"; this.policyDescription = "Type with no schema"; } - this.isVisible.next(false); - } +} private getSchemaObject(policyType: PolicyType) { const policyTypeSchema = {} as PolicyTypeSchema; @@ -75,10 +79,6 @@ export class PolicyTypeComponent implements OnInit { return policyTypeSchema; } - public setIsVisible(status: boolean) { - this.isVisible.next(status); - } - public toggleVisible() { this.isVisible.next(!this.isVisible.value); } -- 2.16.6