import { describe, test, expect, vi } from 'vitest'; import React from 'react'; import { createRoot, Root } from 'react-dom/client'; import { act } from 'react-dom/test-utils'; vi.mock('@craftjs/core', () => ({ useNode: (collect?: (node: any) => any) => { const node = { events: { selected: false } }; return { connectors: { connect: (el: any) => el, drag: (el: any) => el }, actions: { setProp: vi.fn() }, ...(collect ? collect(node) : {}), }; }, })); import { HtmlBlock } from './HtmlBlock'; let container: HTMLDivElement; let root: Root; function render(ui: React.ReactElement) { container = document.createElement('div'); document.body.appendChild(container); act(() => { root = createRoot(container); root.render(ui); }); } describe('HtmlBlock render ignores the style prop (matches toHtml)', () => { test('a stored backgroundColor/color/padding is NOT applied to the wrapper', () => { render( React.createElement(HtmlBlock as any, { code: '
hello
', style: { backgroundColor: 'rgb(255, 0, 0)', color: 'rgb(0, 0, 255)', padding: '40px' }, }), ); const wrapper = container.firstElementChild as HTMLElement; expect(wrapper.style.backgroundColor).toBe(''); expect(wrapper.style.color).toBe(''); expect(wrapper.style.padding).toBe(''); }); test('the editor affordances survive: minHeight is kept, content still renders', () => { render(React.createElement(HtmlBlock as any, { code: 'hello
', style: {} })); const wrapper = container.firstElementChild as HTMLElement; expect(wrapper.style.minHeight).toBe('40px'); expect(wrapper.innerHTML).toContain('hello'); }); });