From fcd71a001b401608216ec4e1db47150ad0dbc1be Mon Sep 17 00:00:00 2001 From: jourdiw Date: Tue, 21 Jan 2025 09:47:44 +0100 Subject: [PATCH] test(portal-next): fix tests --- gravitee-apim-portal-webui-next/setup-jest.ts | 11 +++++++++-- .../application-log-table.component.spec.ts | 2 +- .../src/components/search-bar/search-bar.component.ts | 7 +++++-- .../src/services/application-log.service.ts | 4 ++-- 4 files changed, 17 insertions(+), 7 deletions(-) diff --git a/gravitee-apim-portal-webui-next/setup-jest.ts b/gravitee-apim-portal-webui-next/setup-jest.ts index 5bc9457e68d..0bb88ba3d0d 100644 --- a/gravitee-apim-portal-webui-next/setup-jest.ts +++ b/gravitee-apim-portal-webui-next/setup-jest.ts @@ -1,5 +1,7 @@ -import 'jest-preset-angular/setup-jest'; import '@angular/localize/init'; +import { setupZoneTestEnv } from 'jest-preset-angular/setup-env/zone'; + +setupZoneTestEnv(); // mocking swagger-ui for tests as it contains some JS incompatible with Jest // This means we will not be able to test Swagger in our components tests @@ -7,4 +9,9 @@ jest.mock('swagger-ui', () => jest.fn(() => ({ initOAuth: () => jest.fn() }))); // Set the mock date globally for all tests const MOCK_DATE = new Date(1466424490000); // UTC Time: Mon Jun 20 2016 12:08:10.000 -jest.useFakeTimers({ advanceTimers: true }).setSystemTime(MOCK_DATE); + +// Need to define advanceTimers for async calls +jest.useFakeTimers({ advanceTimers: 1, now: MOCK_DATE }); // advance 1ms every 10ms + +// Mock Date.now() so that it always returns the same date +Date.now = jest.fn(() => MOCK_DATE.getTime()); diff --git a/gravitee-apim-portal-webui-next/src/app/applications/application/application-tab-logs/application-log-table/application-log-table.component.spec.ts b/gravitee-apim-portal-webui-next/src/app/applications/application/application-tab-logs/application-log-table/application-log-table.component.spec.ts index 6895b7d9b9f..91126294022 100644 --- a/gravitee-apim-portal-webui-next/src/app/applications/application/application-tab-logs/application-log-table/application-log-table.component.spec.ts +++ b/gravitee-apim-portal-webui-next/src/app/applications/application/application-tab-logs/application-log-table/application-log-table.component.spec.ts @@ -1139,7 +1139,7 @@ describe('ApplicationLogTableComponent', () => { }); function expectGetApplicationLogs(logsResponse: LogsResponse, page: number = 1, query?: string, to?: number, from?: number) { - const toInMilliseconds = to ?? new Date().getTime(); + const toInMilliseconds = to ?? Date.now(); const fromInMilliseconds = from ?? toInMilliseconds - 86400000; httpTestingController .expectOne( diff --git a/gravitee-apim-portal-webui-next/src/components/search-bar/search-bar.component.ts b/gravitee-apim-portal-webui-next/src/components/search-bar/search-bar.component.ts index 003d0c07dda..ab48eb9e55b 100644 --- a/gravitee-apim-portal-webui-next/src/components/search-bar/search-bar.component.ts +++ b/gravitee-apim-portal-webui-next/src/components/search-bar/search-bar.component.ts @@ -13,7 +13,8 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { Component, effect, input, OnInit, output } from '@angular/core'; +import { Component, DestroyRef, effect, inject, input, OnInit, output } from '@angular/core'; +import { takeUntilDestroyed } from '@angular/core/rxjs-interop'; import { FormControl, FormsModule, ReactiveFormsModule } from '@angular/forms'; import { MatButtonModule } from '@angular/material/button'; import { MatFormFieldModule } from '@angular/material/form-field'; @@ -33,6 +34,8 @@ export class SearchBarComponent implements OnInit { searchTerm = output(); searchControl: FormControl = new FormControl(``, { nonNullable: true }); + private destroyRef = inject(DestroyRef); + constructor() { effect(() => { this.searchControl.setValue(this.searchParam()); @@ -40,7 +43,7 @@ export class SearchBarComponent implements OnInit { } ngOnInit() { - this.searchControl.valueChanges.pipe(debounceTime(300), distinctUntilChanged()).subscribe(term => { + this.searchControl.valueChanges.pipe(debounceTime(300), distinctUntilChanged(), takeUntilDestroyed(this.destroyRef)).subscribe(term => { this.searchTerm.emit(term); }); } diff --git a/gravitee-apim-portal-webui-next/src/services/application-log.service.ts b/gravitee-apim-portal-webui-next/src/services/application-log.service.ts index 807602eb455..b5783866c8d 100644 --- a/gravitee-apim-portal-webui-next/src/services/application-log.service.ts +++ b/gravitee-apim-portal-webui-next/src/services/application-log.service.ts @@ -70,12 +70,12 @@ export class ApplicationLogService { paramsList.push(`page=${params.page ?? 1}`); paramsList.push(`size=${params.size ?? 10}`); - const currentDate = new Date(); + const currentDate = Date.now(); const yesterdayDate = new Date(); yesterdayDate.setDate(yesterdayDate.getDate() - 1); paramsList.push(`from=${params.from ?? yesterdayDate.getTime()}`); - paramsList.push(`to=${params.to ?? currentDate.getTime()}`); + paramsList.push(`to=${params.to ?? currentDate}`); paramsList.push(`order=${params.order ?? 'DESC'}`); paramsList.push(`field=${params.field ?? '@timestamp'}`);