summaryrefslogtreecommitdiffstats
path: root/dcaedftool/src/app/df-schema.component.spec.ts
blob: dac20f24bd59ba187012ed75cf5c4e7124729b7d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
// org.onap.dcae
// ============LICENSE_START====================================================
// Copyright (c) 2018 AT&T Intellectual Property. All rights reserved.
// =============================================================================
// 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======================================================
//
// ECOMP is a trademark and service mark of AT&T Intellectual Property.
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import {HttpModule} from '@angular/http';  // for future
import {FormsModule, ReactiveFormsModule} from '@angular/forms'; // for future
import {BrowserAnimationsModule} from '@angular/platform-browser/animations'; // for future
import { MaterialModule } from '@angular/material';
import { FlexLayoutModule } from '@angular/flex-layout';
import { RouterModule, Routes } from '@angular/router';
import { APP_BASE_HREF } from '@angular/common';

import {ValidateMetaSchemaService} from './validate-metaschema.service';
import {ValidateJSONService} from './validate-json.service';
import {MetaSchemaService} from './metaschema.service';
import {DFSchemaComponent} from './df-schema.component';



import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { By } from '@angular/platform-browser';
import { DebugElement } from '@angular/core';

describe('DFSchemaComponent Tests', function () {
  let de: DebugElement;
  let comp: DFSchemaComponent;
  let fixture: ComponentFixture<DFSchemaComponent>;

  beforeEach(async(() => {
    TestBed.configureTestingModule({
      imports:      [  BrowserModule,
        BrowserAnimationsModule,
        FormsModule,
        HttpModule,
        ReactiveFormsModule,
        FlexLayoutModule,
        MaterialModule,

        ],
      providers: [{provide: APP_BASE_HREF, useValue: '/'},
      ValidateMetaSchemaService,
      ValidateJSONService,
      MetaSchemaService
                  ],
      declarations: [
                      DFSchemaComponent,

                   ]
    })
    .compileComponents();
  }));

  beforeEach(() => {
    fixture = TestBed.createComponent(DFSchemaComponent);
    comp = fixture.componentInstance;
    //de = fixture.debugElement.query(By.css('h1'));
  });

  it('should create component', () => expect(comp).toBeDefined() );

 it('should have no metaschema display as default', () => {
      expect(comp.metaButton).toMatch('Display MetaSchema');
  });
  it('should  metaschema display after toggle', () => {
       comp.toggleMetaSchema();
       expect(comp.metaButton).toMatch('Hide MetaSchema');
   });
   it('should validate valid schema', () => {
     let ev = {target: {name: "test", value: '{"self": {  "name": "CUDA Simple JSON Example","version": "1.0.0","description": "An example of unnested JSON schema for CUDA Input and output"},"dataformatversion": "1.0.0",  "jsonschema": {  "$schema": "http://json-schema.org/draft-04/schema#","type": "object",  "properties": {"raw-text": {"type": "string"  }  },  "required": ["raw-text"],  "additionalProperties": false }}'}};
     comp.doDFSchemaChange(ev);
     expect(comp.schemaMsg).toMatch("Valid Data Format Schema") ;
    });
    it('should not validate an invalid schema', () => {
      let ev = {target: {name: "test", value: '{"self": {  "name": "CUDA Simple JSON Example","version": "1.0.0","description": "An example of unnested JSON schema for CUDA Input and output"},  "jsonschema": {  "$schema": "http://json-schema.org/draft-04/schema#","type": "object",  "properties": {"raw-text": {"type": "string"  }  },  "required": ["raw-text"],  "additionalProperties": false  }}'}};
      comp.doDFSchemaChange(ev);
      expect(comp.schemaMsg).toMatch("Invalid Data Format Schema:") ;
     });
     it('jsonschema must be 04 or 06 schema', () => {
       let ev = {target: {name: "test", value: '{"self": {  "name": "CUDA Simple JSON Example","version": "1.0.0","description": "An example of unnested JSON schema for CUDA Input and output"},  "jsonschema": {  "$schema": "http://json-schema.org/draft-05/schema#","type": "object",  "properties": {"raw-text": {"type": "string"  }  },  "required": ["raw-text"],  "additionalProperties": false  }}'}};
       comp.doDFSchemaChange(ev);
       expect(comp.schemaMsg).toMatch(/Invalid JSON Schema Data Format -  jsonschema\$schema version must be 04 or 06/) ;
    });
});