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

fixing tests

Signed-off-by: Jim Ehrismann <jehrismann@mirantis.com>
This commit is contained in:
Jim Ehrismann 2022-06-28 22:45:04 -04:00
parent 19259bf537
commit f03cb6457a
5 changed files with 42 additions and 27 deletions

View File

@ -89,7 +89,7 @@ describe("installing update", () => {
});
it("notifies the user that checking for updates is happening", () => {
expect(showInfoNotificationMock).toHaveBeenCalledWith("Checking for updates...");
expect(rendered.getByTestId("auto-update-component")).toHaveTextContent("Checking for updates...");
});
it("renders", () => {

View File

@ -4,6 +4,7 @@
*/
import { getInjectable } from "@ogre-tools/injectable";
import { computed } from "mobx";
import React from "react";
import { AutoUpdateComponent } from "./auto-update-status-bar-item";
import { statusBarItemInjectionToken } from "./status-bar-item-injection-token";
@ -11,7 +12,7 @@ const autoUpdateStatusBarItemInjectable = getInjectable({
id: "quit-app-separator-tray-item",
instantiate: () => ({
component: AutoUpdateComponent,
component: () => <AutoUpdateComponent data-testid="auto-update-component" />,
position: "left" as const,
visible: computed(() => true),
}),

View File

@ -73,7 +73,12 @@ const downloadSucceeded = (version: string) => <div>{`Download for version ${ver
const idle = () => <></>;
export const NonInjectedAutoUpdateComponent = observer(({ progressOfUpdateDownload, discoveredVersionState, downloadingUpdateState, checkingForUpdatesState }: Dependencies) => {
export const NonInjectedAutoUpdateComponent = observer(({
progressOfUpdateDownload,
discoveredVersionState,
downloadingUpdateState,
checkingForUpdatesState,
}: Dependencies) => {
const discoveredVersion = discoveredVersionState.value.get();
if (downloadingUpdateState.value.get()) {

View File

@ -12,6 +12,7 @@ import { statusBarItemInjectionToken } from "./status-bar-item-injection-token";
import type { StatusBarRegistration } from "./status-bar-registration";
import React from "react";
import getRandomIdInjectable from "../../../common/utils/get-random-id.injectable";
import logger from "../../../common/logger";
const statusBarItemRegistratorInjectable = getInjectable({
id: "status-bar-item-registrator",
@ -36,10 +37,11 @@ const toItemInjectableFor = (extension: LensRendererExtension, getRandomId: () =
let component: React.ComponentType;
let position: "left" | "right";
if (registration.item) {
if (registration?.item) {
const { item } = registration;
// default for old API is "right"
position = "right";
component =
() => (
<>
@ -50,7 +52,7 @@ const toItemInjectableFor = (extension: LensRendererExtension, getRandomId: () =
}
</>
);
} else if (registration.components) {
} else if (registration?.components) {
const { position: pos = "right", Item } = registration.components;
if (pos !== "left" && pos !== "right") {
@ -58,10 +60,11 @@ const toItemInjectableFor = (extension: LensRendererExtension, getRandomId: () =
}
position = pos;
component = Item;
} else {
// throw?
logger.warn("StatusBarRegistration must have valid item or components field");
return [];
}
return [getInjectable({

View File

@ -5,10 +5,6 @@
import React from "react";
import "@testing-library/jest-dom/extend-expect";
import { StatusBar } from "./status-bar";
import { getDiForUnitTesting } from "../../getDiForUnitTesting";
import type { DiRender } from "../test-utils/renderFor";
import { renderFor } from "../test-utils/renderFor";
import type { IObservableArray } from "mobx";
import { computed, observable } from "mobx";
import type { DiContainer } from "@ogre-tools/injectable";
@ -16,7 +12,9 @@ import type { StatusBarItems } from "./status-bar-items.injectable";
import statusBarItemsInjectable from "./status-bar-items.injectable";
import { LensRendererExtension } from "../../../extensions/lens-renderer-extension";
import directoryForUserDataInjectable from "../../../common/app-paths/directory-for-user-data/directory-for-user-data.injectable";
import rendererExtensionsInjectable from "../../../extensions/renderer-extensions.injectable";
import type { ApplicationBuilder } from "../test-utils/get-application-builder";
import { getApplicationBuilder } from "../test-utils/get-application-builder";
import getRandomIdInjectable from "../../../common/utils/get-random-id.injectable";
class SomeTestExtension extends LensRendererExtension {
constructor(statusBarItems: IObservableArray<any>) {
@ -35,21 +33,29 @@ class SomeTestExtension extends LensRendererExtension {
}
describe("<StatusBar />", () => {
let render: DiRender;
let di: DiContainer;
let statusBarItems: IObservableArray<any>;
let applicationBuilder: ApplicationBuilder;
beforeEach(() => {
beforeEach(async () => {
statusBarItems = observable.array([]);
di = getDiForUnitTesting({ doGeneralOverrides: true });
render = renderFor(di);
applicationBuilder = getApplicationBuilder();
applicationBuilder.beforeApplicationStart(({ rendererDi }) => {
rendererDi.unoverride(getRandomIdInjectable);
rendererDi.permitSideEffects(getRandomIdInjectable);
});
applicationBuilder.extensions.renderer.enable(new SomeTestExtension(statusBarItems));
di = applicationBuilder.dis.rendererDi;
di.override(directoryForUserDataInjectable, () => "some-directory-for-user-data");
di.override(rendererExtensionsInjectable, () => computed(() => [new SomeTestExtension(statusBarItems)]));
});
it("renders w/o errors", () => {
const { container } = render(<StatusBar />);
it("renders w/o errors", async () => {
const { container } = await applicationBuilder.render();
expect(container).toBeInstanceOf(HTMLElement);
});
@ -62,13 +68,13 @@ describe("<StatusBar />", () => {
[],
[{}],
{},
])("renders w/o errors when registrations are not type compliant (%p)", val => {
])("renders w/o errors when registrations are not type compliant (%p)", async val => {
statusBarItems.replace([val]);
expect(() => render(<StatusBar />)).not.toThrow();
await expect(applicationBuilder.render()).resolves.toBeTruthy();
});
it("renders items [{item: React.ReactNode}] (4.0.0-rc.1)", () => {
it("renders items [{item: React.ReactNode}] (4.0.0-rc.1)", async () => {
const testId = "testId";
const text = "heee";
@ -77,12 +83,12 @@ describe("<StatusBar />", () => {
left: [],
}) as StatusBarItems));
const { getByTestId } = render(<StatusBar />);
const { getByTestId } = await applicationBuilder.render();
expect(getByTestId(testId)).toHaveTextContent(text);
});
it("renders items [{item: () => React.ReactNode}] (4.0.0-rc.1+)", () => {
it("renders items [{item: () => React.ReactNode}] (4.0.0-rc.1+)", async () => {
const testId = "testId";
const text = "heee";
@ -90,13 +96,13 @@ describe("<StatusBar />", () => {
item: () => <span data-testid={testId} >{text}</span>,
}]);
const { getByTestId } = render(<StatusBar />);
const { getByTestId } = await applicationBuilder.render();
expect(getByTestId(testId)).toHaveTextContent(text);
});
it("sort positioned items properly", () => {
it("sort positioned items properly", async () => {
statusBarItems.replace([
{
components: {
@ -123,7 +129,7 @@ describe("<StatusBar />", () => {
},
]);
const { getAllByTestId } = render(<StatusBar />);
const { getAllByTestId } = await applicationBuilder.render();
const elems = getAllByTestId("sortedElem");
const positions = elems.map(elem => elem.textContent);