diff --git a/src/renderer/components/status-bar/registered-status-bar-items.injectable.tsx b/src/renderer/components/status-bar/registered-status-bar-items.injectable.tsx index 701c59b5c9..b99edba382 100644 --- a/src/renderer/components/status-bar/registered-status-bar-items.injectable.tsx +++ b/src/renderer/components/status-bar/registered-status-bar-items.injectable.tsx @@ -55,6 +55,9 @@ function getRegisteredStatusBarItems({ registrations }: Dependencies): IComputed } } + // This is done so that the first ones registered are closest to the corner + res.right.reverse(); + return res; }); } diff --git a/src/renderer/components/status-bar/status-bar.test.tsx b/src/renderer/components/status-bar/status-bar.test.tsx index 68f64b5c14..6055edf403 100644 --- a/src/renderer/components/status-bar/status-bar.test.tsx +++ b/src/renderer/components/status-bar/status-bar.test.tsx @@ -9,24 +9,47 @@ import { StatusBar } from "./status-bar"; import { getDiForUnitTesting } from "../../getDiForUnitTesting"; import type { DiRender } from "../test-utils/renderFor"; import { renderFor } from "../test-utils/renderFor"; -import { computed } from "mobx"; +import { computed, IObservableArray, observable } from "mobx"; import type { ConfigurableDependencyInjectionContainer } from "@ogre-tools/injectable"; import statusBarItemsInjectable from "./status-bar-items.injectable"; import type { StatusBarRegistration } from "./status-bar-registration"; +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"; + +class SomeTestExtension extends LensRendererExtension { + constructor(statusBarItems: IObservableArray) { + super({ + id: "some-id", + absolutePath: "irrelevant", + isBundled: false, + isCompatible: false, + isEnabled: false, + manifest: { name: "some-id", version: "some-version" }, + manifestPath: "irrelevant", + }); + + this.statusBarItems = statusBarItems; + } +} describe("", () => { let render: DiRender; let di: ConfigurableDependencyInjectionContainer; + let statusBarItems: IObservableArray; beforeEach(async () => { + statusBarItems = observable.array([]); di = getDiForUnitTesting({ doGeneralOverrides: true }); render = renderFor(di); + di.override(directoryForUserDataInjectable, () => "some-directory-for-user-data"); + di.override(rendererExtensionsInjectable, () => computed(() => [new SomeTestExtension(statusBarItems)])); + await di.runSetups(); }); it("renders w/o errors", () => { - di.override(statusBarItemsInjectable, () => computed(() => [] as StatusBarRegistration[])); const { container } = render(); expect(container).toBeInstanceOf(HTMLElement); @@ -41,7 +64,7 @@ describe("", () => { [{}], {}, ])("renders w/o errors when registrations are not type compliant (%p)", val => { - di.override(statusBarItemsInjectable, () => computed(() => [val] as StatusBarRegistration[])); + statusBarItems.replace([val]); expect(() => render()).not.toThrow(); }); @@ -63,9 +86,9 @@ describe("", () => { const testId = "testId"; const text = "heee"; - di.override(statusBarItemsInjectable, () => computed(() => [ - { item: () => {text} }, - ] as StatusBarRegistration[])); + statusBarItems.replace([{ + item: () => {text}, + }]); const { getByTestId } = render(); @@ -74,36 +97,36 @@ describe("", () => { it("sort positioned items properly", () => { - di.override(statusBarItemsInjectable, () => computed(() => [ + statusBarItems.replace([ { components: { - Item: () =>
right
, + Item: () =>
right1
, }, }, { components: { - Item: () =>
right
, + Item: () =>
right2
, position: "right", }, }, { components: { - Item: () =>
left
, + Item: () =>
left1
, position: "left", }, }, { components: { - Item: () =>
left
, + Item: () =>
left2
, position: "left", }, }, - ] as StatusBarRegistration[])); + ]); const { getAllByTestId } = render(); const elems = getAllByTestId("sortedElem"); const positions = elems.map(elem => elem.textContent); - expect(positions).toEqual(["left", "left", "right", "right"]); + expect(positions).toEqual(["left1", "left2", "right2", "right1"]); }); });