Tweaks for Policy Control UI
[portal/nonrtric-controlpanel.git] / webapp-frontend / src / app / policy / policy-control.component.spec.ts
index 198305d..4109dbd 100644 (file)
  */
 import { async, ComponentFixture, TestBed } from "@angular/core/testing";
 import { BrowserAnimationsModule } from "@angular/platform-browser/animations";
-import { MatDialog } from "@angular/material/dialog";
+import { By } from "@angular/platform-browser";
 import { MatIconModule } from "@angular/material/icon";
 import { MatTableModule } from "@angular/material/table";
 import { CUSTOM_ELEMENTS_SCHEMA } from "@angular/core";
 import { of } from "rxjs";
 
-import { NotificationService } from "@services/ui/notification.service";
 import { PolicyControlComponent } from "./policy-control.component";
-import { PolicyTypeDataSource } from "@policy/policy-type/policy-type.datasource";
-import { UiService } from "@services/ui/ui.service";
-import { PolicyTypeSchema } from "@interfaces/policy.types";
-import { PolicyService } from '../services/policy/policy.service';
+import { PolicyTypes } from "@interfaces/policy.types";
+import { PolicyService } from "@services/policy/policy.service";
+import { MockComponent } from "ng-mocks";
+import { PolicyTypeComponent } from "./policy-type/policy-type.component";
+import { MatButtonHarness } from '@angular/material/button/testing';
+import { HarnessLoader } from '@angular/cdk/testing';
+import { TestbedHarnessEnvironment } from '@angular/cdk/testing/testbed';
 
 describe("PolicyControlComponent", () => {
   let component: PolicyControlComponent;
   let fixture: ComponentFixture<PolicyControlComponent>;
+  let loader: HarnessLoader;
 
   beforeEach(async(() => {
-    const policyTypeDataSourceSpy = jasmine.createSpyObj(
-      "PolicyTypeDataSource",
-      ["connect", "getPolicyTypes", "disconnect"]
-    );
-    const policyServiceSpy = jasmine.createSpyObj('PolicyService', ['getPolicyTypes']);
-    var policyTypeSchema = {} as PolicyTypeSchema;
-    policyTypeSchema.name = "";
-    policyTypeSchema.schemaObject = "";
-    policyTypeDataSourceSpy.connect.and.returnValue(of([policyTypeSchema]));
-    policyTypeDataSourceSpy.disconnect();
-    policyServiceSpy.getPolicyTypes.and.returnValue(of(["type1"]));
-
-    let matDialogStub: Partial<MatDialog>;
-    let notificationServiceStub: Partial<NotificationService>;
+    const policyServiceSpy = jasmine.createSpyObj("PolicyService", [
+      "getPolicyTypes",
+    ]);
+    const policyTypes = { policytype_ids: ["type1", "type2"] } as PolicyTypes;
+    policyServiceSpy.getPolicyTypes.and.returnValue(of(policyTypes));
 
     TestBed.configureTestingModule({
       imports: [MatIconModule, MatTableModule, BrowserAnimationsModule],
       schemas: [CUSTOM_ELEMENTS_SCHEMA],
-      declarations: [PolicyControlComponent],
-      providers: [
-        { provide : PolicyService, useValue: policyServiceSpy},
-        { provide: PolicyTypeDataSource, useValue: policyTypeDataSourceSpy },
-        { provide: MatDialog, useValue: matDialogStub },
-        { provide: NotificationService, useValue: notificationServiceStub },
-        UiService,
+      declarations: [
+        PolicyControlComponent,
+        MockComponent(PolicyTypeComponent),
       ],
+      providers: [{ provide: PolicyService, useValue: policyServiceSpy }],
     }).compileComponents();
   }));
 
@@ -70,9 +61,27 @@ describe("PolicyControlComponent", () => {
     fixture = TestBed.createComponent(PolicyControlComponent);
     component = fixture.componentInstance;
     fixture.detectChanges();
+    loader = TestbedHarnessEnvironment.loader(fixture);
   });
 
   it("should create", () => {
     expect(component).toBeTruthy();
   });
+
+  it("should contain two PolicyType components instantiated with the correct type", () => {
+    const typeComponents: PolicyTypeComponent[] = fixture.debugElement
+      .queryAll(By.directive(PolicyTypeComponent))
+      .map((component) => component.componentInstance);
+
+    expect(typeComponents.length).toEqual(2);
+    expect(typeComponents[0].policyTypeId).toEqual("type1");
+    expect(typeComponents[1].policyTypeId).toEqual("type2");
+  });
+
+  /*it("should reload when clicking on refresh button", async () => {
+    let refreshButton: MatButtonHarness = await loader.getHarness(
+      MatButtonHarness.with({ selector: "#refreshButton" })
+    );
+
+  })*/
 });