X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=webapp-frontend%2Fsrc%2Fapp%2Fpolicy%2Fno-type-policy-editor%2Fno-type-policy-editor.component.spec.ts;h=7c552bc1ddd0e9a86bfdb1eb3eef2003fa96f521;hb=HEAD;hp=77477ed8ef1e7bf970190be82710ae782b74fd27;hpb=b3f6966f626c9d58e443280ff3ce17e44a2873e4;p=portal%2Fnonrtric-controlpanel.git diff --git a/webapp-frontend/src/app/policy/no-type-policy-editor/no-type-policy-editor.component.spec.ts b/webapp-frontend/src/app/policy/no-type-policy-editor/no-type-policy-editor.component.spec.ts index 77477ed..7c552bc 100644 --- a/webapp-frontend/src/app/policy/no-type-policy-editor/no-type-policy-editor.component.spec.ts +++ b/webapp-frontend/src/app/policy/no-type-policy-editor/no-type-policy-editor.component.spec.ts @@ -16,27 +16,23 @@ // 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, 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 { 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 { HarnessLoader } from "@angular/cdk/testing"; +import { TestbedHarnessEnvironment } from "@angular/cdk/testing/testbed"; +import { Component, ViewChild, CUSTOM_ELEMENTS_SCHEMA } from "@angular/core"; +import { ComponentFixture, TestBed } from "@angular/core/testing"; +import { MatButtonModule } from "@angular/material/button"; +import { MatButtonHarness } from "@angular/material/button/testing"; +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'; - -describe('NoTypePolicyEditorComponent', () => { - let formGroup: FormGroup = new FormGroup({}); +import { NoTypePolicyEditorComponent } from "./no-type-policy-editor.component"; +describe("NoTypePolicyEditorComponent", () => { let component: TestNoTypePolicyEditorComponentHostComponent; let fixture: ComponentFixture; let loader: HarnessLoader; @@ -48,70 +44,97 @@ describe('NoTypePolicyEditorComponent', () => { BrowserAnimationsModule, MatButtonModule, MatFormFieldModule, - MatInputModule - ], - schemas: [ - CUSTOM_ELEMENTS_SCHEMA + MatInputModule, ], + schemas: [CUSTOM_ELEMENTS_SCHEMA], declarations: [ NoTypePolicyEditorComponent, - TestNoTypePolicyEditorComponentHostComponent + TestNoTypePolicyEditorComponentHostComponent, ], - providers: [ - FormBuilder - ] - }) - .compileComponents(); + }).compileComponents(); - fixture = TestBed.createComponent(TestNoTypePolicyEditorComponentHostComponent); + fixture = TestBed.createComponent( + TestNoTypePolicyEditorComponentHostComponent + ); component = fixture.componentInstance; fixture.detectChanges(); loader = TestbedHarnessEnvironment.loader(fixture); }); - it('should create', () => { + it("should create", () => { expect(component).toBeTruthy(); }); - it('should be added to form group with required validator', async () => { - let textArea: MatInputHarness = await loader.getHarness(MatInputHarness.with({ selector: '#policyJsonTextArea' })); - - expect(formGroup.get('policyJsonTextArea')).toBeTruthy(); - expect(await textArea.isRequired()).toBeTruthy(); - }); - - it('should contain provided policy json and enabled Format button', async () => { - let textArea: MatInputHarness = await loader.getHarness(MatInputHarness.with({ selector: '#policyJsonTextArea' })); + it("should contain provided policy json and enabled Format button", async () => { + const textArea: MatInputHarness = await loader.getHarness( + MatInputHarness.with({ selector: "#policyJsonTextArea" }) + ); expect(await textArea.getValue()).toEqual('{"A":"A"}'); - console.log('Validity:',formGroup.valid); - let formatButton: MatButtonHarness = await loader.getHarness(MatButtonHarness.with({ selector: '#formatButton' })); + const formatButton: MatButtonHarness = await loader.getHarness( + MatButtonHarness.with({ selector: "#formatButton" }) + ); expect(await formatButton.isDisabled()).toBeFalsy(); }); - it('Format button should be disabled when json not valid', async () => { - const ele = formGroup.get('policyJsonTextArea'); - ele.setValue('{'); + it("Format button should be disabled when json not valid", async () => { + const ele = component.noTypePolicyEditorComponent.instanceForm.get( + "policyJsonTextArea" + ); + ele.setValue("{"); - let formatButton: MatButtonHarness = await loader.getHarness(MatButtonHarness.with({ selector: '#formatButton' })); + const formatButton: MatButtonHarness = await loader.getHarness( + MatButtonHarness.with({ selector: "#formatButton" }) + ); expect(await formatButton.isDisabled()).toBeTruthy(); }); - 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}'); + it("should send valid json", async () => { + const textAreaHarness: MatInputHarness = await loader.getHarness( + MatInputHarness.with({ selector: "#policyJsonTextArea" }) + ); + expect(await textAreaHarness.getValue()).toEqual('{"A":"A"}'); + + let validJson: string; + component.noTypePolicyEditorComponent.validJson.subscribe( + (json: string) => { + validJson = json; + } + ); + + const textArea = component.noTypePolicyEditorComponent.instanceForm.get( + "policyJsonTextArea" + ); + textArea.setValue('{"B":"B"}'); + expect(validJson).toEqual('{"B":"B"}'); + }); + + it("should send null when invalid json", async () => { + const textArea: MatInputHarness = await loader.getHarness( + MatInputHarness.with({ selector: "#policyJsonTextArea" }) + ); + expect(await textArea.getValue()).toEqual('{"A":"A"}'); + + let invalidJson: string; + component.noTypePolicyEditorComponent.validJson.subscribe( + (json: string) => { + invalidJson = json; + } + ); + + textArea.setValue("{"); + expect(invalidJson).toBeFalsy(); }); @Component({ selector: `no-type-policy-editor-host-component`, - template: `` + template: ``, }) class TestNoTypePolicyEditorComponentHostComponent { @ViewChild(NoTypePolicyEditorComponent) noTypePolicyEditorComponent: NoTypePolicyEditorComponent; - instanceForm: FormGroup = formGroup; policyJson: string = '{"A":"A"}'; } });