vocabulary editor
This commit is contained in:
parent
4cf13df0ab
commit
a5b318a065
|
@ -1,74 +0,0 @@
|
||||||
import { RouterTestingModule } from '@angular/router/testing';
|
|
||||||
import { LayoutModule } from '@angular/cdk/layout';
|
|
||||||
import { waitForAsync, ComponentFixture, TestBed } from '@angular/core/testing';
|
|
||||||
import { NoopAnimationsModule } from '@angular/platform-browser/animations';
|
|
||||||
import { MatButtonModule } from '@angular/material/button';
|
|
||||||
import { MatIconModule } from '@angular/material/icon';
|
|
||||||
import { MatListModule } from '@angular/material/list';
|
|
||||||
import { MatSidenavModule } from '@angular/material/sidenav';
|
|
||||||
import { MatToolbarModule } from '@angular/material/toolbar';
|
|
||||||
import { AppComponent } from './app.component';
|
|
||||||
|
|
||||||
describe('AppComponent', () => {
|
|
||||||
|
|
||||||
let component: AppComponent;
|
|
||||||
let fixture: ComponentFixture<AppComponent>;
|
|
||||||
|
|
||||||
beforeEach(waitForAsync(() => {
|
|
||||||
TestBed.configureTestingModule({
|
|
||||||
declarations: [AppComponent],
|
|
||||||
imports: [
|
|
||||||
NoopAnimationsModule,
|
|
||||||
LayoutModule,
|
|
||||||
MatButtonModule,
|
|
||||||
MatIconModule,
|
|
||||||
MatListModule,
|
|
||||||
MatSidenavModule,
|
|
||||||
MatToolbarModule,
|
|
||||||
]
|
|
||||||
}).compileComponents();
|
|
||||||
}));
|
|
||||||
|
|
||||||
beforeEach(() => {
|
|
||||||
fixture = TestBed.createComponent(AppComponent);
|
|
||||||
component = fixture.componentInstance;
|
|
||||||
fixture.detectChanges();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should compile', () => {
|
|
||||||
expect(component).toBeTruthy();
|
|
||||||
});
|
|
||||||
|
|
||||||
beforeEach(async () => {
|
|
||||||
await TestBed.configureTestingModule({
|
|
||||||
imports: [
|
|
||||||
RouterTestingModule
|
|
||||||
],
|
|
||||||
declarations: [
|
|
||||||
AppComponent
|
|
||||||
],
|
|
||||||
}).compileComponents();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should create the app', () => {
|
|
||||||
const fixture = TestBed.createComponent(AppComponent);
|
|
||||||
const app = fixture.componentInstance;
|
|
||||||
expect(app).toBeTruthy();
|
|
||||||
});
|
|
||||||
|
|
||||||
it(`should have as title 'dnet-is-application'`, () => {
|
|
||||||
const fixture = TestBed.createComponent(AppComponent);
|
|
||||||
const app = fixture.componentInstance;
|
|
||||||
expect(app.title).toEqual('dnet-is-application');
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should render title', () => {
|
|
||||||
const fixture = TestBed.createComponent(AppComponent);
|
|
||||||
fixture.detectChanges();
|
|
||||||
const compiled = fixture.nativeElement as HTMLElement;
|
|
||||||
expect(compiled.querySelector('.content span')?.textContent).toContain('dnet-is-application app is running!');
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,23 +0,0 @@
|
||||||
import { ComponentFixture, TestBed } from '@angular/core/testing';
|
|
||||||
|
|
||||||
import { ContextsComponent } from './contexts.component';
|
|
||||||
|
|
||||||
describe('ContextsComponent', () => {
|
|
||||||
let component: ContextsComponent;
|
|
||||||
let fixture: ComponentFixture<ContextsComponent>;
|
|
||||||
|
|
||||||
beforeEach(async () => {
|
|
||||||
await TestBed.configureTestingModule({
|
|
||||||
declarations: [ ContextsComponent ]
|
|
||||||
})
|
|
||||||
.compileComponents();
|
|
||||||
|
|
||||||
fixture = TestBed.createComponent(ContextsComponent);
|
|
||||||
component = fixture.componentInstance;
|
|
||||||
fixture.detectChanges();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should create', () => {
|
|
||||||
expect(component).toBeTruthy();
|
|
||||||
});
|
|
||||||
});
|
|
|
@ -1,23 +0,0 @@
|
||||||
import { ComponentFixture, TestBed } from '@angular/core/testing';
|
|
||||||
|
|
||||||
import { InfoComponent } from './info.component';
|
|
||||||
|
|
||||||
describe('InfoComponent', () => {
|
|
||||||
let component: InfoComponent;
|
|
||||||
let fixture: ComponentFixture<InfoComponent>;
|
|
||||||
|
|
||||||
beforeEach(async () => {
|
|
||||||
await TestBed.configureTestingModule({
|
|
||||||
declarations: [ InfoComponent ]
|
|
||||||
})
|
|
||||||
.compileComponents();
|
|
||||||
|
|
||||||
fixture = TestBed.createComponent(InfoComponent);
|
|
||||||
component = fixture.componentInstance;
|
|
||||||
fixture.detectChanges();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should create', () => {
|
|
||||||
expect(component).toBeTruthy();
|
|
||||||
});
|
|
||||||
});
|
|
|
@ -1,16 +0,0 @@
|
||||||
import { TestBed } from '@angular/core/testing';
|
|
||||||
|
|
||||||
import { ISService } from './is.service';
|
|
||||||
|
|
||||||
describe('ISService', () => {
|
|
||||||
let service: ISService;
|
|
||||||
|
|
||||||
beforeEach(() => {
|
|
||||||
TestBed.configureTestingModule({});
|
|
||||||
service = TestBed.inject(ISService);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should be created', () => {
|
|
||||||
expect(service).toBeTruthy();
|
|
||||||
});
|
|
||||||
});
|
|
|
@ -1,23 +0,0 @@
|
||||||
import { ComponentFixture, TestBed } from '@angular/core/testing';
|
|
||||||
|
|
||||||
import { MainMenuPanelsComponent } from './main-menu-panels.component';
|
|
||||||
|
|
||||||
describe('MainMenuPanelsComponent', () => {
|
|
||||||
let component: MainMenuPanelsComponent;
|
|
||||||
let fixture: ComponentFixture<MainMenuPanelsComponent>;
|
|
||||||
|
|
||||||
beforeEach(async () => {
|
|
||||||
await TestBed.configureTestingModule({
|
|
||||||
declarations: [ MainMenuPanelsComponent ]
|
|
||||||
})
|
|
||||||
.compileComponents();
|
|
||||||
|
|
||||||
fixture = TestBed.createComponent(MainMenuPanelsComponent);
|
|
||||||
component = fixture.componentInstance;
|
|
||||||
fixture.detectChanges();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should create', () => {
|
|
||||||
expect(component).toBeTruthy();
|
|
||||||
});
|
|
||||||
});
|
|
|
@ -1,32 +0,0 @@
|
||||||
import { waitForAsync, ComponentFixture, TestBed } from '@angular/core/testing';
|
|
||||||
import { MatButtonModule } from '@angular/material/button';
|
|
||||||
import { MatIconModule } from '@angular/material/icon';
|
|
||||||
import { MatTreeModule } from '@angular/material/tree';
|
|
||||||
|
|
||||||
import { MainMenuTreeComponent } from './main-menu-tree.component';
|
|
||||||
|
|
||||||
describe('MainMenuTreeComponent', () => {
|
|
||||||
let component: MainMenuTreeComponent;
|
|
||||||
let fixture: ComponentFixture<MainMenuTreeComponent>;
|
|
||||||
|
|
||||||
beforeEach(waitForAsync(() => {
|
|
||||||
TestBed.configureTestingModule({
|
|
||||||
declarations: [ MainMenuTreeComponent ],
|
|
||||||
imports: [
|
|
||||||
MatButtonModule,
|
|
||||||
MatIconModule,
|
|
||||||
MatTreeModule,
|
|
||||||
]
|
|
||||||
}).compileComponents();
|
|
||||||
}));
|
|
||||||
|
|
||||||
beforeEach(() => {
|
|
||||||
fixture = TestBed.createComponent(MainMenuTreeComponent);
|
|
||||||
component = fixture.componentInstance;
|
|
||||||
fixture.detectChanges();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should compile', () => {
|
|
||||||
expect(component).toBeTruthy();
|
|
||||||
});
|
|
||||||
});
|
|
|
@ -1,23 +0,0 @@
|
||||||
import { ComponentFixture, TestBed } from '@angular/core/testing';
|
|
||||||
|
|
||||||
import { ProtocolsComponent } from './protocols.component';
|
|
||||||
|
|
||||||
describe('ProtocolsComponent', () => {
|
|
||||||
let component: ProtocolsComponent;
|
|
||||||
let fixture: ComponentFixture<ProtocolsComponent>;
|
|
||||||
|
|
||||||
beforeEach(async () => {
|
|
||||||
await TestBed.configureTestingModule({
|
|
||||||
declarations: [ ProtocolsComponent ]
|
|
||||||
})
|
|
||||||
.compileComponents();
|
|
||||||
|
|
||||||
fixture = TestBed.createComponent(ProtocolsComponent);
|
|
||||||
component = fixture.componentInstance;
|
|
||||||
fixture.detectChanges();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should create', () => {
|
|
||||||
expect(component).toBeTruthy();
|
|
||||||
});
|
|
||||||
});
|
|
|
@ -1,23 +0,0 @@
|
||||||
import { ComponentFixture, TestBed } from '@angular/core/testing';
|
|
||||||
|
|
||||||
import { ResourcesComponent } from './resources.component';
|
|
||||||
|
|
||||||
describe('ResourcesComponent', () => {
|
|
||||||
let component: ResourcesComponent;
|
|
||||||
let fixture: ComponentFixture<ResourcesComponent>;
|
|
||||||
|
|
||||||
beforeEach(async () => {
|
|
||||||
await TestBed.configureTestingModule({
|
|
||||||
declarations: [ ResourcesComponent ]
|
|
||||||
})
|
|
||||||
.compileComponents();
|
|
||||||
|
|
||||||
fixture = TestBed.createComponent(ResourcesComponent);
|
|
||||||
component = fixture.componentInstance;
|
|
||||||
fixture.detectChanges();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should create', () => {
|
|
||||||
expect(component).toBeTruthy();
|
|
||||||
});
|
|
||||||
});
|
|
|
@ -20,13 +20,68 @@
|
||||||
<input matInput formControlName="encoding" />
|
<input matInput formControlName="encoding" />
|
||||||
</mat-form-field>
|
</mat-form-field>
|
||||||
|
|
||||||
*** TO COMPLETE ***
|
<table mat-table [dataSource]="synonymsDatasource" class="mat-elevation-z8">
|
||||||
|
|
||||||
<table>
|
<ng-container matColumnDef="term">
|
||||||
|
<th mat-header-cell *matHeaderCellDef>Term</th>
|
||||||
|
<td mat-cell *matCellDef="let element">{{element.term}}</td>
|
||||||
|
<td mat-footer-cell *matFooterCellDef>
|
||||||
|
<mat-form-field appearance="fill" style="width: 100%;">
|
||||||
|
<mat-label>New term</mat-label>
|
||||||
|
<input matInput formControlName="tmpSynonymTerm" />
|
||||||
|
</mat-form-field>
|
||||||
|
</td>
|
||||||
|
</ng-container>
|
||||||
|
|
||||||
|
<ng-container matColumnDef="encoding">
|
||||||
|
<th mat-header-cell *matHeaderCellDef style="width: 20%;">Encoding</th>
|
||||||
|
<td mat-cell *matCellDef="let element">{{element.encoding}}</td>
|
||||||
|
<td mat-footer-cell *matFooterCellDef>
|
||||||
|
<mat-form-field appearance="fill" style="width: 100%;">
|
||||||
|
<mat-label>New encoding</mat-label>
|
||||||
|
<input matInput formControlName="tmpSynonymEncoding" />
|
||||||
|
</mat-form-field>
|
||||||
|
</td>
|
||||||
|
</ng-container>
|
||||||
|
|
||||||
|
<ng-container matColumnDef="buttons">
|
||||||
|
<th mat-header-cell *matHeaderCellDef style="text-align: right; width: 8em;"></th>
|
||||||
|
<td mat-cell *matCellDef="let index = index" class="table-buttons">
|
||||||
|
<button mat-stroked-button
|
||||||
|
color="warn"
|
||||||
|
type="button"
|
||||||
|
(click)="removeSynonym(index)">
|
||||||
|
delete
|
||||||
|
</button>
|
||||||
|
</td>
|
||||||
|
<td mat-footer-cell *matFooterCellDef class="table-buttons">
|
||||||
|
<button mat-stroked-button
|
||||||
|
color="primary"
|
||||||
|
type="button"
|
||||||
|
(click)="addSynonym()"
|
||||||
|
[disabled]="!isNewSynonymValid()">
|
||||||
|
add
|
||||||
|
</button>
|
||||||
|
</td>
|
||||||
|
</ng-container>
|
||||||
|
|
||||||
|
<tr mat-header-row *matHeaderRowDef="synonymColums"></tr>
|
||||||
|
<tr mat-row *matRowDef="let row; columns: synonymColums;"></tr>
|
||||||
|
|
||||||
|
<!-- Row shown when there is no matching data. -->
|
||||||
|
<tr class="mat-row" *matNoDataRow>
|
||||||
|
<td class="mat-cell" colspan="3" style="padding: 0 16px;">No synonyms</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr mat-footer-row *matFooterRowDef="synonymColums"></tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
<table style="border: 1px solid gray; font-size: 0.9em;">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th>Synonym</th>
|
<th style="text-align: left;">Synonym</th>
|
||||||
<th style="width: 20%">Encoding</th>
|
<th style="width: 20%; text-align: left;">Encoding</th>
|
||||||
<th style="width: 8em"></th>
|
<th style="width: 8em"></th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
|
@ -38,32 +93,37 @@
|
||||||
<td>{{s.term}}</td>
|
<td>{{s.term}}</td>
|
||||||
<td>{{s.encoding}}</td>
|
<td>{{s.encoding}}</td>
|
||||||
<td class="table-buttons">
|
<td class="table-buttons">
|
||||||
<button mat-stroked-button color="warn" (ng-click)="removeSynonym(i)" [mat-dialog-close]="false">delete</button>
|
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
<tfoot>
|
<tfoot>
|
||||||
<tr>
|
<tr>
|
||||||
<td>
|
<td>
|
||||||
<mat-form-field appearance="outline" style="width: 100%;">
|
<mat-form-field appearance="fill" style="width: 100%;">
|
||||||
<mat-label>New term</mat-label>
|
<mat-label>New term</mat-label>
|
||||||
<input matInput [(ngModel)]="tmpSynonym.term" />
|
<input matInput formControlName="tmpSynonymTerm" />
|
||||||
</mat-form-field>
|
</mat-form-field>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<mat-form-field appearance="outline" style="width: 100%;">
|
<mat-form-field appearance="fill" style="width: 100%;">
|
||||||
<mat-label>New encoding</mat-label>
|
<mat-label>New encoding</mat-label>
|
||||||
<input matInput [(ngModel)]="tmpSynonym.encoding" />
|
<input matInput formControlName="tmpSynonymEncoding" />
|
||||||
</mat-form-field>
|
</mat-form-field>
|
||||||
</td>
|
</td>
|
||||||
<td class="table-buttons">
|
<td class="table-buttons">
|
||||||
<button mat-stroked-button color="primary" (ng-click)="addSynonym()" [mat-dialog-close]="false"
|
<button mat-stroked-button
|
||||||
[disabled]="tmpSynonym.term.length == 0 || tmpSynonym.encoding.length == 0">add</button>
|
color="primary"
|
||||||
|
type="button"
|
||||||
|
(click)="addSynonym()"
|
||||||
|
[disabled]="!isNewSynonymValid()">
|
||||||
|
add
|
||||||
|
</button>
|
||||||
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tfoot>
|
</tfoot>
|
||||||
</table>
|
</table>
|
||||||
|
-->
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div mat-dialog-actions>
|
<div mat-dialog-actions>
|
||||||
|
@ -74,4 +134,4 @@
|
||||||
</mat-error>
|
</mat-error>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</form>
|
</form>
|
||||||
|
|
|
@ -1,23 +0,0 @@
|
||||||
import { ComponentFixture, TestBed } from '@angular/core/testing';
|
|
||||||
|
|
||||||
import { VocabulariesComponent } from './vocabularies.component';
|
|
||||||
|
|
||||||
describe('VocabulariesComponent', () => {
|
|
||||||
let component: VocabulariesComponent;
|
|
||||||
let fixture: ComponentFixture<VocabulariesComponent>;
|
|
||||||
|
|
||||||
beforeEach(async () => {
|
|
||||||
await TestBed.configureTestingModule({
|
|
||||||
declarations: [ VocabulariesComponent ]
|
|
||||||
})
|
|
||||||
.compileComponents();
|
|
||||||
|
|
||||||
fixture = TestBed.createComponent(VocabulariesComponent);
|
|
||||||
component = fixture.componentInstance;
|
|
||||||
fixture.detectChanges();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should create', () => {
|
|
||||||
expect(component).toBeTruthy();
|
|
||||||
});
|
|
||||||
});
|
|
|
@ -1,6 +1,6 @@
|
||||||
import { Component, Inject, AfterViewInit, OnInit, ViewChild } from '@angular/core';
|
import { Component, Inject, AfterViewInit, OnInit, ViewChild } from '@angular/core';
|
||||||
import { ISService } from '../is.service';
|
import { ISService } from '../is.service';
|
||||||
import { MatTableDataSource } from '@angular/material/table';
|
import { MatTable, MatTableDataSource } from '@angular/material/table';
|
||||||
import { MatSort, Sort } from '@angular/material/sort';
|
import { MatSort, Sort } from '@angular/material/sort';
|
||||||
import { Vocabulary, VocabularyTermSynonym } from '../model/controller.model';
|
import { Vocabulary, VocabularyTermSynonym } from '../model/controller.model';
|
||||||
import { ActivatedRoute, Params } from '@angular/router';
|
import { ActivatedRoute, Params } from '@angular/router';
|
||||||
|
@ -183,24 +183,35 @@ export class VocTermDialog {
|
||||||
termForm = new FormGroup({
|
termForm = new FormGroup({
|
||||||
code: new FormControl(''),
|
code: new FormControl(''),
|
||||||
name: new FormControl(''),
|
name: new FormControl(''),
|
||||||
encoding: new FormControl('')
|
encoding: new FormControl('OPENAIRE'),
|
||||||
|
tmpSynonymTerm: new FormControl(''),
|
||||||
|
tmpSynonymEncoding: new FormControl('OPENAIRE')
|
||||||
});
|
});
|
||||||
|
|
||||||
synonyms:VocabularyTermSynonym[] = [];
|
synonymsDatasource: MatTableDataSource<VocabularyTermSynonym> = new MatTableDataSource<VocabularyTermSynonym>([]);
|
||||||
tmpSynonym:VocabularyTermSynonym = { term: '', encoding: 'OPENAIRE' };
|
synonymColums: string[] = ['term', 'encoding', 'buttons'];
|
||||||
|
@ViewChild(MatTable) synonymsTable: MatTable<VocabularyTermSynonym> | undefined;
|
||||||
|
|
||||||
constructor(public dialogRef: MatDialogRef<VocDialog>, @Inject(MAT_DIALOG_DATA) public data: any, public service: ISService) {
|
constructor(public dialogRef: MatDialogRef<VocDialog>, @Inject(MAT_DIALOG_DATA) public data: any, public service: ISService) {
|
||||||
this.termForm.get('code')?.setValue(data.code);
|
this.termForm.get('code')?.setValue(data.code);
|
||||||
this.termForm.get('name')?.setValue(data.name);
|
this.termForm.get('name')?.setValue(data.name);
|
||||||
this.termForm.get('encoding')?.setValue(data.encoding);
|
this.termForm.get('encoding')?.setValue(data.encoding);
|
||||||
this.synonyms = data.synonyms;
|
this.synonymsDatasource.data = data.synonyms;
|
||||||
}
|
}
|
||||||
|
|
||||||
onSubmit(): void {
|
onSubmit(): void {
|
||||||
|
console.log('SUBMIT');
|
||||||
|
|
||||||
let oldCode = this.data.code;
|
let oldCode = this.data.code;
|
||||||
let voc = this.data.vocabulary;
|
let voc = this.data.vocabulary;
|
||||||
|
|
||||||
const term = Object.assign({}, this.data, this.termForm.value);
|
let term:VocabularyTerm = {
|
||||||
|
code : this.termForm.get('code')?.value!,
|
||||||
|
name : this.termForm.get('name')?.value!,
|
||||||
|
encoding : this.termForm.get('encoding')?.value!,
|
||||||
|
synonyms: this.synonymsDatasource.data,
|
||||||
|
vocabulary: voc
|
||||||
|
}
|
||||||
|
|
||||||
this.service.saveVocabularyTerm(voc, term, (data: void) => {
|
this.service.saveVocabularyTerm(voc, term, (data: void) => {
|
||||||
if (oldCode && oldCode != term.code) {
|
if (oldCode && oldCode != term.code) {
|
||||||
|
@ -210,12 +221,26 @@ export class VocTermDialog {
|
||||||
}
|
}
|
||||||
|
|
||||||
removeSynonym(pos:number) {
|
removeSynonym(pos:number) {
|
||||||
this.synonyms.splice(pos, 1);
|
this.synonymsDatasource.data.splice(pos, 1);
|
||||||
|
this.synonymsTable?.renderRows();
|
||||||
|
}
|
||||||
|
|
||||||
|
isNewSynonymValid(): boolean {
|
||||||
|
if (!this.termForm.get('tmpSynonymTerm')) return false;
|
||||||
|
if (!this.termForm.get('tmpSynonymEncoding')) return false;
|
||||||
|
if (this.termForm.get('tmpSynonymTerm')?.value?.trim().length == 0) return false;
|
||||||
|
if (this.termForm.get('tmpSynonymEncoding')?.value?.trim().length == 0) return false;
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
addSynonym() {
|
addSynonym() {
|
||||||
this.synonyms.push(Object.assign({}, this.tmpSynonym));
|
this.synonymsDatasource.data.push({
|
||||||
this.tmpSynonym = { term: '', encoding: 'OPENAIRE' };
|
term: this.termForm.get('tmpSynonymTerm')?.value!,
|
||||||
|
encoding: this.termForm.get('tmpSynonymEncoding')?.value!
|
||||||
|
});
|
||||||
|
this.termForm.get('tmpSynonymTerm')?.setValue('');
|
||||||
|
this.termForm.get('tmpSynonymEncoding')?.setValue('OPENAIRE');
|
||||||
|
this.synonymsTable?.renderRows();
|
||||||
}
|
}
|
||||||
|
|
||||||
onNoClick(): void {
|
onNoClick(): void {
|
||||||
|
|
|
@ -1,23 +0,0 @@
|
||||||
import { ComponentFixture, TestBed } from '@angular/core/testing';
|
|
||||||
|
|
||||||
import { WfHistoryComponent } from './wf-history.component';
|
|
||||||
|
|
||||||
describe('WfHistoryComponent', () => {
|
|
||||||
let component: WfHistoryComponent;
|
|
||||||
let fixture: ComponentFixture<WfHistoryComponent>;
|
|
||||||
|
|
||||||
beforeEach(async () => {
|
|
||||||
await TestBed.configureTestingModule({
|
|
||||||
declarations: [ WfHistoryComponent ]
|
|
||||||
})
|
|
||||||
.compileComponents();
|
|
||||||
|
|
||||||
fixture = TestBed.createComponent(WfHistoryComponent);
|
|
||||||
component = fixture.componentInstance;
|
|
||||||
fixture.detectChanges();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should create', () => {
|
|
||||||
expect(component).toBeTruthy();
|
|
||||||
});
|
|
||||||
});
|
|
Loading…
Reference in New Issue