honkit
Version:
HonKit is building beautiful books using Markdown.
122 lines (121 loc) • 5.36 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const fs_1 = __importDefault(require("fs"));
const generateMock_1 = __importDefault(require("../testing/generateMock"));
const website_1 = __importDefault(require("../website"));
const longTest = (name, fn) => test(name, fn, 1000 * 30);
describe("WebsiteGenerator", () => {
test("should generate an index.html", async () => {
const folder = await (0, generateMock_1.default)(website_1.default, {
"README.md": "Hello World"
});
expect(folder).toHaveFile("index.html");
}, 60 * 1000);
describe("Glossary", () => {
let folder;
beforeAll(() => {
return (0, generateMock_1.default)(website_1.default, {
"README.md": "Hello World",
"SUMMARY.md": "* [Deep](folder/page.md)",
folder: {
"page.md": "Hello World"
},
"GLOSSARY.md": "# Glossary\n\n## Hello\n\nHello World"
}).then((_folder) => {
folder = _folder;
});
});
longTest("should generate a GLOSSARY.html", () => {
expect(folder).toHaveFile("GLOSSARY.html");
});
longTest("should correctly resolve glossary links in README", () => {
const html = fs_1.default.readFileSync(`${folder}/index.html`, "utf8");
expect(html).toHaveDOMElement(".page-inner a[href=\"GLOSSARY.html#hello\"]");
});
longTest("should correctly resolve glossary links in directory", () => {
const html = fs_1.default.readFileSync(`${folder}/folder/page.html`, "utf8");
expect(html).toHaveDOMElement(".page-inner a[href=\"../GLOSSARY.html#hello\"]");
});
longTest("should accept a custom glossary file", () => {
return (0, generateMock_1.default)(website_1.default, {
"README.md": "Hello World",
"book.json": "{ \"structure\": { \"glossary\": \"custom.md\" } }",
"custom.md": "# Glossary\n\n## Hello\n\nHello World"
}).then((folder) => {
expect(folder).toHaveFile("custom.html");
expect(folder).not.toHaveFile("GLOSSARY.html");
const html = fs_1.default.readFileSync(`${folder}/index.html`, "utf8");
expect(html).toHaveDOMElement(".page-inner a[href=\"custom.html#hello\"]");
});
});
});
test.skip("should copy asset files", () => {
return (0, generateMock_1.default)(website_1.default, {
"README.md": "Hello World",
"myJsFile.js": "var a = \"test\";",
folder: {
"AnotherAssetFile.md": "# Even md"
}
}).then((folder) => {
expect(folder).toHaveFile("index.html");
expect(folder).toHaveFile("myJsFile.js");
expect(folder).toHaveFile("folder/AnotherAssetFile.md");
});
});
test.skip("should generate an index.html for AsciiDoc", async () => {
const folder = await (0, generateMock_1.default)(website_1.default, {
"README.adoc": "Hello World"
});
expect(folder).toHaveFile("index.html");
});
longTest("should generate an HTML file for each articles", () => {
return (0, generateMock_1.default)(website_1.default, {
"README.md": "Hello World",
"SUMMARY.md": "# Summary\n\n* [Page](test/page.md)",
test: {
"page.md": "Hello 2"
}
}).then((folder) => {
expect(folder).toHaveFile("index.html");
expect(folder).toHaveFile("test/page.html");
});
});
longTest("should not generate file if entry file doesn't exist", () => {
return (0, generateMock_1.default)(website_1.default, {
"README.md": "Hello World",
"SUMMARY.md": "# Summary\n\n* [Page 1](page.md)\n* [Page 2](test/page.md)",
test: {
"page.md": "Hello 2"
}
}).then((folder) => {
expect(folder).toHaveFile("index.html");
expect(folder).not.toHaveFile("page.html");
expect(folder).toHaveFile("test/page.html");
});
});
longTest("should generate a multilingual book", () => {
return (0, generateMock_1.default)(website_1.default, {
"LANGS.md": "# Languages\n\n* [en](en)\n* [fr](fr)",
en: {
"README.md": "Hello"
},
fr: {
"README.md": "Bonjour"
}
}).then((folder) => {
// It should generate languages
expect(folder).toHaveFile("en/index.html");
expect(folder).toHaveFile("fr/index.html");
// Should not copy languages as assets
expect(folder).not.toHaveFile("en/README.md");
expect(folder).not.toHaveFile("fr/README.md");
// Should copy assets only once
expect(folder).toHaveFile("gitbook/style.css");
expect(folder).not.toHaveFile("en/gitbook/style.css");
expect(folder).toHaveFile("index.html");
});
});
});