UNPKG

honkit

Version:

HonKit is building beautiful books using Markdown.

122 lines (121 loc) 5.36 kB
"use strict"; 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"); }); }); });