import { describe, expect, it } from 'vitest'
import { CodeEditor } from './CodeEditor'
import { render } from '@/tests/helpers'
/**
* CodeEditor applies a default `h-full` so editors with no explicit height fill their container
* (GraphiQL, etc.). Callers that DO set a height (e.g. the email template editor's `h-96`) must
* win — otherwise the editor collapses to a single line.
*
* This regressed once already: #47339 appended the default as `cn(className, 'monaco-editor',
* 'h-full')`, and tailwind-merge keeps the *last* conflicting height utility, so the trailing
* `h-full` clobbered caller heights. #47350 fixed it by passing `className` last. These tests
* lock that ordering in.
*
* The `
` that receives the class is rendered by @monaco-editor/react before
* Monaco loads, so it's present in jsdom without a working editor.
*/
describe('CodeEditor height class precedence', () => {
const getEditorEl = (container: HTMLElement) => container.querySelector('.monaco-editor')
it('lets a caller-supplied height win over the default h-full (regression #47350)', () => {
const { container } = render()
const editor = getEditorEl(container)
expect(editor, 'editor wrapper should render').toBeTruthy()
expect(editor).toHaveClass('h-96')
expect(editor, 'default h-full must not override the caller height').not.toHaveClass('h-full')
})
it('falls back to the default h-full when the caller sets no height', () => {
const { container } = render()
const editor = getEditorEl(container)
expect(editor, 'editor wrapper should render').toBeTruthy()
expect(editor).toHaveClass('h-full')
})
})