Files
upstream-mirror 083a46e93b
Some checks failed
Verify / Install node dependencies (push) Failing after 2s
Verify / Build packages (push) Has been skipped
Verify / Check linting & formatting (push) Has been skipped
Verify / Run unit tests (push) Has been skipped
Verify / Run e2e tests (shard 1/4) (push) Has been skipped
Verify / Run e2e tests (shard 2/4) (push) Has been skipped
Verify / Run e2e tests (shard 3/4) (push) Has been skipped
Verify / Run e2e tests (shard 4/4) (push) Has been skipped
Publish / Resolve publish config (push) Failing after 2s
Publish / Send notification to Slack (push) Has been skipped
Publish / Send failure notification to Slack (push) Failing after 8s
Verify / Merge e2e reports (push) Has been skipped
Publish / Build (push) Has been skipped
Publish / Bump Versions OR Release to Registry (push) Has been skipped
snapshot of https://github.com/ueberdosis/tiptap.git (main, 2026-09-15; blobs > 131072B omitted)
2026-09-15 21:11:02 +05:00

95 lines
3.4 KiB
TypeScript

import { Blockquote } from '@tiptap/extension-blockquote'
import { Document } from '@tiptap/extension-document'
import { Heading } from '@tiptap/extension-heading'
import { Paragraph } from '@tiptap/extension-paragraph'
import { Text } from '@tiptap/extension-text'
import { MarkdownManager } from '@tiptap/markdown'
import { beforeEach, describe, expect, it } from 'vite-plus/test'
describe('Blockquote Markdown Conversion', () => {
let markdownManager: MarkdownManager
beforeEach(() => {
markdownManager = new MarkdownManager({
extensions: [Document, Paragraph, Text, Blockquote, Heading],
})
})
it('should convert a single-level blockquote to markdown', () => {
const markdown = '> This is a blockquote'
const json = markdownManager.parse(markdown)
const output = markdownManager.serialize(json)
expect(output.trim()).toBe(markdown)
})
it('should convert a single-level blockquote with multiple paragraphs to markdown', () => {
const markdown = '> First paragraph\n>\n> Second paragraph'
const json = markdownManager.parse(markdown)
const output = markdownManager.serialize(json)
expect(output.trim()).toBe(markdown)
})
it('should convert nested blockquotes to markdown', () => {
const markdown = '> Level 1\n>\n> > Level 2\n> >\n> > > Level 3'
const json = markdownManager.parse(markdown)
const output = markdownManager.serialize(json)
expect(output.trim()).toBe(markdown)
})
it('should handle blockquotes with varying nesting depths', () => {
const markdown =
'> Level 1\n>\n> > Level 2\n> >\n> > > Level 3\n> >\n> > Back to level 2\n>\n> Back to level 1'
const json = markdownManager.parse(markdown)
const output = markdownManager.serialize(json)
expect(output.trim()).toBe(markdown)
})
it('should convert nested blockquotes with multiple paragraphs', () => {
const markdown =
'> First paragraph\n>\n> Second paragraph\n>\n> > Nested paragraph\n> >\n> > > Deeply nested'
const json = markdownManager.parse(markdown)
const output = markdownManager.serialize(json)
expect(output.trim()).toBe(markdown)
})
it('should handle a blockquote that jumps multiple levels deep', () => {
const markdown = '> Level 1\n>\n> > > Level 3 (jumped from 1 to 3)'
const json = markdownManager.parse(markdown)
const output = markdownManager.serialize(json)
expect(output.trim()).toBe(markdown)
})
it('should handle blockquotes going back to shallower nesting', () => {
const markdown =
'> Level 1\n>\n> > Level 2\n> >\n> > > Level 3\n> >\n> > Back to level 2\n>\n> Back to level 1'
const json = markdownManager.parse(markdown)
const output = markdownManager.serialize(json)
expect(output.trim()).toBe(markdown)
})
it('should handle blockquotes with text content at different levels', () => {
const markdown =
'> Outer quote with some text\n>\n> > Inner quote with more text\n> >\n> > > Innermost quote'
const json = markdownManager.parse(markdown)
const output = markdownManager.serialize(json)
expect(output.trim()).toBe(markdown)
})
it('should handle blockquotes with mixed content including headings', () => {
const markdown =
'> This is a block quote\n>\n> With more paragraphs\n>\n> # And a heading\n>\n> > And nested\n> >\n> > ## And another heading'
const json = markdownManager.parse(markdown)
const output = markdownManager.serialize(json)
expect(output.trim()).toBe(markdown)
})
})