Merge pull request #1119 from datopian/remark-wiki-link-cleanup
## Changes - remove unneeded tests - do not remove "index" from the end of tile path in `getPermalinks` function
This commit is contained in:
commit
a4e60540ae
@ -38,6 +38,5 @@ const defaultPathToPermalinkFunc = (
|
|||||||
.replace(markdownFolder, "") // make the permalink relative to the markdown folder
|
.replace(markdownFolder, "") // make the permalink relative to the markdown folder
|
||||||
.replace(/\.(mdx|md)/, "")
|
.replace(/\.(mdx|md)/, "")
|
||||||
.replace(/\\/g, "/") // replace windows backslash with forward slash
|
.replace(/\\/g, "/") // replace windows backslash with forward slash
|
||||||
.replace(/\/index$/, ""); // remove index from the end of the permalink
|
|
||||||
return permalink.length > 0 ? permalink : "/"; // for home page
|
return permalink.length > 0 ? permalink : "/"; // for home page
|
||||||
};
|
};
|
||||||
|
|||||||
@ -1,9 +1,6 @@
|
|||||||
import * as path from "path";
|
import * as path from "path";
|
||||||
// import * as url from "url";
|
|
||||||
import { getPermalinks } from "../src/utils";
|
import { getPermalinks } from "../src/utils";
|
||||||
|
|
||||||
// const __dirname = url.fileURLToPath(new URL(".", import.meta.url));
|
|
||||||
// const markdownFolder = path.join(__dirname, "/fixtures/content");
|
|
||||||
const markdownFolder = path.join(
|
const markdownFolder = path.join(
|
||||||
".",
|
".",
|
||||||
"test/fixtures/content"
|
"test/fixtures/content"
|
||||||
@ -12,12 +9,12 @@ const markdownFolder = path.join(
|
|||||||
describe("getPermalinks", () => {
|
describe("getPermalinks", () => {
|
||||||
test("should return an array of permalinks", () => {
|
test("should return an array of permalinks", () => {
|
||||||
const expectedPermalinks = [
|
const expectedPermalinks = [
|
||||||
"/", // /index.md
|
"/README",
|
||||||
"/abc",
|
"/abc",
|
||||||
"/blog/first-post",
|
"/blog/first-post",
|
||||||
"/blog/Second Post",
|
"/blog/Second Post",
|
||||||
"/blog/third-post",
|
"/blog/third-post",
|
||||||
"/blog", // /blog/index.md
|
"/blog/README",
|
||||||
"/blog/tutorials/first-tutorial",
|
"/blog/tutorials/first-tutorial",
|
||||||
"/assets/Pasted Image 123.png",
|
"/assets/Pasted Image 123.png",
|
||||||
];
|
];
|
||||||
@ -28,35 +25,4 @@ describe("getPermalinks", () => {
|
|||||||
expect(expectedPermalinks).toContain(permalink);
|
expect(expectedPermalinks).toContain(permalink);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
test("should return an array of permalinks with custom path -> permalink converter function", () => {
|
|
||||||
const expectedPermalinks = [
|
|
||||||
"/", // /index.md
|
|
||||||
"/abc",
|
|
||||||
"/blog/first-post",
|
|
||||||
"/blog/second-post",
|
|
||||||
"/blog/third-post",
|
|
||||||
"/blog", // /blog/index.md
|
|
||||||
"/blog/tutorials/first-tutorial",
|
|
||||||
"/assets/pasted-image-123.png",
|
|
||||||
];
|
|
||||||
|
|
||||||
const func = (filePath: string, markdownFolder: string) => {
|
|
||||||
const permalink = filePath
|
|
||||||
.replace(markdownFolder, "") // make the permalink relative to the markdown folder
|
|
||||||
.replace(/\.(mdx|md)/, "")
|
|
||||||
.replace(/\\/g, "/") // replace windows backslash with forward slash
|
|
||||||
.replace(/\/index$/, "") // remove index from the end of the permalink
|
|
||||||
.replace(/ /g, "-") // replace spaces with hyphens
|
|
||||||
.toLowerCase(); // convert to lowercase
|
|
||||||
|
|
||||||
return permalink.length > 0 ? permalink : "/"; // for home page
|
|
||||||
};
|
|
||||||
|
|
||||||
const permalinks = getPermalinks(markdownFolder, [/\.DS_Store/], func);
|
|
||||||
expect(permalinks).toHaveLength(expectedPermalinks.length);
|
|
||||||
permalinks.forEach((permalink) => {
|
|
||||||
expect(expectedPermalinks).toContain(permalink);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|||||||
@ -159,11 +159,11 @@ describe("micromark-extension-wiki-link", () => {
|
|||||||
});
|
});
|
||||||
expect(serialized).toBe(
|
expect(serialized).toBe(
|
||||||
'<p><img src="My Image.jpg" alt="My Image.jpg" class="internal" width="200" height="200" /></p>'
|
'<p><img src="My Image.jpg" alt="My Image.jpg" class="internal" width="200" height="200" /></p>'
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
// TODO: Fix alt attribute
|
// TODO: Fix alt attribute
|
||||||
test("Can identify the dimensions of the image if exists", () => {
|
test("Can identify the dimensions of the image if exists", () => {
|
||||||
const serialized = micromark("![[My Image.jpg|200x200]]", "ascii", {
|
const serialized = micromark("![[My Image.jpg|200x200]]", "ascii", {
|
||||||
extensions: [syntax()],
|
extensions: [syntax()],
|
||||||
htmlExtensions: [html({ permalinks: ["My Image.jpg"] }) as any], // TODO type fix
|
htmlExtensions: [html({ permalinks: ["My Image.jpg"] }) as any], // TODO type fix
|
||||||
@ -286,56 +286,6 @@ describe("micromark-extension-wiki-link", () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
test("parses wiki links to index files", () => {
|
|
||||||
const serialized = micromark("[[/some/folder/index]]", "ascii", {
|
|
||||||
extensions: [syntax()],
|
|
||||||
htmlExtensions: [html() as any], // TODO type fix
|
|
||||||
});
|
|
||||||
expect(serialized).toBe(
|
|
||||||
'<p><a href="/some/folder" class="internal new">/some/folder/index</a></p>'
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
describe("other", () => {
|
|
||||||
test("parses a wiki link to some index page in a folder with no matching permalink", () => {
|
|
||||||
const serialized = micromark("[[/some/folder/index]]", "ascii", {
|
|
||||||
extensions: [syntax()],
|
|
||||||
htmlExtensions: [html() as any], // TODO type fix
|
|
||||||
});
|
|
||||||
expect(serialized).toBe(
|
|
||||||
'<p><a href="/some/folder" class="internal new">/some/folder/index</a></p>'
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
test("parses a wiki link to some index page in a folder with a matching permalink", () => {
|
|
||||||
const serialized = micromark("[[/some/folder/index]]", "ascii", {
|
|
||||||
extensions: [syntax()],
|
|
||||||
htmlExtensions: [html({ permalinks: ["/some/folder"] }) as any], // TODO type fix
|
|
||||||
});
|
|
||||||
expect(serialized).toBe(
|
|
||||||
'<p><a href="/some/folder" class="internal">/some/folder/index</a></p>'
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
test("parses a wiki link to home index page with no matching permalink", () => {
|
|
||||||
const serialized = micromark("[[/index]]", "ascii", {
|
|
||||||
extensions: [syntax()],
|
|
||||||
htmlExtensions: [html() as any], // TODO type fix
|
|
||||||
});
|
|
||||||
expect(serialized).toBe(
|
|
||||||
'<p><a href="/" class="internal new">/index</a></p>'
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
test("parses a wiki link to home index page with a matching permalink", () => {
|
|
||||||
const serialized = micromark("[[/index]]", "ascii", {
|
|
||||||
extensions: [syntax()],
|
|
||||||
htmlExtensions: [html({ permalinks: ["/"] }) as any], // TODO type fix
|
|
||||||
});
|
|
||||||
expect(serialized).toBe('<p><a href="/" class="internal">/index</a></p>');
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
describe("transclusions", () => {
|
describe("transclusions", () => {
|
||||||
test("parsers a transclusion as a regular wiki link", () => {
|
test("parsers a transclusion as a regular wiki link", () => {
|
||||||
const serialized = micromark("![[Some Page]]", "ascii", {
|
const serialized = micromark("![[Some Page]]", "ascii", {
|
||||||
|
|||||||
@ -485,109 +485,6 @@ describe("remark-wiki-link", () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
test("parses wiki links to index files", () => {
|
|
||||||
const processor = unified().use(markdown).use(wikiLinkPlugin);
|
|
||||||
|
|
||||||
let ast = processor.parse("[[/some/folder/index]]");
|
|
||||||
ast = processor.runSync(ast);
|
|
||||||
|
|
||||||
expect(select("wikiLink", ast)).not.toEqual(null);
|
|
||||||
|
|
||||||
visit(ast, "wikiLink", (node: Node) => {
|
|
||||||
expect(node.data?.exists).toEqual(false);
|
|
||||||
expect(node.data?.permalink).toEqual("/some/folder");
|
|
||||||
expect(node.data?.alias).toEqual(null);
|
|
||||||
expect(node.data?.hName).toEqual("a");
|
|
||||||
expect((node.data?.hProperties as any).className).toEqual("internal new");
|
|
||||||
expect((node.data?.hProperties as any).href).toEqual("/some/folder");
|
|
||||||
expect((node.data?.hChildren as any)[0].value).toEqual(
|
|
||||||
"/some/folder/index"
|
|
||||||
);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
describe("other", () => {
|
|
||||||
test("parses a wiki link to some index page in a folder with no matching permalink", () => {
|
|
||||||
const processor = unified().use(markdown).use(wikiLinkPlugin);
|
|
||||||
|
|
||||||
let ast = processor.parse("[[/some/folder/index]]");
|
|
||||||
ast = processor.runSync(ast);
|
|
||||||
|
|
||||||
visit(ast, "wikiLink", (node: Node) => {
|
|
||||||
expect(node.data?.exists).toEqual(false);
|
|
||||||
expect(node.data?.permalink).toEqual("/some/folder");
|
|
||||||
expect(node.data?.alias).toEqual(null);
|
|
||||||
expect(node.data?.hName).toEqual("a");
|
|
||||||
expect((node.data?.hProperties as any).className).toEqual(
|
|
||||||
"internal new"
|
|
||||||
);
|
|
||||||
expect((node.data?.hProperties as any).href).toEqual("/some/folder");
|
|
||||||
expect((node.data?.hChildren as any)[0].value).toEqual(
|
|
||||||
"/some/folder/index"
|
|
||||||
);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
test("parses a wiki link to some index page in a folder with a matching permalink", () => {
|
|
||||||
const processor = unified()
|
|
||||||
.use(markdown)
|
|
||||||
.use(wikiLinkPlugin, { permalinks: ["/some/folder"] });
|
|
||||||
|
|
||||||
let ast = processor.parse("[[/some/folder/index]]");
|
|
||||||
ast = processor.runSync(ast);
|
|
||||||
|
|
||||||
visit(ast, "wikiLink", (node: Node) => {
|
|
||||||
expect(node.data?.exists).toEqual(true);
|
|
||||||
expect(node.data?.permalink).toEqual("/some/folder");
|
|
||||||
expect(node.data?.alias).toEqual(null);
|
|
||||||
expect(node.data?.hName).toEqual("a");
|
|
||||||
expect((node.data?.hProperties as any).className).toEqual("internal");
|
|
||||||
expect((node.data?.hProperties as any).href).toEqual("/some/folder");
|
|
||||||
expect((node.data?.hChildren as any)[0].value).toEqual(
|
|
||||||
"/some/folder/index"
|
|
||||||
);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
test("parses a wiki link to home index page with no matching permalink", () => {
|
|
||||||
const processor = unified().use(markdown).use(wikiLinkPlugin);
|
|
||||||
|
|
||||||
let ast = processor.parse("[[/index]]");
|
|
||||||
ast = processor.runSync(ast);
|
|
||||||
|
|
||||||
visit(ast, "wikiLink", (node: Node) => {
|
|
||||||
expect(node.data?.exists).toEqual(false);
|
|
||||||
expect(node.data?.permalink).toEqual("/");
|
|
||||||
expect(node.data?.alias).toEqual(null);
|
|
||||||
expect(node.data?.hName).toEqual("a");
|
|
||||||
expect((node.data?.hProperties as any).className).toEqual(
|
|
||||||
"internal new"
|
|
||||||
);
|
|
||||||
expect((node.data?.hProperties as any).href).toEqual("/");
|
|
||||||
expect((node.data?.hChildren as any)[0].value).toEqual("/index");
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
test("parses a wiki link to home index page with a matching permalink", () => {
|
|
||||||
const processor = unified()
|
|
||||||
.use(markdown)
|
|
||||||
.use(wikiLinkPlugin, { permalinks: ["/"] });
|
|
||||||
|
|
||||||
let ast = processor.parse("[[/index]]");
|
|
||||||
ast = processor.runSync(ast);
|
|
||||||
|
|
||||||
visit(ast, "wikiLink", (node: Node) => {
|
|
||||||
expect(node.data?.exists).toEqual(true);
|
|
||||||
expect(node.data?.permalink).toEqual("/");
|
|
||||||
expect(node.data?.alias).toEqual(null);
|
|
||||||
expect(node.data?.hName).toEqual("a");
|
|
||||||
expect((node.data?.hProperties as any).className).toEqual("internal");
|
|
||||||
expect((node.data?.hProperties as any).href).toEqual("/");
|
|
||||||
expect((node.data?.hChildren as any)[0].value).toEqual("/index");
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
describe("transclusions", () => {
|
describe("transclusions", () => {
|
||||||
test("replaces a transclusion with a regular wiki link", () => {
|
test("replaces a transclusion with a regular wiki link", () => {
|
||||||
const processor = unified().use(markdown).use(wikiLinkPlugin);
|
const processor = unified().use(markdown).use(wikiLinkPlugin);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user