From 9a073190c0ad8656dbb67274439f39816f2057ca Mon Sep 17 00:00:00 2001 From: Janne Savolainen Date: Mon, 18 Jul 2022 16:30:10 +0300 Subject: [PATCH] Add tests accidentally removed back Signed-off-by: Janne Savolainen --- ...debar-and-tab-navigation-for-core.test.tsx | 23 ++++++++++++++++++- ...and-tab-navigation-for-extensions.test.tsx | 23 ++++++++++++++++++- 2 files changed, 44 insertions(+), 2 deletions(-) diff --git a/src/behaviours/cluster/sidebar-and-tab-navigation-for-core.test.tsx b/src/behaviours/cluster/sidebar-and-tab-navigation-for-core.test.tsx index bf650f2652..e6cf1f4a64 100644 --- a/src/behaviours/cluster/sidebar-and-tab-navigation-for-core.test.tsx +++ b/src/behaviours/cluster/sidebar-and-tab-navigation-for-core.test.tsx @@ -18,10 +18,13 @@ import { frontEndRouteInjectionToken } from "../../common/front-end-routing/fron import type { ApplicationBuilder } from "../../renderer/components/test-utils/get-application-builder"; import { getApplicationBuilder } from "../../renderer/components/test-utils/get-application-builder"; import writeJsonFileInjectable from "../../common/fs/write-json-file.injectable"; +import pathExistsInjectable from "../../common/fs/path-exists.injectable"; import readJsonFileInjectable from "../../common/fs/read-json-file.injectable"; import { navigateToRouteInjectionToken } from "../../common/front-end-routing/navigate-to-route-injection-token"; import sidebarStorageInjectable from "../../renderer/components/layout/sidebar-storage/sidebar-storage.injectable"; import hostedClusterIdInjectable from "../../renderer/cluster-frame-context/hosted-cluster-id.injectable"; +import { advanceFakeTime, useFakeTime } from "../../common/test-utils/use-fake-time"; +import storageSaveDelayInjectable from "../../renderer/utils/create-storage/storage-save-delay.injectable"; describe("cluster - sidebar and tab navigation for core", () => { let applicationBuilder: ApplicationBuilder; @@ -29,6 +32,8 @@ describe("cluster - sidebar and tab navigation for core", () => { let rendered: RenderResult; beforeEach(() => { + useFakeTime("2015-10-21T07:28:00Z"); + applicationBuilder = getApplicationBuilder(); rendererDi = applicationBuilder.dis.rendererDi; @@ -37,6 +42,8 @@ describe("cluster - sidebar and tab navigation for core", () => { applicationBuilder.beforeApplicationStart(({ rendererDi }) => { rendererDi.override(hostedClusterIdInjectable, () => "some-hosted-cluster-id"); + rendererDi.override(storageSaveDelayInjectable, () => 250); + rendererDi.override( directoryForLensLocalStorageInjectable, () => "/some-directory-for-lens-local-storage", @@ -261,7 +268,21 @@ describe("cluster - sidebar and tab navigation for core", () => { expect(rendered.getByTestId("some-child-page")).not.toBeNull(); }); - it("stores state for expanded sidebar items to file system", async () => { + it("when not enough time passes, does not store state for expanded sidebar items to file system yet", async () => { + advanceFakeTime(250 - 1); + + const pathExistsFake = rendererDi.inject(pathExistsInjectable); + + const actual = await pathExistsFake( + "/some-directory-for-lens-local-storage/some-hosted-cluster-id.json", + ); + + expect(actual).toBe(false); + }); + + it("when enough time passes, stores state for expanded sidebar items to file system", async () => { + advanceFakeTime(250); + const readJsonFileFake = rendererDi.inject(readJsonFileInjectable); const actual = await readJsonFileFake( diff --git a/src/behaviours/cluster/sidebar-and-tab-navigation-for-extensions.test.tsx b/src/behaviours/cluster/sidebar-and-tab-navigation-for-extensions.test.tsx index 30de1a2f99..952669c03e 100644 --- a/src/behaviours/cluster/sidebar-and-tab-navigation-for-extensions.test.tsx +++ b/src/behaviours/cluster/sidebar-and-tab-navigation-for-extensions.test.tsx @@ -11,14 +11,17 @@ import { matches } from "lodash/fp"; import type { ApplicationBuilder } from "../../renderer/components/test-utils/get-application-builder"; import { getApplicationBuilder } from "../../renderer/components/test-utils/get-application-builder"; import writeJsonFileInjectable from "../../common/fs/write-json-file.injectable"; +import pathExistsInjectable from "../../common/fs/path-exists.injectable"; import readJsonFileInjectable from "../../common/fs/read-json-file.injectable"; import type { DiContainer } from "@ogre-tools/injectable"; import { navigateToRouteInjectionToken } from "../../common/front-end-routing/navigate-to-route-injection-token"; import assert from "assert"; import hostedClusterIdInjectable from "../../renderer/cluster-frame-context/hosted-cluster-id.injectable"; +import { advanceFakeTime, useFakeTime } from "../../common/test-utils/use-fake-time"; import { getExtensionFakeFor } from "../../renderer/components/test-utils/get-extension-fake"; import type { IObservableValue } from "mobx"; import { runInAction, computed, observable } from "mobx"; +import storageSaveDelayInjectable from "../../renderer/utils/create-storage/storage-save-delay.injectable"; // TODO: Make tooltips free of side effects by making it deterministic jest.mock("../../renderer/components/tooltip/withTooltip", () => ({ @@ -31,6 +34,8 @@ describe("cluster - sidebar and tab navigation for extensions", () => { let rendered: RenderResult; beforeEach(() => { + useFakeTime("2015-10-21T07:28:00Z"); + applicationBuilder = getApplicationBuilder(); rendererDi = applicationBuilder.dis.rendererDi; @@ -39,6 +44,8 @@ describe("cluster - sidebar and tab navigation for extensions", () => { applicationBuilder.beforeApplicationStart(({ rendererDi }) => { rendererDi.override(hostedClusterIdInjectable, () => "some-hosted-cluster-id"); + rendererDi.override(storageSaveDelayInjectable, () => 250); + rendererDi.override( directoryForLensLocalStorageInjectable, () => "/some-directory-for-lens-local-storage", @@ -382,7 +389,21 @@ describe("cluster - sidebar and tab navigation for extensions", () => { expect(tabLink.dataset.isActiveTest).toBe("false"); }); - it("stores state for expanded sidebar items to file system", async () => { + it("when not enough time passes, does not store state for expanded sidebar items to file system yet", async () => { + advanceFakeTime(250 - 1); + + const pathExistsFake = rendererDi.inject(pathExistsInjectable); + + const actual = await pathExistsFake( + "/some-directory-for-lens-local-storage/some-hosted-cluster-id.json", + ); + + expect(actual).toBe(false); + }); + + it("when enough time passes, stores state for expanded sidebar items to file system", async () => { + advanceFakeTime(250); + const readJsonFileFake = rendererDi.inject(readJsonFileInjectable); const actual = await readJsonFileFake(