From 4c2ede5fde803f2f9f0fb2a7a14b0333cce486d5 Mon Sep 17 00:00:00 2001 From: paf <paf@titelfrei.de> Date: Thu, 8 Apr 2021 08:54:53 +0200 Subject: [PATCH] gets rid of all the warnings in unit tests most of them occured because of missing dependencies in the testingModule, some where console-outputs from backends.services (which are mocked now) --- src/app/app-root/app-root.component.spec.ts | 8 +++- .../group-monitor.component.spec.ts | 8 +++- .../superadmin/users/users.component.spec.ts | 28 +++++++++++++- .../workspaces/workspaces.component.spec.ts | 22 ++++++++++- .../network-check.component.spec.ts | 10 ++++- .../questionnaire/questionnaire.component.ts | 1 - .../sys-check/report/report.component.spec.ts | 10 ++++- src/app/sys-check/sys-check.module.ts | 4 +- .../files/files.component.spec.ts | 27 +++++++++++-- .../workspace-admin/files/files.component.ts | 26 ++++++------- .../results/results.component.spec.ts | 21 +++++++++- .../results/results.component.ts | 38 ++++++++++--------- .../syscheck/syscheck.component.spec.ts | 19 +++++++++- .../syscheck/syscheck.component.ts | 11 +++--- .../workspace-admin/workspace.module.spec.ts | 13 ------- 15 files changed, 180 insertions(+), 66 deletions(-) delete mode 100644 src/app/workspace-admin/workspace.module.spec.ts diff --git a/src/app/app-root/app-root.component.spec.ts b/src/app/app-root/app-root.component.spec.ts index f6bc82c8..5b324c69 100644 --- a/src/app/app-root/app-root.component.spec.ts +++ b/src/app/app-root/app-root.component.spec.ts @@ -1,4 +1,5 @@ import { async, ComponentFixture, TestBed } from '@angular/core/testing'; +import { RouterTestingModule } from '@angular/router/testing'; import { AppRootComponent } from './app-root.component'; describe('AppRootComponent', () => { @@ -7,7 +8,12 @@ describe('AppRootComponent', () => { beforeEach(async(() => { TestBed.configureTestingModule({ - declarations: [AppRootComponent] + declarations: [ + AppRootComponent + ], + imports: [ + RouterTestingModule + ] }) .compileComponents(); })); diff --git a/src/app/group-monitor/group-monitor.component.spec.ts b/src/app/group-monitor/group-monitor.component.spec.ts index 8066ea77..d336edf2 100644 --- a/src/app/group-monitor/group-monitor.component.spec.ts +++ b/src/app/group-monitor/group-monitor.component.spec.ts @@ -7,12 +7,14 @@ import { MatRadioModule } from '@angular/material/radio'; import { MatCheckboxModule } from '@angular/material/checkbox'; import { MatMenuModule } from '@angular/material/menu'; import { MatTooltipModule } from '@angular/material/tooltip'; +import { MatTableModule } from '@angular/material/table'; import { BehaviorSubject, Observable, of } from 'rxjs'; import { MatDialog, MatDialogModule } from '@angular/material/dialog'; import { RouterTestingModule } from '@angular/router/testing'; import { NoopAnimationsModule } from '@angular/platform-browser/animations'; import { CustomtextPipe } from 'iqb-components'; import { Pipe } from '@angular/core'; +import { MatSlideToggleModule } from '@angular/material/slide-toggle'; import { GroupMonitorComponent } from './group-monitor.component'; import { CheckingOptions, CommandResponse, @@ -28,6 +30,7 @@ import { unitTestExampleSessions, unitTestCommandResponse } from './test-data.spec'; +import { AlertModule } from '../shared/alert/alert.module'; class MockMatDialog { open(): { afterClosed: () => Observable<{ action: boolean }> } { @@ -98,7 +101,10 @@ describe('GroupMonitorComponent', () => { MatSidenavModule, NoopAnimationsModule, MatRadioModule, - MatCheckboxModule + MatCheckboxModule, + MatTableModule, + MatSlideToggleModule, + AlertModule ], providers: [ { provide: GroupMonitorService, useValue: new MockGroupMonitorService() }, diff --git a/src/app/superadmin/users/users.component.spec.ts b/src/app/superadmin/users/users.component.spec.ts index d3cc2381..642a851f 100644 --- a/src/app/superadmin/users/users.component.spec.ts +++ b/src/app/superadmin/users/users.component.spec.ts @@ -2,9 +2,27 @@ import { async, ComponentFixture, TestBed } from '@angular/core/testing'; import { HttpClientModule } from '@angular/common/http'; import { MatDialogModule } from '@angular/material/dialog'; import { MatSnackBarModule } from '@angular/material/snack-bar'; +import { MatTableModule } from '@angular/material/table'; +import { MatCheckboxModule } from '@angular/material/checkbox'; +import { MatIconModule } from '@angular/material/icon'; +import { Observable, of } from 'rxjs'; import { BackendService } from '../backend.service'; import { UsersComponent } from './users.component'; import { MainDataService } from '../../maindata.service'; +import { UserData } from '../superadmin.interfaces'; + +class MockBackendService { + // eslint-disable-next-line class-methods-use-this + getUsers(): Observable<UserData[]> { + return of([{ + id: 0, + name: 'agent 00', + email: 'agent@doublezero.de', + isSuperadmin: true, + selected: true + }]); + } +} describe('UsersComponent', () => { let component: UsersComponent; @@ -16,10 +34,16 @@ describe('UsersComponent', () => { imports: [ HttpClientModule, MatDialogModule, - MatSnackBarModule + MatSnackBarModule, + MatTableModule, + MatCheckboxModule, + MatIconModule ], providers: [ - BackendService, + { + provide: BackendService, + useValue: new MockBackendService() + }, MainDataService ] }) diff --git a/src/app/superadmin/workspaces/workspaces.component.spec.ts b/src/app/superadmin/workspaces/workspaces.component.spec.ts index e6392576..0b3d9ade 100644 --- a/src/app/superadmin/workspaces/workspaces.component.spec.ts +++ b/src/app/superadmin/workspaces/workspaces.component.spec.ts @@ -2,9 +2,21 @@ import { async, ComponentFixture, TestBed } from '@angular/core/testing'; import { HttpClientModule } from '@angular/common/http'; import { MatDialogModule } from '@angular/material/dialog'; import { MatSnackBarModule } from '@angular/material/snack-bar'; +import { MatTableModule } from '@angular/material/table'; +import { MatCheckboxModule } from '@angular/material/checkbox'; +import { MatIconModule } from '@angular/material/icon'; +import { Observable, of } from 'rxjs'; import { BackendService } from '../backend.service'; import { WorkspacesComponent } from './workspaces.component'; import { MainDataService } from '../../maindata.service'; +import { IdAndName } from '../superadmin.interfaces'; + +class MockBackendService { + // eslint-disable-next-line class-methods-use-this + getWorkspaces(): Observable<IdAndName[]> { + return of([{ id: 1, name: 'a workspace' }]); + } +} describe('WorkspacesComponent', () => { let component: WorkspacesComponent; @@ -16,10 +28,16 @@ describe('WorkspacesComponent', () => { imports: [ HttpClientModule, MatDialogModule, - MatSnackBarModule + MatSnackBarModule, + MatTableModule, + MatCheckboxModule, + MatIconModule ], providers: [ - BackendService, + { + provide: BackendService, + useValue: new MockBackendService() + }, MainDataService ] }) diff --git a/src/app/sys-check/network-check/network-check.component.spec.ts b/src/app/sys-check/network-check/network-check.component.spec.ts index f801084e..f6c9e904 100644 --- a/src/app/sys-check/network-check/network-check.component.spec.ts +++ b/src/app/sys-check/network-check/network-check.component.spec.ts @@ -1,7 +1,9 @@ import { async, ComponentFixture, TestBed } from '@angular/core/testing'; import { HttpClientModule } from '@angular/common/http'; +import { MatCardModule } from '@angular/material/card'; import { NetworkCheckComponent } from './network-check.component'; import { BackendService } from '../backend.service'; +import { TcSpeedChartComponent } from './tc-speed-chart.component'; describe('NetworkCheckComponent', () => { let component: NetworkCheckComponent; @@ -9,9 +11,13 @@ describe('NetworkCheckComponent', () => { beforeEach(async(() => { TestBed.configureTestingModule({ - declarations: [NetworkCheckComponent], + declarations: [ + NetworkCheckComponent, + TcSpeedChartComponent + ], imports: [ - HttpClientModule + HttpClientModule, + MatCardModule ], providers: [ BackendService diff --git a/src/app/sys-check/questionnaire/questionnaire.component.ts b/src/app/sys-check/questionnaire/questionnaire.component.ts index 461d7d97..b326192e 100644 --- a/src/app/sys-check/questionnaire/questionnaire.component.ts +++ b/src/app/sys-check/questionnaire/questionnaire.component.ts @@ -1,6 +1,5 @@ import { FormControl, FormGroup } from '@angular/forms'; import { Component, OnInit, OnDestroy } from '@angular/core'; -import { CustomtextService } from 'iqb-components'; import { Subscription } from 'rxjs'; import { SysCheckDataService } from '../sys-check-data.service'; diff --git a/src/app/sys-check/report/report.component.spec.ts b/src/app/sys-check/report/report.component.spec.ts index 866f05e3..32d41cd1 100644 --- a/src/app/sys-check/report/report.component.spec.ts +++ b/src/app/sys-check/report/report.component.spec.ts @@ -2,6 +2,8 @@ import { async, ComponentFixture, TestBed } from '@angular/core/testing'; import { HttpClientModule } from '@angular/common/http'; import { MatDialogModule } from '@angular/material/dialog'; import { MatSnackBarModule } from '@angular/material/snack-bar'; +import { MatCardModule } from '@angular/material/card'; +import { RouterTestingModule } from '@angular/router/testing'; import { ReportComponent } from './report.component'; import { BackendService } from '../backend.service'; @@ -11,11 +13,15 @@ describe('ReportComponent', () => { beforeEach(async(() => { TestBed.configureTestingModule({ - declarations: [ReportComponent], + declarations: [ + ReportComponent + ], imports: [ HttpClientModule, MatDialogModule, - MatSnackBarModule + MatSnackBarModule, + MatCardModule, + RouterTestingModule ], providers: [ BackendService diff --git a/src/app/sys-check/sys-check.module.ts b/src/app/sys-check/sys-check.module.ts index 7949572f..66e54432 100644 --- a/src/app/sys-check/sys-check.module.ts +++ b/src/app/sys-check/sys-check.module.ts @@ -18,6 +18,7 @@ import { MatRadioModule } from '@angular/material/radio'; import { MatSelectModule } from '@angular/material/select'; import { MatSnackBarModule } from '@angular/material/snack-bar'; import { MatStepperModule } from '@angular/material/stepper'; +import { RouterModule } from '@angular/router'; import { TcSpeedChartComponent } from './network-check/tc-speed-chart.component'; import { SaveReportComponent } from './report/save-report/save-report.component'; import { ReportComponent } from './report/report.component'; @@ -51,7 +52,8 @@ import { SysCheckDataService } from './sys-check-data.service'; MatTooltipModule, ReactiveFormsModule, SysCheckRoutingModule, - IqbComponentsModule.forChild() + IqbComponentsModule.forChild(), + RouterModule ], declarations: [ SysCheckComponent, diff --git a/src/app/workspace-admin/files/files.component.spec.ts b/src/app/workspace-admin/files/files.component.spec.ts index 8cae0d74..dd70a8cd 100644 --- a/src/app/workspace-admin/files/files.component.spec.ts +++ b/src/app/workspace-admin/files/files.component.spec.ts @@ -1,15 +1,31 @@ import { async, ComponentFixture, TestBed } from '@angular/core/testing'; import { HttpClientModule } from '@angular/common/http'; +import { MatExpansionModule } from '@angular/material/expansion'; import { MatDialogModule } from '@angular/material/dialog'; import { MatSnackBarModule } from '@angular/material/snack-bar'; import { MatTableModule } from '@angular/material/table'; import { MatCheckboxModule } from '@angular/material/checkbox'; import { MatIconModule } from '@angular/material/icon'; +import { Observable, of } from 'rxjs'; import { FilesComponent } from './files.component'; import { BackendService } from '../backend.service'; import { WorkspaceDataService } from '../workspacedata.service'; import { MainDataService } from '../../maindata.service'; -import { IqbFilesUploadQueueComponent } from './iqb-files'; +import { IqbFilesUploadQueueComponent, IqbFilesUploadInputForDirective } from './iqb-files'; +import { GetFileResponseData } from '../workspace.interfaces'; + +class MockBackendService { + // eslint-disable-next-line class-methods-use-this + getFiles(): Observable<GetFileResponseData> { + return of({ + Unit: [], + Testtakers: [], + SysCheck: [], + Booklet: [], + Resource: [] + }); + } +} describe('FilesComponent', () => { let component: FilesComponent; @@ -19,10 +35,12 @@ describe('FilesComponent', () => { TestBed.configureTestingModule({ declarations: [ FilesComponent, - IqbFilesUploadQueueComponent + IqbFilesUploadQueueComponent, + IqbFilesUploadInputForDirective ], imports: [ HttpClientModule, + MatExpansionModule, MatDialogModule, MatSnackBarModule, MatTableModule, @@ -30,7 +48,10 @@ describe('FilesComponent', () => { MatCheckboxModule ], providers: [ - BackendService, + { + provide: BackendService, + useValue: new MockBackendService() + }, WorkspaceDataService, MainDataService ] diff --git a/src/app/workspace-admin/files/files.component.ts b/src/app/workspace-admin/files/files.component.ts index 1e78ae9a..6a9713df 100644 --- a/src/app/workspace-admin/files/files.component.ts +++ b/src/app/workspace-admin/files/files.component.ts @@ -36,19 +36,19 @@ interface FileStats { styleUrls: ['./files.component.css'] }) export class FilesComponent implements OnInit { - public files: {[type in IQBFileType]?: MatTableDataSource<IQBFile>} = {}; - public fileTypes = IQBFileTypes; - public displayedColumns = ['checked', 'name', 'size', 'modificationTime']; + files: { [type in IQBFileType]?: MatTableDataSource<IQBFile> } = {}; + fileTypes = IQBFileTypes; + displayedColumns = ['checked', 'name', 'size', 'modificationTime']; - public uploadUrl = ''; - public fileNameAlias = 'fileforvo'; + uploadUrl = ''; + fileNameAlias = 'fileforvo'; - public lastSort:Sort = { + lastSort:Sort = { active: 'name', direction: 'asc' }; - public typeLabels = { + typeLabels = { Testtakers: 'Teilnehmerlisten', Booklet: 'Testhefte', SysCheck: 'System-Check-Definitionen', @@ -56,7 +56,7 @@ export class FilesComponent implements OnInit { Unit: 'Units' }; - public fileStats: FileStats = { + fileStats: FileStats = { total: { count: 0, invalid: 0 @@ -65,7 +65,7 @@ export class FilesComponent implements OnInit { testtakers: 0 }; - @ViewChild('fileUploadQueue', { static: true }) public uploadQueue: IqbFilesUploadQueueComponent; + @ViewChild('fileUploadQueue', { static: true }) uploadQueue: IqbFilesUploadQueueComponent; constructor( @Inject('SERVER_URL') private serverUrl: string, @@ -86,14 +86,14 @@ export class FilesComponent implements OnInit { }); } - public checkAll(isChecked: boolean, type: IQBFileType): void { + checkAll(isChecked: boolean, type: IQBFileType): void { this.files[type].data = this.files[type].data.map(file => { file.isChecked = isChecked; return file; }); } - public deleteFiles(): void { + deleteFiles(): void { if (this.wds.wsRole !== 'RW') { return; } @@ -148,7 +148,7 @@ export class FilesComponent implements OnInit { } } - public updateFileList(empty = false): void { + updateFileList(empty = false): void { if (empty) { this.files = {}; this.mds.setSpinnerOff(); @@ -218,7 +218,7 @@ export class FilesComponent implements OnInit { return file; } - public download(file: IQBFile): void { + download(file: IQBFile): void { this.mds.setSpinnerOn(); this.bs.downloadFile(file.type, file.name) .subscribe( diff --git a/src/app/workspace-admin/results/results.component.spec.ts b/src/app/workspace-admin/results/results.component.spec.ts index 2c9b47b6..ca89455a 100644 --- a/src/app/workspace-admin/results/results.component.spec.ts +++ b/src/app/workspace-admin/results/results.component.spec.ts @@ -5,9 +5,25 @@ import { MatSnackBarModule } from '@angular/material/snack-bar'; import { MatIconModule } from '@angular/material/icon'; import { MatTableModule } from '@angular/material/table'; import { MatCheckboxModule } from '@angular/material/checkbox'; +import { Observable, of } from 'rxjs'; import { ResultsComponent } from './results.component'; import { BackendService } from '../backend.service'; import { WorkspaceDataService } from '../workspacedata.service'; +import { ResultData } from '../workspace.interfaces'; + +class MockBackendService { + // eslint-disable-next-line class-methods-use-this + getResultData(): Observable<ResultData[]> { + return of([{ + groupname: 'a_group', + bookletsStarted: 5, + num_units_min: 5, + num_units_max: 10, + num_units_mean: 7.5, + lastchange: 100080050 + }]); + } +} describe('ResultsComponent', () => { let component: ResultsComponent; @@ -25,7 +41,10 @@ describe('ResultsComponent', () => { MatCheckboxModule ], providers: [ - BackendService, + { + provide: BackendService, + useValue: new MockBackendService() + }, WorkspaceDataService ] }) diff --git a/src/app/workspace-admin/results/results.component.ts b/src/app/workspace-admin/results/results.component.ts index 6c71d07c..15d2f17d 100644 --- a/src/app/workspace-admin/results/results.component.ts +++ b/src/app/workspace-admin/results/results.component.ts @@ -1,15 +1,16 @@ -import { LogData } from '../workspace.interfaces'; -import { WorkspaceDataService } from '../workspacedata.service'; import { ConfirmDialogComponent, ConfirmDialogData } from 'iqb-components'; import { Component, OnInit, ViewChild } from '@angular/core'; -import { BackendService } from '../backend.service'; import { MatDialog } from '@angular/material/dialog'; import { MatSnackBar } from '@angular/material/snack-bar'; import { MatSort } from '@angular/material/sort'; import { MatTableDataSource } from '@angular/material/table'; import { SelectionModel } from '@angular/cdk/collections'; import { saveAs } from 'file-saver'; -import { ResultData, UnitResponse, ReviewData } from '../workspace.interfaces'; +import { BackendService } from '../backend.service'; +import { WorkspaceDataService } from '../workspacedata.service'; +import { + LogData, ResultData, UnitResponse, ReviewData +} from '../workspace.interfaces'; import { MainDataService } from '../../maindata.service'; @Component({ @@ -17,10 +18,13 @@ import { MainDataService } from '../../maindata.service'; styleUrls: ['./results.component.css'] }) export class ResultsComponent implements OnInit { - displayedColumns: string[] = ['selectCheckbox', 'groupname', 'bookletsStarted', 'num_units_min', 'num_units_max', 'num_units_mean', 'lastchange']; - public resultDataSource = new MatTableDataSource<ResultData>([]); + displayedColumns: string[] = [ + 'selectCheckbox', 'groupname', 'bookletsStarted', 'num_units_min', 'num_units_max', 'num_units_mean', 'lastchange' + ]; + + resultDataSource = new MatTableDataSource<ResultData>([]); // prepared for selection if needed sometime - public tableselectionCheckbox = new SelectionModel<ResultData>(true, []); + tableselectionCheckbox = new SelectionModel<ResultData>(true, []); @ViewChild(MatSort, { static: true }) sort: MatSort; @@ -32,14 +36,14 @@ export class ResultsComponent implements OnInit { public snackBar: MatSnackBar ) { } - ngOnInit() { + ngOnInit(): void { setTimeout(() => { this.mds.setSpinnerOn(); this.updateTable(); }); } - updateTable() { + updateTable(): void { this.tableselectionCheckbox.clear(); if (this.wds.wsRole === 'MO') { this.resultDataSource = new MatTableDataSource<ResultData>([]); @@ -55,19 +59,19 @@ export class ResultsComponent implements OnInit { } } - isAllSelected() { + isAllSelected(): boolean { const numSelected = this.tableselectionCheckbox.selected.length; const numRows = this.resultDataSource.data.length; return numSelected === numRows; } - masterToggle() { + masterToggle(): void { this.isAllSelected() ? - this.tableselectionCheckbox.clear() : - this.resultDataSource.data.forEach(row => this.tableselectionCheckbox.select(row)); + this.tableselectionCheckbox.clear() : + this.resultDataSource.data.forEach(row => this.tableselectionCheckbox.select(row)); } - downloadResponsesCSV() { + downloadResponsesCSV(): void { if (this.tableselectionCheckbox.selected.length > 0) { const selectedGroups: string[] = []; this.tableselectionCheckbox.selected.forEach(element => { @@ -129,7 +133,7 @@ export class ResultsComponent implements OnInit { } } - downloadReviewsCSV() { + downloadReviewsCSV(): void { if (this.tableselectionCheckbox.selected.length > 0) { const selectedGroups: string[] = []; this.tableselectionCheckbox.selected.forEach(element => { @@ -190,7 +194,7 @@ export class ResultsComponent implements OnInit { } } - downloadLogsCSV() { + downloadLogsCSV(): void { if (this.tableselectionCheckbox.selected.length > 0) { const selectedGroups: string[] = []; this.tableselectionCheckbox.selected.forEach(element => { @@ -223,7 +227,7 @@ export class ResultsComponent implements OnInit { } } - deleteData() { + deleteData(): void { if (this.tableselectionCheckbox.selected.length > 0) { const selectedGroups: string[] = []; this.tableselectionCheckbox.selected.forEach(element => { diff --git a/src/app/workspace-admin/syscheck/syscheck.component.spec.ts b/src/app/workspace-admin/syscheck/syscheck.component.spec.ts index 9b4c9eee..66f9a1ee 100644 --- a/src/app/workspace-admin/syscheck/syscheck.component.spec.ts +++ b/src/app/workspace-admin/syscheck/syscheck.component.spec.ts @@ -5,9 +5,23 @@ import { MatSnackBarModule } from '@angular/material/snack-bar'; import { MatIconModule } from '@angular/material/icon'; import { MatTableModule } from '@angular/material/table'; import { MatCheckboxModule } from '@angular/material/checkbox'; +import { Observable, of } from 'rxjs'; import { SyscheckComponent } from './syscheck.component'; import { BackendService } from '../backend.service'; import { WorkspaceDataService } from '../workspacedata.service'; +import { SysCheckStatistics } from '../workspace.interfaces'; + +class MockBackendService { + // eslint-disable-next-line class-methods-use-this + getSysCheckReportList(): Observable<SysCheckStatistics[]> { + return of([{ + id: 'sys-check-id', + label: 'a sys check', + count: 123, + details: [] + }]); + } +} describe('Workspace-Admin: SyscheckComponent', () => { let component: SyscheckComponent; @@ -25,7 +39,10 @@ describe('Workspace-Admin: SyscheckComponent', () => { MatCheckboxModule ], providers: [ - BackendService, + { + provide: BackendService, + useValue: new MockBackendService() + }, WorkspaceDataService ] }) diff --git a/src/app/workspace-admin/syscheck/syscheck.component.ts b/src/app/workspace-admin/syscheck/syscheck.component.ts index e08f22be..94c51338 100644 --- a/src/app/workspace-admin/syscheck/syscheck.component.ts +++ b/src/app/workspace-admin/syscheck/syscheck.component.ts @@ -31,14 +31,14 @@ export class SyscheckComponent implements OnInit { ) { } - ngOnInit() { + ngOnInit(): void { setTimeout(() => { this.mds.setSpinnerOn(); this.updateTable(); }); } - updateTable() { + updateTable(): void { this.tableselectionCheckbox.clear(); this.bs.getSysCheckReportList().subscribe( (resultData: SysCheckStatistics[]) => { @@ -57,12 +57,11 @@ export class SyscheckComponent implements OnInit { masterToggle(): void { this.isAllSelected() ? - this.tableselectionCheckbox.clear() : - this.resultDataSource.data.forEach(row => this.tableselectionCheckbox.select(row)); + this.tableselectionCheckbox.clear() : + this.resultDataSource.data.forEach(row => this.tableselectionCheckbox.select(row)); } - - downloadReportsCSV() { + downloadReportsCSV(): void { if (this.tableselectionCheckbox.selected.length > 0) { const selectedReports: string[] = []; this.tableselectionCheckbox.selected.forEach(element => { diff --git a/src/app/workspace-admin/workspace.module.spec.ts b/src/app/workspace-admin/workspace.module.spec.ts deleted file mode 100644 index b88c8018..00000000 --- a/src/app/workspace-admin/workspace.module.spec.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { WorkspaceModule } from './workspace.module'; - -describe('WorkspaceModule', () => { - let workspaceModule: WorkspaceModule; - - beforeEach(() => { - workspaceModule = new WorkspaceModule(); - }); - - it('should create an instance', () => { - expect(workspaceModule).toBeTruthy(); - }); -}); -- GitLab