mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
101 lines
2.7 KiB
TypeScript
101 lines
2.7 KiB
TypeScript
import { getExtensionPageUrl, globalPageRegistry } from "../page-registry";
|
|
import { LensExtension } from "../../lens-extension";
|
|
import React from "react";
|
|
|
|
let ext: LensExtension = null;
|
|
|
|
describe("getPageUrl", () => {
|
|
beforeEach(async () => {
|
|
ext = new LensExtension({
|
|
manifest: {
|
|
name: "foo-bar",
|
|
version: "0.1.1"
|
|
},
|
|
id: "/this/is/fake/package.json",
|
|
absolutePath: "/absolute/fake/",
|
|
manifestPath: "/this/is/fake/package.json",
|
|
isBundled: false,
|
|
isEnabled: true
|
|
});
|
|
});
|
|
|
|
it("returns a page url for extension", () => {
|
|
expect(getExtensionPageUrl({ extensionId: ext.name })).toBe("/extension/foo-bar");
|
|
});
|
|
|
|
it("allows to pass base url as parameter", () => {
|
|
expect(getExtensionPageUrl({ extensionId: ext.name, pageId: "/test" })).toBe("/extension/foo-bar/test");
|
|
});
|
|
|
|
it("removes @ and replace `/` to `--`", () => {
|
|
expect(getExtensionPageUrl({ extensionId: "@foo/bar" })).toBe("/extension/foo--bar");
|
|
});
|
|
|
|
it("adds / prefix", () => {
|
|
expect(getExtensionPageUrl({ extensionId: ext.name, pageId: "test" })).toBe("/extension/foo-bar/test");
|
|
});
|
|
});
|
|
|
|
describe("globalPageRegistry", () => {
|
|
beforeEach(async () => {
|
|
ext = new LensExtension({
|
|
manifest: {
|
|
name: "@acme/foo-bar",
|
|
version: "0.1.1"
|
|
},
|
|
id: "/this/is/fake/package.json",
|
|
absolutePath: "/absolute/fake/",
|
|
manifestPath: "/this/is/fake/package.json",
|
|
isBundled: false,
|
|
isEnabled: true
|
|
});
|
|
globalPageRegistry.add([
|
|
{
|
|
id: "test-page",
|
|
components: {
|
|
Page: () => React.createElement("Text")
|
|
}
|
|
},
|
|
{
|
|
id: "another-page",
|
|
components: {
|
|
Page: () => React.createElement("Text")
|
|
},
|
|
},
|
|
{
|
|
components: {
|
|
Page: () => React.createElement("Default")
|
|
}
|
|
},
|
|
], ext);
|
|
});
|
|
|
|
describe("getByPageTarget", () => {
|
|
it("matching to first registered page without id", () => {
|
|
const page = globalPageRegistry.getByPageTarget({ extensionId: ext.name });
|
|
|
|
expect(page.id).toEqual(undefined);
|
|
expect(page.extensionId).toEqual(ext.name);
|
|
expect(page.url).toEqual(getExtensionPageUrl({ extensionId: ext.name }));
|
|
});
|
|
|
|
it("returns matching page", () => {
|
|
const page = globalPageRegistry.getByPageTarget({
|
|
pageId: "test-page",
|
|
extensionId: ext.name
|
|
});
|
|
|
|
expect(page.id).toEqual("test-page");
|
|
});
|
|
|
|
it("returns null if target not found", () => {
|
|
const page = globalPageRegistry.getByPageTarget({
|
|
pageId: "wrong-page",
|
|
extensionId: ext.name
|
|
});
|
|
|
|
expect(page).toBeNull();
|
|
});
|
|
});
|
|
});
|