mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
- Add distinction between `getInstance` and `getInstanceOrCreate` since it is not always possible to create an instance (since you might not know the correct arguments) - Remove all the `export const *Store = *Store.getInstance<*Store>();` calls as it defeats the purpose of `Singleton`. Plus with the typing changes the appropriate `*Store.getInstance()` is "short enough". - Special case the two extension export facades to not need to use `getInstanceOrCreate`. Plus since they are just facades it is always possible to create them. - Move some other types to be also `Singleton`'s: ExtensionLoader, ExtensionDiscovery, ThemeStore, LocalizationStore, ... - Fixed dev-run always using the same port with electron inspect - Update Store documentation with new recommendations about creating instances of singletons - Fix all unit tests to create their dependent singletons Signed-off-by: Sebastian Malton <sebastian@malton.name>
57 lines
2.3 KiB
TypeScript
57 lines
2.3 KiB
TypeScript
import React from "react";
|
|
import { render } from "@testing-library/react";
|
|
import "@testing-library/jest-dom/extend-expect";
|
|
|
|
import { BottomBar } from "./bottom-bar";
|
|
jest.mock("../../../extensions/registries");
|
|
import { statusBarRegistry } from "../../../extensions/registries";
|
|
|
|
describe("<BottomBar />", () => {
|
|
it("renders w/o errors", () => {
|
|
const { container } = render(<BottomBar />);
|
|
|
|
expect(container).toBeInstanceOf(HTMLElement);
|
|
});
|
|
|
|
it("renders w/o errors when .getItems() returns unexpected (not type complient) data", async () => {
|
|
statusBarRegistry.getItems = jest.fn().mockImplementationOnce(() => undefined);
|
|
expect(() => render(<BottomBar />)).not.toThrow();
|
|
statusBarRegistry.getItems = jest.fn().mockImplementationOnce(() => "hello");
|
|
expect(() => render(<BottomBar />)).not.toThrow();
|
|
statusBarRegistry.getItems = jest.fn().mockImplementationOnce(() => 6);
|
|
expect(() => render(<BottomBar />)).not.toThrow();
|
|
statusBarRegistry.getItems = jest.fn().mockImplementationOnce(() => null);
|
|
expect(() => render(<BottomBar />)).not.toThrow();
|
|
statusBarRegistry.getItems = jest.fn().mockImplementationOnce(() => []);
|
|
expect(() => render(<BottomBar />)).not.toThrow();
|
|
statusBarRegistry.getItems = jest.fn().mockImplementationOnce(() => [{}]);
|
|
expect(() => render(<BottomBar />)).not.toThrow();
|
|
statusBarRegistry.getItems = jest.fn().mockImplementationOnce(() => { return {};});
|
|
expect(() => render(<BottomBar />)).not.toThrow();
|
|
});
|
|
|
|
it("renders items [{item: React.ReactNode}] (4.0.0-rc.1)", async () => {
|
|
const testId = "testId";
|
|
const text = "heee";
|
|
|
|
statusBarRegistry.getItems = jest.fn().mockImplementationOnce(() => [
|
|
{ item: <span data-testid={testId} >{text}</span> }
|
|
]);
|
|
const { getByTestId } = render(<BottomBar />);
|
|
|
|
expect(await getByTestId(testId)).toHaveTextContent(text);
|
|
});
|
|
|
|
it("renders items [{item: () => React.ReactNode}] (4.0.0-rc.1+)", async () => {
|
|
const testId = "testId";
|
|
const text = "heee";
|
|
|
|
statusBarRegistry.getItems = jest.fn().mockImplementationOnce(() => [
|
|
{ item: () => <span data-testid={testId} >{text}</span> }
|
|
]);
|
|
const { getByTestId } = render(<BottomBar />);
|
|
|
|
expect(await getByTestId(testId)).toHaveTextContent(text);
|
|
});
|
|
});
|