1
0
mirror of https://github.com/lensapp/lens.git synced 2025-05-20 05:10:56 +00:00

Fix unit tests after introducing new injectables that have side effects

Signed-off-by: Sebastian Malton <sebastian@malton.name>
This commit is contained in:
Sebastian Malton 2022-08-15 14:59:05 -04:00
parent 735cc8e7af
commit c52826b450
4 changed files with 36 additions and 3 deletions

View File

@ -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",
}));

View File

@ -5,7 +5,7 @@
import { getInjectable } from "@ogre-tools/injectable"; import { getInjectable } from "@ogre-tools/injectable";
const getMillisecondsFromUnixEpochInjectable = getInjectable({ const getMillisecondsFromUnixEpochInjectable = getInjectable({
id: "get-current-time", id: "get-milliseconds-from-unix-epoch",
instantiate: () => () => Date.now(), instantiate: () => () => Date.now(),
causesSideEffects: true, causesSideEffects: true,
}); });

View File

@ -57,6 +57,7 @@ import activeKubernetesClusterInjectable from "../../cluster-frame-context/activ
import { catalogEntityFromCluster } from "../../../main/cluster/manager"; import { catalogEntityFromCluster } from "../../../main/cluster/manager";
import namespaceStoreInjectable from "../+namespaces/store.injectable"; import namespaceStoreInjectable from "../+namespaces/store.injectable";
import { isAllowedResource } from "../../../common/cluster/is-allowed-resource"; 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 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 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"; import createElectronWindowInjectable from "../../../main/start-main-application/lens-window/application-window/create-electron-window.injectable";
@ -112,7 +113,12 @@ export interface ApplicationBuilder {
applicationMenu: { applicationMenu: {
click: (path: string) => void; click: (path: string) => void;
}; };
time: {
advanceBy: {
seconds: (value: number) => void;
milliseconds: (value: number) => void;
};
};
preferences: { preferences: {
close: () => void; close: () => void;
navigate: () => void; navigate: () => void;
@ -189,6 +195,7 @@ export const getApplicationBuilder = () => {
runInAction(() => { runInAction(() => {
windowDi.register(rendererExtensionsStateInjectable); windowDi.register(rendererExtensionsStateInjectable);
}); });
windowDi.override(getMillisecondsFromUnixEpochInjectable, () => () => currentTimeMs);
windowDi.override( windowDi.override(
currentlyInClusterFrameInjectable, currentlyInClusterFrameInjectable,
@ -244,10 +251,22 @@ export const getApplicationBuilder = () => {
mainDi.override(createElectronWindowInjectable, () => createElectronWindowFake); mainDi.override(createElectronWindowInjectable, () => createElectronWindowFake);
let applicationHasStarted = false; let applicationHasStarted = false;
let currentTimeMs = Date.parse("2000-01-01 12:00:00am");
mainDi.override(getMillisecondsFromUnixEpochInjectable, () => () => currentTimeMs);
const builder: ApplicationBuilder = { const builder: ApplicationBuilder = {
mainDi, mainDi,
time: {
advanceBy: {
milliseconds: (value) => {
currentTimeMs += value;
},
seconds: (value) => {
currentTimeMs += (value * 1000);
},
},
},
applicationWindow: { applicationWindow: {
closeAll: () => { closeAll: () => {
const closeAll = mainDi.inject(closeAllWindowsInjectable); const closeAll = mainDi.inject(closeAllWindowsInjectable);

View File

@ -24,6 +24,7 @@ import currentRouteComponentInjectable from "../../routes/current-route-componen
import allowedResourcesInjectable from "../../cluster-frame-context/allowed-resources.injectable"; import allowedResourcesInjectable from "../../cluster-frame-context/allowed-resources.injectable";
import hostedClusterIdInjectable from "../../cluster-frame-context/hosted-cluster-id.injectable"; import hostedClusterIdInjectable from "../../cluster-frame-context/hosted-cluster-id.injectable";
import hostedClusterInjectable from "../../cluster-frame-context/hosted-cluster.injectable"; import hostedClusterInjectable from "../../cluster-frame-context/hosted-cluster.injectable";
import getMillisecondsFromUnixEpochInjectable from "../../../common/utils/date/get-milliseconds-from-unix-epoch.injectable";
describe("<ClusterFrame />", () => { describe("<ClusterFrame />", () => {
let render: () => RenderResult; let render: () => RenderResult;
@ -44,6 +45,7 @@ describe("<ClusterFrame />", () => {
di.override(legacyOnChannelListenInjectable, () => jest.fn().mockImplementation(() => jest.fn())); di.override(legacyOnChannelListenInjectable, () => jest.fn().mockImplementation(() => jest.fn()));
di.override(directoryForUserDataInjectable, () => "/some/irrelavent/path"); di.override(directoryForUserDataInjectable, () => "/some/irrelavent/path");
di.override(storesAndApisCanBeCreatedInjectable, () => true); di.override(storesAndApisCanBeCreatedInjectable, () => true);
di.override(getMillisecondsFromUnixEpochInjectable, () => () => Date.parse("2000-01-01 12:00:00am"));
const createCluster = di.inject(createClusterInjectable); const createCluster = di.inject(createClusterInjectable);