Files
upstream-tiptap/packages/vue/tests/integration/useEditor.test.ts
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

55 lines
1.5 KiB
TypeScript

import Document from '@tiptap/extension-document'
import Paragraph from '@tiptap/extension-paragraph'
import Text from '@tiptap/extension-text'
import { afterEach, describe, expect, it, vi } from 'vite-plus/test'
import { createApp, defineComponent, h, nextTick } from 'vue'
import { EditorContent, useEditor } from '../../src/index.js'
describe('useEditor', () => {
const mountedElements: HTMLElement[] = []
afterEach(() => {
mountedElements.forEach(element => {
if (element.parentNode) {
element.parentNode.removeChild(element)
}
})
mountedElements.length = 0
})
it('should not replace Vue-owned DOM on unmount', async () => {
const replaceChildSpy = vi.spyOn(Node.prototype, 'replaceChild')
try {
const TestComponent = defineComponent({
setup() {
// oxlint-disable-next-line react-hooks/rules-of-hooks
const editor = useEditor({
extensions: [Document, Paragraph, Text],
content: '<p>Hello World</p>',
})
return () => h(EditorContent, { editor: editor.value })
},
})
const app = createApp(TestComponent)
const target = document.createElement('div')
document.body.appendChild(target)
mountedElements.push(target)
app.mount(target)
await nextTick()
await nextTick()
expect(() => app.unmount()).not.toThrow()
expect(replaceChildSpy).not.toHaveBeenCalled()
} finally {
replaceChildSpy.mockRestore()
}
})
})