editor: add a collapsible heading test case

Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com>
This commit is contained in:
01zulfi
2025-12-31 15:33:21 +05:00
parent 200c9bd9eb
commit 50666c1307
2 changed files with 22 additions and 1 deletions

View File

@@ -4,6 +4,8 @@ exports[`collapse heading > heading collapsed 1`] = `"<h1 data-collapsed="true">
exports[`collapse heading > heading uncollapsed 1`] = `"<h1>Main Heading</h1><p>paragraph.</p><h2>Subheading</h2><p>subheading paragraph</p><h1>Main heading 2</h1><p>paragraph another</p>"`;
exports[`converting collapsed heading to lower level should unhide higher level headings 1`] = `"<h3 data-collapsed="true">Level 1 (to be changed)</h3><h2 data-collapsed="true">Level 2</h2><p data-hidden="true">Paragraph under level 2</p>"`;
exports[`replacing collapsed heading with another heading level should not unhide content 1`] = `"<h2 data-collapsed="true">A collapsed heading</h2><p data-hidden="true">Hidden paragraph</p>"`;
exports[`replacing collapsed heading with another node (blockquote) should unhide content 1`] = `"<blockquote><h1 data-collapsed="true">A collpased heading</h1></blockquote><p>Hidden paragraph</p>"`;

View File

@@ -17,7 +17,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
import { test, expect } from "vitest";
import { test, expect, describe } from "vitest";
import { createEditor, h } from "../../../../test-utils/index.js";
import { Heading } from "../heading.js";
import { Editor } from "@tiptap/core";
@@ -125,3 +125,22 @@ test("empty heading should have empty class", () => {
editor.commands.insertContent("Some content");
expect(headingElement?.classList.contains("empty")).toBe(false);
});
test("converting collapsed heading to lower level should unhide higher level headings", () => {
const el = h("div", [
h("h1", ["Level 1 (to be changed)"], { "data-collapsed": "true" }),
h("h2", ["Level 2"], { "data-hidden": "true", "data-collapsed": "true" }),
h("p", ["Paragraph under level 2"], { "data-hidden": "true" })
]);
const { editor } = createEditor({
extensions: {
heading: Heading.configure({ levels: [1, 2, 3, 4, 5, 6] })
},
initialContent: el.outerHTML
});
editor.commands.setTextSelection(0);
editor.commands.setHeading({ level: 3 });
expect(editor.getHTML()).toMatchSnapshot();
});