import { render, screen, act } from '@testing-library/react'; import { CodeEditor, Language } from '../CodeEditor'; import styles from '@patternfly/react-styles/css/components/CodeEditor/code-editor'; jest.mock('@monaco-editor/react', () => jest.fn(() =>
)); test('Matches snapshot without props', () => { const { asFragment } = render(); expect(asFragment()).toMatchSnapshot(); }); test('Matches snapshot with control buttons enabled', () => { const { asFragment } = render(); expect(asFragment()).toMatchSnapshot(); }); test(`Renders with default classes ${styles.codeEditor}, ${styles.codeEditorCode}`, () => { render(); expect(screen.getByTestId('mock-editor').parentElement).toHaveClass(styles.codeEditorCode); expect(screen.getByTestId('mock-editor').parentElement?.parentElement?.parentElement).toHaveClass(styles.codeEditor); }); test('Renders custom class when className is passed', () => { render(); expect(screen.getByTestId('mock-editor').parentElement?.parentElement?.parentElement).toHaveClass('custom'); }); test(`Renders with ${styles.modifiers.readOnly} when isReadOnly = true`, () => { render(); expect(screen.getByTestId('mock-editor').parentElement?.parentElement?.parentElement).toHaveClass( styles.modifiers.readOnly ); }); test(`Renders with ${styles.codeEditorMain} when isUploadEnabled = true`, () => { render(); expect(screen.getByTestId('mock-editor').parentElement?.parentElement).toHaveClass(styles.codeEditorMain); }); test(`Renders with empty state when code = undefined`, () => { render(empty} />); expect(screen.getByText('empty')).toBeInTheDocument(); }); test(`Renders with empty state when isUploadEnabled = true and code = undefined`, () => { render(empty} isUploadEnabled />); expect(screen.getByText('empty')).toBeInTheDocument(); }); test(`Renders with language label when isLanguageLabelVisible`, () => { render(); expect(screen.getByText('JAVA')).toBeInTheDocument(); }); test(`Renders with custom controls when customControls is passed`, () => { render(control} />); expect(screen.getByText('control')).toBeInTheDocument(); }); test(`Renders with custom header content when headerMainContent is passed`, () => { render(); expect(screen.getByText('header content')).toBeInTheDocument(); }); test(`Renders with shortcuts when shortcutsPopoverButtonText is passed`, () => { render( ); expect(screen.getByText('shortcuts-button')).toBeInTheDocument(); act(() => { screen.getByText('shortcuts-button').click(); }); expect(screen.getByText('shortcuts')).toBeInTheDocument(); });