From 15f696a0b60406d096db78b8414c4377c08b0d20 Mon Sep 17 00:00:00 2001 From: appel_c Date: Thu, 13 Feb 2025 16:20:51 +0100 Subject: [PATCH] test: add tests for scan-table --- .../scan-table/scan-table.component.spec.ts | 62 ++++++++++++++++--- 1 file changed, 52 insertions(+), 10 deletions(-) diff --git a/frontend/bec_atlas/src/app/scan-table/scan-table.component.spec.ts b/frontend/bec_atlas/src/app/scan-table/scan-table.component.spec.ts index 9ab5efb..48960be 100644 --- a/frontend/bec_atlas/src/app/scan-table/scan-table.component.spec.ts +++ b/frontend/bec_atlas/src/app/scan-table/scan-table.component.spec.ts @@ -1,21 +1,38 @@ -import { ComponentFixture, TestBed } from '@angular/core/testing'; +import { ComponentFixture, TestBed} from '@angular/core/testing'; import { ScanTableComponent } from './scan-table.component'; -import { provideHttpClient } from '@angular/common/http'; -import { provideHttpClientTesting } from '@angular/common/http/testing'; -import { AppConfigService } from '../app-config.service'; -import { provideAnimationsAsync } from '@angular/platform-browser/animations/async'; +import { provideAnimationsAsync} from '@angular/platform-browser/animations/async'; +import {ScanDataService, SessionDataService} from '../core/remote-data.service'; +import { MatDialogModule } from '@angular/material/dialog'; +import { MatTableModule } from '@angular/material/table'; +import { MatPaginatorModule } from '@angular/material/paginator'; describe('ScanTableComponent', () => { let component: ScanTableComponent; let fixture: ComponentFixture; + let scanDataServiceMock: any; + let sessionDataServiceMock: any; beforeEach(async () => { + + sessionDataServiceMock = jasmine.createSpyObj('SessionDataService', ['getSessions']); + sessionDataServiceMock.getSessions.and.returnValue(Promise.resolve([{ _id: '1', name: 'test'}])); + scanDataServiceMock = jasmine.createSpyObj('ScanDataService', ['getScanData', 'getScanCount']); + scanDataServiceMock.getScanCount.and.returnValue(Promise.resolve({count: 5})); + scanDataServiceMock.getScanData.and.returnValue(Promise.resolve([ + { scan_id: '1', scan_number: 1, status: 'open'}, + { scan_id: '2', scan_number: 2, status: 'closed'}, + { scan_id: '3', scan_number: 3, status: 'closed'}, + { scan_id: '4', scan_number: 4, status: 'closed'}, + { scan_id: '5', scan_number: 5, status: 'closed'} + ])); + await TestBed.configureTestingModule({ + imports: [MatTableModule, MatPaginatorModule, MatDialogModule], providers: [ - provideHttpClient(), - provideHttpClientTesting(), provideAnimationsAsync(), - AppConfigService, + // { provide: ScanDataService, useValue: MockScanDataService }, + { provide: SessionDataService, useValue: sessionDataServiceMock }, + { provide: ScanDataService, useValue: scanDataServiceMock }, ], }).compileComponents(); }); @@ -26,9 +43,34 @@ describe('ScanTableComponent', () => { fixture.detectChanges(); }); - it('should create', () => { + it('should create', async () => { + await fixture.whenStable(); expect(component).toBeTruthy(); }); - // Add more tests here + it('should select sessionId', async () => { + await fixture.whenStable(); + component.onSessionChange({ _id: '1', name: 'test'}); + await fixture.whenStable(); + expect(component.session()).toEqual({ _id: '1', name: 'test'}); + }); + + it('should get scan data', async () => { + component.displayedColumns.set(['scan_id', 'scan_number', 'status']); + // await fixture.whenRenderingDone(); + component.onSessionChange({ _id: '1', name: 'test'}); + await fixture.detectChanges(); + expect(component.totalScanCount()).toEqual(5); + expect(component.tableData().length).toEqual(5); + }); + + it('should handle offset and limit changes', async () => { + let columns = ['scan_id', 'scan_number', 'status']; + component.displayedColumns.set(columns); + component.onSessionChange({ _id: '1', name: 'test'}); + component.offset.set(4); + component.limit.set(1); + await fixture.detectChanges(); + expect(scanDataServiceMock.getScanData).toHaveBeenCalledWith('1', 4, 1, columns, false, { scan_number: component.sorting }); + }); });