@patternfly/react-code-editor 6.0.0-alpha.9 → 6.0.0-alpha.90
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +880 -0
- package/README.md +46 -36
- package/dist/esm/components/CodeEditor/CodeEditor.d.ts +8 -2
- package/dist/esm/components/CodeEditor/CodeEditor.d.ts.map +1 -1
- package/dist/esm/components/CodeEditor/CodeEditor.js +47 -41
- package/dist/esm/components/CodeEditor/CodeEditor.js.map +1 -1
- package/dist/esm/components/CodeEditor/CodeEditorControl.d.ts.map +1 -1
- package/dist/esm/components/CodeEditor/CodeEditorControl.js +1 -1
- package/dist/esm/components/CodeEditor/CodeEditorControl.js.map +1 -1
- package/dist/js/components/CodeEditor/CodeEditor.d.ts +8 -2
- package/dist/js/components/CodeEditor/CodeEditor.d.ts.map +1 -1
- package/dist/js/components/CodeEditor/CodeEditor.js +47 -41
- package/dist/js/components/CodeEditor/CodeEditor.js.map +1 -1
- package/dist/js/components/CodeEditor/CodeEditorControl.d.ts.map +1 -1
- package/dist/js/components/CodeEditor/CodeEditorControl.js +1 -1
- package/dist/js/components/CodeEditor/CodeEditorControl.js.map +1 -1
- package/package.json +9 -10
- package/src/components/CodeEditor/CodeEditor.tsx +77 -65
- package/src/components/CodeEditor/CodeEditorControl.tsx +8 -3
- package/src/components/CodeEditor/__test__/CodeEditor.test.tsx +69 -39
- package/src/components/CodeEditor/__test__/CodeEditorControl.test.tsx +18 -0
- package/src/components/CodeEditor/__test__/__snapshots__/CodeEditor.test.tsx.snap +116 -536
- package/src/components/CodeEditor/__test__/__snapshots__/CodeEditorControl.test.tsx.snap +26 -0
- package/src/components/CodeEditor/examples/CodeEditor.md +5 -0
- package/src/components/CodeEditor/examples/CodeEditorCustomControl.tsx +2 -1
- package/src/components/CodeEditor/examples/CodeEditorShortcutMainHeader.tsx +51 -18
|
@@ -1,46 +1,76 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { render } from '@testing-library/react';
|
|
2
|
+
import { render, screen, act } from '@testing-library/react';
|
|
3
3
|
import { CodeEditor, Language } from '../CodeEditor';
|
|
4
|
+
import styles from '@patternfly/react-styles/css/components/CodeEditor/code-editor';
|
|
4
5
|
|
|
5
|
-
|
|
6
|
-
writable: true,
|
|
7
|
-
value: jest.fn().mockImplementation((query) => ({
|
|
8
|
-
matches: false,
|
|
9
|
-
media: query,
|
|
10
|
-
onchange: null,
|
|
11
|
-
addListener: jest.fn(), // Deprecated
|
|
12
|
-
removeListener: jest.fn(), // Deprecated
|
|
13
|
-
addEventListener: jest.fn(),
|
|
14
|
-
removeEventListener: jest.fn(),
|
|
15
|
-
dispatchEvent: jest.fn()
|
|
16
|
-
}))
|
|
17
|
-
});
|
|
18
|
-
|
|
19
|
-
describe('CodeEditor', () => {
|
|
20
|
-
beforeAll(() => {
|
|
21
|
-
window.HTMLCanvasElement.prototype.getContext = () => ({}) as any;
|
|
22
|
-
});
|
|
6
|
+
jest.mock('@monaco-editor/react', () => jest.fn(() => <div data-testid="mock-editor"></div>));
|
|
23
7
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
8
|
+
test('Matches snapshot without props', () => {
|
|
9
|
+
const { asFragment } = render(<CodeEditor code="test" />);
|
|
10
|
+
expect(asFragment()).toMatchSnapshot();
|
|
11
|
+
});
|
|
12
|
+
|
|
13
|
+
test('Matches snapshot with control buttons enabled', () => {
|
|
14
|
+
const { asFragment } = render(<CodeEditor isUploadEnabled isDownloadEnabled isCopyEnabled code="test" />);
|
|
15
|
+
expect(asFragment()).toMatchSnapshot();
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
test(`Renders with default classes ${styles.codeEditor}, ${styles.codeEditorMain}, ${styles.codeEditorCode}`, () => {
|
|
19
|
+
render(<CodeEditor />);
|
|
20
|
+
expect(screen.getByTestId('mock-editor').parentElement).toHaveClass(styles.codeEditorCode);
|
|
21
|
+
expect(screen.getByTestId('mock-editor').parentElement?.parentElement).toHaveClass(styles.codeEditorMain);
|
|
22
|
+
expect(screen.getByTestId('mock-editor').parentElement?.parentElement?.parentElement).toHaveClass(styles.codeEditor);
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
test('Renders custom class when className is passed', () => {
|
|
26
|
+
render(<CodeEditor className="custom" />);
|
|
27
|
+
expect(screen.getByTestId('mock-editor').parentElement?.parentElement?.parentElement).toHaveClass('custom');
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
test(`Renders with ${styles.modifiers.readOnly} when isReadOnly = true`, () => {
|
|
31
|
+
render(<CodeEditor isReadOnly />);
|
|
32
|
+
expect(screen.getByTestId('mock-editor').parentElement?.parentElement?.parentElement).toHaveClass(
|
|
33
|
+
styles.modifiers.readOnly
|
|
34
|
+
);
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
test(`Renders with ${styles.codeEditorUpload} when isUploadEnabled = true`, () => {
|
|
38
|
+
render(<CodeEditor isUploadEnabled code="test" />);
|
|
39
|
+
expect(screen.getByTestId('mock-editor').parentElement?.parentElement).toHaveClass(styles.codeEditorUpload);
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
test(`Renders with empty state when code = undefined`, () => {
|
|
43
|
+
render(<CodeEditor emptyState={<div>empty</div>} />);
|
|
44
|
+
expect(screen.getByText('empty')).toBeInTheDocument();
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
test(`Renders with empty state when isUploadEnabled = true and code = undefined`, () => {
|
|
48
|
+
render(<CodeEditor emptyState={<div>empty</div>} isUploadEnabled />);
|
|
49
|
+
expect(screen.getByText('empty')).toBeInTheDocument();
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
test(`Renders with language label when isLanguageLabelVisible`, () => {
|
|
53
|
+
render(<CodeEditor isLanguageLabelVisible language={Language.java} />);
|
|
54
|
+
expect(screen.getByText('JAVA')).toBeInTheDocument();
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
test(`Renders with custom controls when customControls is passed`, () => {
|
|
58
|
+
render(<CodeEditor customControls={<div>control</div>} />);
|
|
59
|
+
expect(screen.getByText('control')).toBeInTheDocument();
|
|
60
|
+
});
|
|
61
|
+
|
|
62
|
+
test(`Renders with custom header content when headerMainContent is passed`, () => {
|
|
63
|
+
render(<CodeEditor headerMainContent="header content" />);
|
|
64
|
+
expect(screen.getByText('header content')).toBeInTheDocument();
|
|
65
|
+
});
|
|
28
66
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
isLanguageLabelVisible
|
|
37
|
-
isDownloadEnabled
|
|
38
|
-
isCopyEnabled
|
|
39
|
-
height="400px"
|
|
40
|
-
code={'test'}
|
|
41
|
-
language={Language.javascript}
|
|
42
|
-
/>
|
|
43
|
-
);
|
|
44
|
-
expect(asFragment()).toMatchSnapshot();
|
|
67
|
+
test(`Renders with shortcuts when shortcutsPopoverButtonText is passed`, () => {
|
|
68
|
+
render(
|
|
69
|
+
<CodeEditor shortcutsPopoverButtonText="shortcuts-button" shortcutsPopoverProps={{ bodyContent: 'shortcuts' }} />
|
|
70
|
+
);
|
|
71
|
+
expect(screen.getByText('shortcuts-button')).toBeInTheDocument();
|
|
72
|
+
act(() => {
|
|
73
|
+
screen.getByText('shortcuts-button').click();
|
|
45
74
|
});
|
|
75
|
+
expect(screen.getByText('shortcuts')).toBeInTheDocument();
|
|
46
76
|
});
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { render, screen } from '@testing-library/react';
|
|
3
|
+
import { CodeEditorControl } from '../CodeEditorControl';
|
|
4
|
+
|
|
5
|
+
test('Matches snapshot', () => {
|
|
6
|
+
const { asFragment } = render(<CodeEditorControl icon={<div>icon</div>} onClick={jest.fn()} />);
|
|
7
|
+
expect(asFragment()).toMatchSnapshot();
|
|
8
|
+
});
|
|
9
|
+
|
|
10
|
+
test('Renders with custom class when className is passed', () => {
|
|
11
|
+
render(<CodeEditorControl className="custom" icon={<div>icon</div>} onClick={jest.fn()} />);
|
|
12
|
+
expect(screen.getByText('icon').parentElement?.parentElement).toHaveClass('custom');
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
test('Renders with accessible name when aria-label is passed', () => {
|
|
16
|
+
render(<CodeEditorControl aria-label="aria-test" icon={<div>icon</div>} onClick={jest.fn()} />);
|
|
17
|
+
expect(screen.getByLabelText('aria-test'));
|
|
18
|
+
});
|