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
40 lines
1.2 KiB
TypeScript
40 lines
1.2 KiB
TypeScript
import React from 'react'
|
|
import { describe, expect, it, vi } from 'vite-plus/test'
|
|
|
|
import { createContentComponent } from './EditorContent.js'
|
|
import type { ReactRenderer } from './ReactRenderer.js'
|
|
|
|
const createRenderer = (id: string) =>
|
|
({
|
|
reactElement: React.createElement('span', null, id),
|
|
element: document.createElement('div'),
|
|
}) as ReactRenderer
|
|
|
|
describe('createContentComponent', () => {
|
|
it('batches synchronous renderer change notifications', async () => {
|
|
const contentComponent = createContentComponent()
|
|
const subscriber = vi.fn()
|
|
|
|
contentComponent.subscribe(subscriber)
|
|
|
|
contentComponent.setRenderer('first', createRenderer('first'))
|
|
contentComponent.setRenderer('second', createRenderer('second'))
|
|
|
|
expect(Object.keys(contentComponent.getSnapshot())).toEqual(['first', 'second'])
|
|
expect(subscriber).not.toHaveBeenCalled()
|
|
|
|
await Promise.resolve()
|
|
|
|
expect(subscriber).toHaveBeenCalledTimes(1)
|
|
|
|
contentComponent.removeRenderer('first')
|
|
contentComponent.removeRenderer('second')
|
|
|
|
expect(Object.keys(contentComponent.getSnapshot())).toEqual([])
|
|
|
|
await Promise.resolve()
|
|
|
|
expect(subscriber).toHaveBeenCalledTimes(2)
|
|
})
|
|
})
|