*/
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();
}));
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" })
+ );
+
+ })*/
});