From c52826b450ae41a3dc7f1ecb6b18860a1a8077f1 Mon Sep 17 00:00:00 2001 From: Sebastian Malton Date: Mon, 15 Aug 2022 14:59:05 -0400 Subject: [PATCH] Fix unit tests after introducing new injectables that have side effects Signed-off-by: Sebastian Malton --- ...location.global-override-for-injectable.ts | 12 ++++++++++ ...milliseconds-from-unix-epoch.injectable.ts | 2 +- .../test-utils/get-application-builder.tsx | 23 +++++++++++++++++-- .../cluster-frame/cluster-frame.test.tsx | 2 ++ 4 files changed, 36 insertions(+), 3 deletions(-) create mode 100644 src/common/k8s-api/window-location.global-override-for-injectable.ts diff --git a/src/common/k8s-api/window-location.global-override-for-injectable.ts b/src/common/k8s-api/window-location.global-override-for-injectable.ts new file mode 100644 index 0000000000..616e110c88 --- /dev/null +++ b/src/common/k8s-api/window-location.global-override-for-injectable.ts @@ -0,0 +1,12 @@ +/** + * Copyright (c) OpenLens Authors. All rights reserved. + * Licensed under MIT License. See LICENSE in root directory for more information. + */ + +import { getGlobalOverride } from "../test-utils/get-global-override"; +import windowLocationInjectable from "./window-location.injectable"; + +export default getGlobalOverride(windowLocationInjectable, () => ({ + host: "localhost", + port: "12345", +})); diff --git a/src/common/utils/date/get-milliseconds-from-unix-epoch.injectable.ts b/src/common/utils/date/get-milliseconds-from-unix-epoch.injectable.ts index 4179e14276..69a839ec65 100644 --- a/src/common/utils/date/get-milliseconds-from-unix-epoch.injectable.ts +++ b/src/common/utils/date/get-milliseconds-from-unix-epoch.injectable.ts @@ -5,7 +5,7 @@ import { getInjectable } from "@ogre-tools/injectable"; const getMillisecondsFromUnixEpochInjectable = getInjectable({ - id: "get-current-time", + id: "get-milliseconds-from-unix-epoch", instantiate: () => () => Date.now(), causesSideEffects: true, }); diff --git a/src/renderer/components/test-utils/get-application-builder.tsx b/src/renderer/components/test-utils/get-application-builder.tsx index f7e28c7b81..652b13889f 100644 --- a/src/renderer/components/test-utils/get-application-builder.tsx +++ b/src/renderer/components/test-utils/get-application-builder.tsx @@ -57,6 +57,7 @@ import activeKubernetesClusterInjectable from "../../cluster-frame-context/activ import { catalogEntityFromCluster } from "../../../main/cluster/manager"; import namespaceStoreInjectable from "../+namespaces/store.injectable"; import { isAllowedResource } from "../../../common/cluster/is-allowed-resource"; +import getMillisecondsFromUnixEpochInjectable from "../../../common/utils/date/get-milliseconds-from-unix-epoch.injectable"; import createApplicationWindowInjectable from "../../../main/start-main-application/lens-window/application-window/create-application-window.injectable"; import type { CreateElectronWindow } from "../../../main/start-main-application/lens-window/application-window/create-electron-window.injectable"; import createElectronWindowInjectable from "../../../main/start-main-application/lens-window/application-window/create-electron-window.injectable"; @@ -112,7 +113,12 @@ export interface ApplicationBuilder { applicationMenu: { click: (path: string) => void; }; - + time: { + advanceBy: { + seconds: (value: number) => void; + milliseconds: (value: number) => void; + }; + }; preferences: { close: () => void; navigate: () => void; @@ -189,6 +195,7 @@ export const getApplicationBuilder = () => { runInAction(() => { windowDi.register(rendererExtensionsStateInjectable); }); + windowDi.override(getMillisecondsFromUnixEpochInjectable, () => () => currentTimeMs); windowDi.override( currentlyInClusterFrameInjectable, @@ -244,10 +251,22 @@ export const getApplicationBuilder = () => { mainDi.override(createElectronWindowInjectable, () => createElectronWindowFake); let applicationHasStarted = false; + let currentTimeMs = Date.parse("2000-01-01 12:00:00am"); + + mainDi.override(getMillisecondsFromUnixEpochInjectable, () => () => currentTimeMs); const builder: ApplicationBuilder = { mainDi, - + time: { + advanceBy: { + milliseconds: (value) => { + currentTimeMs += value; + }, + seconds: (value) => { + currentTimeMs += (value * 1000); + }, + }, + }, applicationWindow: { closeAll: () => { const closeAll = mainDi.inject(closeAllWindowsInjectable); diff --git a/src/renderer/frames/cluster-frame/cluster-frame.test.tsx b/src/renderer/frames/cluster-frame/cluster-frame.test.tsx index 5ec0d0894f..3308f3871f 100644 --- a/src/renderer/frames/cluster-frame/cluster-frame.test.tsx +++ b/src/renderer/frames/cluster-frame/cluster-frame.test.tsx @@ -24,6 +24,7 @@ import currentRouteComponentInjectable from "../../routes/current-route-componen import allowedResourcesInjectable from "../../cluster-frame-context/allowed-resources.injectable"; import hostedClusterIdInjectable from "../../cluster-frame-context/hosted-cluster-id.injectable"; import hostedClusterInjectable from "../../cluster-frame-context/hosted-cluster.injectable"; +import getMillisecondsFromUnixEpochInjectable from "../../../common/utils/date/get-milliseconds-from-unix-epoch.injectable"; describe("", () => { let render: () => RenderResult; @@ -44,6 +45,7 @@ describe("", () => { di.override(legacyOnChannelListenInjectable, () => jest.fn().mockImplementation(() => jest.fn())); di.override(directoryForUserDataInjectable, () => "/some/irrelavent/path"); di.override(storesAndApisCanBeCreatedInjectable, () => true); + di.override(getMillisecondsFromUnixEpochInjectable, () => () => Date.parse("2000-01-01 12:00:00am")); const createCluster = di.inject(createClusterInjectable);