Fix of new policy components
[portal/nonrtric-controlpanel.git] / webapp-frontend / src / app / policy / no-type-policy-editor / no-type-policy-editor.component.spec.ts
index b0700fd..77477ed 100644 (file)
@@ -1,30 +1,58 @@
+// -
+//   ========================LICENSE_START=================================
+//   O-RAN-SC
+//   %%
+//   Copyright (C) 2021: Nordix Foundation
+//   %%
+//   Licensed under the Apache License, Version 2.0 (the "License");
+//   you may not use this file except in compliance with the License.
+//   You may obtain a copy of the License at
+//
+//        http://www.apache.org/licenses/LICENSE-2.0
+//
+//   Unless required by applicable law or agreed to in writing, software
+//   distributed under the License is distributed on an "AS IS" BASIS,
+//   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//   See the License for the specific language governing permissions and
+//   limitations under the License.
+//   ========================LICENSE_END===================================
+//  /
+//
+
 import { HarnessLoader } from '@angular/cdk/testing';
 import { TestbedHarnessEnvironment } from '@angular/cdk/testing/testbed';
-import { Component, ViewChild } from '@angular/core';
-import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+import { Component, ViewChild, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
+import { ComponentFixture, TestBed } from '@angular/core/testing';
 import { FormBuilder, FormGroup } from '@angular/forms';
 import { MatButtonModule } from '@angular/material/button';
 import { MatButtonHarness } from '@angular/material/button/testing';
-import { MatInput, MatInputModule } from '@angular/material/input';
+import { MatFormFieldModule } from '@angular/material/form-field';
+import { MatInputModule } from '@angular/material/input';
 import { MatInputHarness } from '@angular/material/input/testing';
+import { BrowserModule } from '@angular/platform-browser';
 import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
 
 import { NoTypePolicyEditorComponent } from './no-type-policy-editor.component';
 
-let formGroup: FormGroup = new FormGroup({});
-
 describe('NoTypePolicyEditorComponent', () => {
+  let formGroup: FormGroup = new FormGroup({});
+
   let component: TestNoTypePolicyEditorComponentHostComponent;
   let fixture: ComponentFixture<TestNoTypePolicyEditorComponentHostComponent>;
   let loader: HarnessLoader;
 
-  beforeEach(async(() => {
+  beforeEach(async () => {
     TestBed.configureTestingModule({
       imports: [
+        BrowserModule,
         BrowserAnimationsModule,
         MatButtonModule,
+        MatFormFieldModule,
         MatInputModule
       ],
+      schemas: [
+        CUSTOM_ELEMENTS_SCHEMA
+      ],
       declarations: [
         NoTypePolicyEditorComponent,
         TestNoTypePolicyEditorComponentHostComponent
@@ -39,7 +67,7 @@ describe('NoTypePolicyEditorComponent', () => {
     component = fixture.componentInstance;
     fixture.detectChanges();
     loader = TestbedHarnessEnvironment.loader(fixture);
-  }));
+  });
 
   it('should create', () => {
     expect(component).toBeTruthy();
@@ -61,22 +89,29 @@ describe('NoTypePolicyEditorComponent', () => {
     expect(await formatButton.isDisabled()).toBeFalsy();
   });
 
-  it('Format button should be disabled wen json not valid', async () => {
-    let textArea: MatInputHarness = await loader.getHarness(MatInputHarness.with({ selector: '#policyJsonTextArea' }));
-    await textArea.setValue('{');
+  it('Format button should be disabled when json not valid', async () => {
+    const ele = formGroup.get('policyJsonTextArea');
+    ele.setValue('{');
 
     let formatButton: MatButtonHarness = await loader.getHarness(MatButtonHarness.with({ selector: '#formatButton' }));
-    // expect(await formatButton.isDisabled()).toBeTruthy();
+    expect(await formatButton.isDisabled()).toBeTruthy();
   });
-});
 
-@Component({
-  selector: `no-type-policy-editor-host-component`,
-  template: `<nrcp-no-type-policy-editor [policyJson]="this.policyJson" [instanceForm]="instanceForm"></nrcp-no-type-policy-editor>`
-})
-export class TestNoTypePolicyEditorComponentHostComponent {
-  @ViewChild(NoTypePolicyEditorComponent)
-  private noTypePolicyEditorComponentHostComponent: NoTypePolicyEditorComponent;
-  instanceForm: FormGroup = formGroup;
-  policyJson: string = '{"A":"A"}';
-}
+  it('should format unformatted json', async () => {
+    const textArea = formGroup.get('policyJsonTextArea');
+    textArea.setValue('{"A":"A"}');
+    component.noTypePolicyEditorComponent.formatJsonInput();
+    expect(component.noTypePolicyEditorComponent.policyJson).toEqual('{\n  "A": "A"\n}');
+  });
+
+  @Component({
+    selector: `no-type-policy-editor-host-component`,
+    template: `<nrcp-no-type-policy-editor [policyJson]="this.policyJson" [instanceForm]="instanceForm"></nrcp-no-type-policy-editor>`
+  })
+  class TestNoTypePolicyEditorComponentHostComponent {
+    @ViewChild(NoTypePolicyEditorComponent)
+    noTypePolicyEditorComponent: NoTypePolicyEditorComponent;
+    instanceForm: FormGroup = formGroup;
+    policyJson: string = '{"A":"A"}';
+  }
+});