import { union } from '@prosekit/core' import { describe, expect, it } from 'vitest' import { defineDoc } from '../doc/index.ts' import { defineHardBreak } from '../hard-break/index.ts' import { defineHorizontalRule } from '../horizontal-rule/index.ts' import { defineParagraph } from '../paragraph/index.ts' import { setupTestFromExtension } from '../testing/index.ts' import { defineText } from '../text/index.ts' import { definePageBreak } from './page-break.ts' function setup() { const extension = union( defineDoc(), defineText(), defineParagraph(), defineHorizontalRule(), defineHardBreak(), definePageBreak(), ) return setupTestFromExtension(extension) } describe('insertPageBreak', () => { it('should insert a page break in an empty paragraph', () => { const { editor, n } = setup() editor.set(n.doc(n.paragraph(''))) editor.commands.insertPageBreak() expect(editor.view.state.doc.toJSON()).toEqual( n.doc(n.pageBreak()).toJSON(), ) }) it('should insert a page break after text', () => { const { editor, n } = setup() editor.set(n.doc(n.paragraph('hello'))) editor.commands.insertPageBreak() expect(editor.view.state.doc.toJSON()).toEqual( n.doc(n.paragraph('hello'), n.pageBreak()).toJSON(), ) }) it('should insert a page break before text', () => { const { editor, n } = setup() editor.set(n.doc(n.paragraph('hello'))) editor.commands.insertPageBreak() expect(editor.view.state.doc.toJSON()).toEqual( n.doc(n.pageBreak(), n.paragraph('hello')).toJSON(), ) }) it('should insert a page break between text', () => { const { editor, n } = setup() editor.set(n.doc(n.paragraph('hello'))) editor.commands.insertPageBreak() expect(editor.view.state.doc.toJSON()).toEqual( n.doc(n.paragraph('hel'), n.pageBreak(), n.paragraph('lo')).toJSON(), ) }) })