diff --git a/src/behaviours/application-update/installing-update.test.ts b/src/behaviours/application-update/installing-update.test.ts
index 2d3516a6ed..05f2c1719c 100644
--- a/src/behaviours/application-update/installing-update.test.ts
+++ b/src/behaviours/application-update/installing-update.test.ts
@@ -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", () => {
diff --git a/src/renderer/components/status-bar/auto-update-status-bar-item.injectable.ts b/src/renderer/components/status-bar/auto-update-status-bar-item.injectable.tsx
similarity index 86%
rename from src/renderer/components/status-bar/auto-update-status-bar-item.injectable.ts
rename to src/renderer/components/status-bar/auto-update-status-bar-item.injectable.tsx
index b04c82b28b..3b9e3a20a0 100644
--- a/src/renderer/components/status-bar/auto-update-status-bar-item.injectable.ts
+++ b/src/renderer/components/status-bar/auto-update-status-bar-item.injectable.tsx
@@ -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: () => ,
position: "left" as const,
visible: computed(() => true),
}),
diff --git a/src/renderer/components/status-bar/auto-update-status-bar-item.tsx b/src/renderer/components/status-bar/auto-update-status-bar-item.tsx
index a07140d4cd..765d7f855f 100644
--- a/src/renderer/components/status-bar/auto-update-status-bar-item.tsx
+++ b/src/renderer/components/status-bar/auto-update-status-bar-item.tsx
@@ -73,7 +73,12 @@ const downloadSucceeded = (version: string) =>
{`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()) {
diff --git a/src/renderer/components/status-bar/status-bar-item-registrator.injectable.tsx b/src/renderer/components/status-bar/status-bar-item-registrator.injectable.tsx
index 95934ed9f7..2bbd8c5f90 100644
--- a/src/renderer/components/status-bar/status-bar-item-registrator.injectable.tsx
+++ b/src/renderer/components/status-bar/status-bar-item-registrator.injectable.tsx
@@ -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({
diff --git a/src/renderer/components/status-bar/status-bar.test.tsx b/src/renderer/components/status-bar/status-bar.test.tsx
index b797e35b77..322b37dc85 100644
--- a/src/renderer/components/status-bar/status-bar.test.tsx
+++ b/src/renderer/components/status-bar/status-bar.test.tsx
@@ -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
) {
@@ -35,21 +33,29 @@ class SomeTestExtension extends LensRendererExtension {
}
describe("", () => {
- let render: DiRender;
let di: DiContainer;
let statusBarItems: IObservableArray;
+ 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();
+ it("renders w/o errors", async () => {
+ const { container } = await applicationBuilder.render();
expect(container).toBeInstanceOf(HTMLElement);
});
@@ -62,13 +68,13 @@ describe("", () => {
[],
[{}],
{},
- ])("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()).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("", () => {
left: [],
}) as StatusBarItems));
- const { getByTestId } = render();
+ 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("", () => {
item: () => {text},
}]);
- const { getByTestId } = render();
+ 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("", () => {
},
]);
- const { getAllByTestId } = render();
+ const { getAllByTestId } = await applicationBuilder.render();
const elems = getAllByTestId("sortedElem");
const positions = elems.map(elem => elem.textContent);