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(),
)
})
})