mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
Make tests more robust
Signed-off-by: Sebastian Malton <sebastian@malton.name>
This commit is contained in:
parent
bd082e24ee
commit
56f2cb9663
@ -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;
|
||||
});
|
||||
}
|
||||
|
||||
@ -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<any>) {
|
||||
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("<StatusBar />", () => {
|
||||
let render: DiRender;
|
||||
let di: ConfigurableDependencyInjectionContainer;
|
||||
let statusBarItems: IObservableArray<any>;
|
||||
|
||||
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(<StatusBar />);
|
||||
|
||||
expect(container).toBeInstanceOf(HTMLElement);
|
||||
@ -41,7 +64,7 @@ describe("<StatusBar />", () => {
|
||||
[{}],
|
||||
{},
|
||||
])("renders w/o errors when registrations are not type compliant (%p)", val => {
|
||||
di.override(statusBarItemsInjectable, () => computed(() => [val] as StatusBarRegistration[]));
|
||||
statusBarItems.replace([val]);
|
||||
|
||||
expect(() => render(<StatusBar />)).not.toThrow();
|
||||
});
|
||||
@ -63,9 +86,9 @@ describe("<StatusBar />", () => {
|
||||
const testId = "testId";
|
||||
const text = "heee";
|
||||
|
||||
di.override(statusBarItemsInjectable, () => computed(() => [
|
||||
{ item: () => <span data-testid={testId} >{text}</span> },
|
||||
] as StatusBarRegistration[]));
|
||||
statusBarItems.replace([{
|
||||
item: () => <span data-testid={testId} >{text}</span>,
|
||||
}]);
|
||||
|
||||
const { getByTestId } = render(<StatusBar />);
|
||||
|
||||
@ -74,36 +97,36 @@ describe("<StatusBar />", () => {
|
||||
|
||||
|
||||
it("sort positioned items properly", () => {
|
||||
di.override(statusBarItemsInjectable, () => computed(() => [
|
||||
statusBarItems.replace([
|
||||
{
|
||||
components: {
|
||||
Item: () => <div data-testid="sortedElem">right</div>,
|
||||
Item: () => <div data-testid="sortedElem">right1</div>,
|
||||
},
|
||||
},
|
||||
{
|
||||
components: {
|
||||
Item: () => <div data-testid="sortedElem">right</div>,
|
||||
Item: () => <div data-testid="sortedElem">right2</div>,
|
||||
position: "right",
|
||||
},
|
||||
},
|
||||
{
|
||||
components: {
|
||||
Item: () => <div data-testid="sortedElem">left</div>,
|
||||
Item: () => <div data-testid="sortedElem">left1</div>,
|
||||
position: "left",
|
||||
},
|
||||
},
|
||||
{
|
||||
components: {
|
||||
Item: () => <div data-testid="sortedElem">left</div>,
|
||||
Item: () => <div data-testid="sortedElem">left2</div>,
|
||||
position: "left",
|
||||
},
|
||||
},
|
||||
] as StatusBarRegistration[]));
|
||||
]);
|
||||
|
||||
const { getAllByTestId } = render(<StatusBar />);
|
||||
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"]);
|
||||
});
|
||||
});
|
||||
|
||||
Loading…
Reference in New Issue
Block a user