UNPKG

@blocknote/core

Version:

A "Notion-style" block-based extensible text editor built on top of Prosemirror and Tiptap.

177 lines (165 loc) 3.65 kB
import { describe, expect, it } from "vitest"; import { initializeESMDependencies } from "../../../../util/esmDependencies.js"; import { nestedListsToBlockNoteStructure } from "./nestedLists.js"; async function testHTML(html: string) { const deps = await initializeESMDependencies(); const htmlNode = nestedListsToBlockNoteStructure(html); const pretty = await deps.unified .unified() .use(deps.rehypeParse.default, { fragment: true }) .use(deps.rehypeFormat.default) .use(deps.rehypeStringify.default) .process(htmlNode.innerHTML); expect(pretty.value).toMatchSnapshot(); } describe("Lift nested lists", () => { it("Lifts nested bullet lists", async () => { const html = `<ul> <li> Bullet List Item 1 <ul> <li> Nested Bullet List Item 1 </li> <li> Nested Bullet List Item 2 </li> </ul> </li> <li> Bullet List Item 2 </li> </ul>`; await testHTML(html); }); it("Lifts nested bullet lists without li", async () => { const html = `<ul> Bullet List Item 1 <ul> <li> Nested Bullet List Item 1 </li> <li> Nested Bullet List Item 2 </li> </ul> <li> Bullet List Item 2 </li> </ul>`; await testHTML(html); }); it("Lifts nested bullet lists with content after nested list", async () => { const html = `<ul> <li> Bullet List Item 1 <ul> <li> Nested Bullet List Item 1 </li> <li> Nested Bullet List Item 2 </li> </ul> More content in list item 1 </li> <li> Bullet List Item 2 </li> </ul>`; await testHTML(html); }); it("Lifts multiple bullet lists", async () => { const html = `<ul> <li> Bullet List Item 1 <ul> <li> Nested Bullet List Item 1 </li> <li> Nested Bullet List Item 2 </li> </ul> <ul> <li> Nested Bullet List Item 3 </li> <li> Nested Bullet List Item 4 </li> </ul> </li> <li> Bullet List Item 2 </li> </ul>`; await testHTML(html); }); it("Lifts multiple bullet lists with content in between", async () => { const html = `<ul> <li> Bullet List Item 1 <ul> <li> Nested Bullet List Item 1 </li> <li> Nested Bullet List Item 2 </li> </ul> In between content <ul> <li> Nested Bullet List Item 3 </li> <li> Nested Bullet List Item 4 </li> </ul> </li> <li> Bullet List Item 2 </li> </ul>`; await testHTML(html); }); it("Lifts nested numbered lists", async () => { const html = `<ol> <li> Numbered List Item 1 <ol> <li> Nested Numbered List Item 1 </li> <li> Nested Numbered List Item 2 </li> </ol> </li> <li> Numbered List Item 2 </li> </ol>`; await testHTML(html); }); it("Lifts nested mixed lists", async () => { const html = `<ol> <li> Numbered List Item 1 <ul> <li> Bullet List Item 1 </li> <li> Bullet List Item 2 </li> </ul> </li> <li> Numbered List Item 2 </li> </ol>`; await testHTML(html); }); });