@barnabask/astro-minisearch
Version:
Utilities to add a static full text index to an Astro project
62 lines (54 loc) • 1.6 kB
text/typescript
import { test } from "uvu";
import * as assert from "uvu/assert";
import { pagesGlobToDocuments, pageToDocuments } from "../src";
import { GlobResult } from "../src/types";
test("pagesGlobToDocuments defaults", async () => {
const fakeGlobResult: GlobResult = {
"index.md": async () => ({
url: "",
frontmatter: { title: "home", plainText: "hi" },
}),
};
const docs = await pagesGlobToDocuments(fakeGlobResult);
assert.is(docs.length, 1);
assert.is(docs[0].url, "");
assert.is(docs[0].title, "home");
assert.is(docs[0].text, "hi");
});
test("pagesGlobToDocuments options", async () => {
const fakeGlobResult: GlobResult = {
"abc.md": async () => ({
url: "/abc",
frontmatter: { title: "letters", txt: "bye" },
}),
};
const docs = await pagesGlobToDocuments(fakeGlobResult, {
contentKey: "txt",
});
assert.is(docs.length, 1);
assert.is(docs[0].url, "/abc");
assert.is(docs[0].title, "letters");
assert.is(docs[0].text, "bye");
});
test("pageToDocuments", () => {
const contentKey = "plainText";
const page = {
url: "/xyz",
frontmatter: {
title: "XYZ",
[]: [
["", "This is the top"],
["Section", "Here is section 1"],
["Section", "Here is section 2"],
],
},
};
const docs = pageToDocuments(page, contentKey);
assert.is(docs.length, 3);
assert.is(docs[0].url, "/xyz");
assert.is(docs[0].title, "XYZ");
assert.is(docs[0].text, "This is the top");
assert.is(docs[1].url, "/xyz#section");
assert.is(docs[2].url, "/xyz#section-1");
});
test.run();