mirror of
https://github.com/bitburner-official/bitburner-src.git
synced 2026-04-17 23:08:36 +02:00
UI: Improve navigation system of in-game documentation viewer (#2499)
* UI: Improve navigation system of in-game documentation viewer * Update based on feedback * Update based on feedback
This commit is contained in:
81
test/jest/ui/DocumentationNavigator.test.ts
Normal file
81
test/jest/ui/DocumentationNavigator.test.ts
Normal file
@@ -0,0 +1,81 @@
|
||||
import { asFilePath } from "../../../src/Paths/FilePath";
|
||||
import { convertNavigatorHref, defaultNsApiPage, defaultPage } from "../../../src/ui/React/Documentation";
|
||||
|
||||
describe("convertNavigatorHref", () => {
|
||||
describe("Valid href", () => {
|
||||
test("Relative URL from non-NS docs pointing to markdown folder 1", () => {
|
||||
const { path, forceOpenExternally } = convertNavigatorHref("../../../../markdown/bitburner.ns.md", defaultPage);
|
||||
expect(path).toStrictEqual("nsDoc/bitburner.ns.md");
|
||||
expect(forceOpenExternally).toStrictEqual(false);
|
||||
});
|
||||
test("Relative URL from non-NS docs pointing to markdown folder 2", () => {
|
||||
const { path, forceOpenExternally } = convertNavigatorHref(
|
||||
"../../../../../markdown/bitburner.ns.flags.md",
|
||||
asFilePath("basic/scripts.md"),
|
||||
);
|
||||
expect(path).toStrictEqual("nsDoc/bitburner.ns.flags.md");
|
||||
expect(forceOpenExternally).toStrictEqual(false);
|
||||
});
|
||||
|
||||
test("Relative URL from NS docs to other NS docs", () => {
|
||||
const { path, forceOpenExternally } = convertNavigatorHref("./bitburner.ns.cloud.md", defaultNsApiPage);
|
||||
expect(path).toStrictEqual("nsDoc/bitburner.ns.cloud.md");
|
||||
expect(forceOpenExternally).toStrictEqual(false);
|
||||
});
|
||||
|
||||
test("Internal NS docs 1", () => {
|
||||
const { path, forceOpenExternally } = convertNavigatorHref("help/getting_started.md", defaultPage);
|
||||
expect(path).toStrictEqual("help/getting_started.md");
|
||||
expect(forceOpenExternally).toStrictEqual(false);
|
||||
});
|
||||
test("Internal NS docs 2", () => {
|
||||
const { path, forceOpenExternally } = convertNavigatorHref(
|
||||
"../basic/scripts.md",
|
||||
asFilePath("help/getting_started.md"),
|
||||
);
|
||||
expect(path).toStrictEqual("basic/scripts.md");
|
||||
expect(forceOpenExternally).toStrictEqual(false);
|
||||
});
|
||||
test("Internal NS docs 3", () => {
|
||||
const { path, forceOpenExternally } = convertNavigatorHref("./faq.md", asFilePath("help/getting_started.md"));
|
||||
expect(path).toStrictEqual("help/faq.md");
|
||||
expect(forceOpenExternally).toStrictEqual(false);
|
||||
});
|
||||
test("Internal NS docs 4", () => {
|
||||
const { path, forceOpenExternally } = convertNavigatorHref("faq.md", asFilePath("help/getting_started.md"));
|
||||
expect(path).toStrictEqual("help/faq.md");
|
||||
expect(forceOpenExternally).toStrictEqual(false);
|
||||
});
|
||||
|
||||
test("HTTP/HTTPS URL - Point to NS docs", () => {
|
||||
const { path, forceOpenExternally } = convertNavigatorHref(
|
||||
"https://github.com/bitburner-official/bitburner-src/blob/stable/markdown/bitburner.ns.md",
|
||||
defaultPage,
|
||||
);
|
||||
expect(path).toStrictEqual("nsDoc/bitburner.ns.md");
|
||||
expect(forceOpenExternally).toStrictEqual(false);
|
||||
});
|
||||
test("HTTP/HTTPS URL - Point to other places", () => {
|
||||
const { path, forceOpenExternally } = convertNavigatorHref("https://bitburner-official.github.io", defaultPage);
|
||||
expect(path).toStrictEqual("https://bitburner-official.github.io");
|
||||
expect(forceOpenExternally).toStrictEqual(true);
|
||||
});
|
||||
});
|
||||
|
||||
describe("Invalid href", () => {
|
||||
test("Relative URL from non-NS docs not pointing to markdown folder", () => {
|
||||
const { path, forceOpenExternally } = convertNavigatorHref("../../../markdown/bitburner.ns.md", defaultPage);
|
||||
expect(path).toStrictEqual(null);
|
||||
expect(forceOpenExternally).toStrictEqual(false);
|
||||
});
|
||||
|
||||
test("Relative URL from NS docs to other NS docs", () => {
|
||||
// The path is always "./bitburner.foo.md". It never starts with "../".
|
||||
const { path, forceOpenExternally } = convertNavigatorHref("../bitburner.ns.cloud.md", defaultNsApiPage);
|
||||
// This is an invalid path. Technically, it's a valid file path, but there is no doc file with this path. The path
|
||||
// of NS docs is always prefixed with "nsDoc/".
|
||||
expect(path).toStrictEqual("bitburner.ns.cloud.md");
|
||||
expect(forceOpenExternally).toStrictEqual(false);
|
||||
});
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user