@pie-lib/editable-html 13.0.7 → 13.1.0-beta.1
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 +0 -22
- package/lib/__tests__/editor-utils.test.js +164 -0
- package/lib/__tests__/editor-utils.test.js.map +1 -0
- package/lib/__tests__/serialization.test.js +241 -0
- package/lib/__tests__/serialization.test.js.map +1 -0
- package/lib/__tests__/utils.js +79 -0
- package/lib/__tests__/utils.js.map +1 -0
- package/lib/plugins/image/__tests__/component.test.js +96 -0
- package/lib/plugins/image/__tests__/component.test.js.map +1 -0
- package/lib/plugins/image/__tests__/image-toolbar-logic.test.js +131 -0
- package/lib/plugins/image/__tests__/image-toolbar-logic.test.js.map +1 -0
- package/lib/plugins/image/__tests__/image-toolbar.test.js +21 -0
- package/lib/plugins/image/__tests__/image-toolbar.test.js.map +1 -0
- package/lib/plugins/image/__tests__/index.test.js +86 -0
- package/lib/plugins/image/__tests__/index.test.js.map +1 -0
- package/lib/plugins/image/__tests__/insert-image-handler.test.js +112 -0
- package/lib/plugins/image/__tests__/insert-image-handler.test.js.map +1 -0
- package/lib/plugins/image/__tests__/mock-change.js +22 -0
- package/lib/plugins/image/__tests__/mock-change.js.map +1 -0
- package/lib/plugins/list/__tests__/index.test.js +63 -0
- package/lib/plugins/list/__tests__/index.test.js.map +1 -0
- package/lib/plugins/math/__tests__/index.test.js +284 -0
- package/lib/plugins/math/__tests__/index.test.js.map +1 -0
- package/lib/plugins/media/__tests__/index.test.js +69 -0
- package/lib/plugins/media/__tests__/index.test.js.map +1 -0
- package/lib/plugins/respArea/drag-in-the-blank/__tests__/choice.test.js +93 -0
- package/lib/plugins/respArea/drag-in-the-blank/__tests__/choice.test.js.map +1 -0
- package/lib/plugins/respArea/drag-in-the-blank/choice.js +3 -0
- package/lib/plugins/respArea/drag-in-the-blank/choice.js.map +1 -1
- package/lib/plugins/respArea/math-templated/index.js +2 -2
- package/lib/plugins/respArea/math-templated/index.js.map +1 -1
- package/lib/plugins/table/__tests__/index.test.js +416 -0
- package/lib/plugins/table/__tests__/index.test.js.map +1 -0
- package/lib/plugins/table/__tests__/table-toolbar.test.js +81 -0
- package/lib/plugins/table/__tests__/table-toolbar.test.js.map +1 -0
- package/lib/plugins/toolbar/__tests__/default-toolbar.test.js +153 -0
- package/lib/plugins/toolbar/__tests__/default-toolbar.test.js.map +1 -0
- package/lib/plugins/toolbar/__tests__/editor-and-toolbar.test.js +47 -0
- package/lib/plugins/toolbar/__tests__/editor-and-toolbar.test.js.map +1 -0
- package/lib/plugins/toolbar/__tests__/toolbar-buttons.test.js +112 -0
- package/lib/plugins/toolbar/__tests__/toolbar-buttons.test.js.map +1 -0
- package/lib/plugins/toolbar/__tests__/toolbar.test.js +118 -0
- package/lib/plugins/toolbar/__tests__/toolbar.test.js.map +1 -0
- package/lib/shared/alert-dialog.js +68 -0
- package/package.json +7 -7
- package/src/__tests__/utils.js +1 -1
- package/src/plugins/respArea/drag-in-the-blank/__tests__/choice.test.js +71 -0
- package/src/plugins/respArea/drag-in-the-blank/choice.jsx +3 -0
- package/src/plugins/respArea/math-templated/index.jsx +1 -1
- package/LICENSE.md +0 -5
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
5
|
+
var _react = _interopRequireDefault(require("react"));
|
|
6
|
+
var _react2 = require("@testing-library/react");
|
|
7
|
+
var _tableToolbar = require("../table-toolbar");
|
|
8
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
9
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
10
|
+
describe('table-toolbar', function () {
|
|
11
|
+
var onDone, onAddColumn, onAddRow, onRemoveColumn, onRemoveRow, onRemoveTable, onToggleBorder;
|
|
12
|
+
beforeEach(function () {
|
|
13
|
+
onAddColumn = jest.fn();
|
|
14
|
+
onAddRow = jest.fn();
|
|
15
|
+
onRemoveColumn = jest.fn();
|
|
16
|
+
onRemoveRow = jest.fn();
|
|
17
|
+
onRemoveTable = jest.fn();
|
|
18
|
+
onDone = jest.fn();
|
|
19
|
+
onToggleBorder = jest.fn();
|
|
20
|
+
});
|
|
21
|
+
var renderComponent = function renderComponent() {
|
|
22
|
+
var extras = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
23
|
+
var props = _objectSpread({
|
|
24
|
+
onDone: onDone,
|
|
25
|
+
onAddRow: onAddRow,
|
|
26
|
+
onRemoveRow: onRemoveRow,
|
|
27
|
+
onAddColumn: onAddColumn,
|
|
28
|
+
onRemoveColumn: onRemoveColumn,
|
|
29
|
+
onRemoveTable: onRemoveTable,
|
|
30
|
+
hasBorder: true,
|
|
31
|
+
onToggleBorder: onToggleBorder,
|
|
32
|
+
classes: {
|
|
33
|
+
tableToolbar: 'table-toolbar'
|
|
34
|
+
},
|
|
35
|
+
plugins: [],
|
|
36
|
+
value: {},
|
|
37
|
+
onChange: jest.fn()
|
|
38
|
+
}, extras);
|
|
39
|
+
return (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_tableToolbar.TableToolbar, props));
|
|
40
|
+
};
|
|
41
|
+
describe('rendering', function () {
|
|
42
|
+
it('renders toolbar without crashing', function () {
|
|
43
|
+
var _renderComponent = renderComponent(),
|
|
44
|
+
container = _renderComponent.container;
|
|
45
|
+
|
|
46
|
+
// Check that the toolbar container is rendered
|
|
47
|
+
expect(container.firstChild).toBeInTheDocument();
|
|
48
|
+
|
|
49
|
+
// Check for Done button (only one with aria-label)
|
|
50
|
+
expect(_react2.screen.getByLabelText('Done')).toBeInTheDocument();
|
|
51
|
+
|
|
52
|
+
// Check that there are multiple buttons (table manipulation buttons)
|
|
53
|
+
var buttons = container.querySelectorAll('button');
|
|
54
|
+
expect(buttons.length).toBeGreaterThan(1);
|
|
55
|
+
});
|
|
56
|
+
it('renders with hasBorder prop', function () {
|
|
57
|
+
var _renderComponent2 = renderComponent({
|
|
58
|
+
hasBorder: false
|
|
59
|
+
}),
|
|
60
|
+
container = _renderComponent2.container;
|
|
61
|
+
expect(container.firstChild).toBeInTheDocument();
|
|
62
|
+
|
|
63
|
+
// Verify hasBorder affects rendering - button with aria-pressed attribute
|
|
64
|
+
var borderButton = container.querySelector('button[aria-pressed]');
|
|
65
|
+
expect(borderButton).toBeInTheDocument();
|
|
66
|
+
expect(borderButton).toHaveAttribute('aria-pressed', 'false');
|
|
67
|
+
});
|
|
68
|
+
it('renders with hasBorder true', function () {
|
|
69
|
+
var _renderComponent3 = renderComponent({
|
|
70
|
+
hasBorder: true
|
|
71
|
+
}),
|
|
72
|
+
container = _renderComponent3.container;
|
|
73
|
+
|
|
74
|
+
// Verify hasBorder affects rendering
|
|
75
|
+
var borderButton = container.querySelector('button[aria-pressed]');
|
|
76
|
+
expect(borderButton).toBeInTheDocument();
|
|
77
|
+
expect(borderButton).toHaveAttribute('aria-pressed', 'true');
|
|
78
|
+
});
|
|
79
|
+
});
|
|
80
|
+
});
|
|
81
|
+
//# sourceMappingURL=table-toolbar.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"table-toolbar.test.js","names":["_react","_interopRequireDefault","require","_react2","_tableToolbar","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","describe","onDone","onAddColumn","onAddRow","onRemoveColumn","onRemoveRow","onRemoveTable","onToggleBorder","beforeEach","jest","fn","renderComponent","extras","undefined","props","hasBorder","classes","tableToolbar","plugins","value","onChange","render","createElement","TableToolbar","it","_renderComponent","container","expect","firstChild","toBeInTheDocument","screen","getByLabelText","buttons","querySelectorAll","toBeGreaterThan","_renderComponent2","borderButton","querySelector","toHaveAttribute","_renderComponent3"],"sources":["../../../../src/plugins/table/__tests__/table-toolbar.test.jsx"],"sourcesContent":["import React from 'react';\nimport { render, screen } from '@testing-library/react';\nimport { TableToolbar } from '../table-toolbar';\n\ndescribe('table-toolbar', () => {\n let onDone, onAddColumn, onAddRow, onRemoveColumn, onRemoveRow, onRemoveTable, onToggleBorder;\n\n beforeEach(() => {\n onAddColumn = jest.fn();\n onAddRow = jest.fn();\n onRemoveColumn = jest.fn();\n onRemoveRow = jest.fn();\n onRemoveTable = jest.fn();\n onDone = jest.fn();\n onToggleBorder = jest.fn();\n });\n\n const renderComponent = (extras = {}) => {\n const props = {\n onDone,\n onAddRow,\n onRemoveRow,\n onAddColumn,\n onRemoveColumn,\n onRemoveTable,\n hasBorder: true,\n onToggleBorder,\n classes: {\n tableToolbar: 'table-toolbar',\n },\n plugins: [],\n value: {},\n onChange: jest.fn(),\n ...extras,\n };\n\n return render(<TableToolbar {...props} />);\n };\n\n describe('rendering', () => {\n it('renders toolbar without crashing', () => {\n const { container } = renderComponent();\n\n // Check that the toolbar container is rendered\n expect(container.firstChild).toBeInTheDocument();\n\n // Check for Done button (only one with aria-label)\n expect(screen.getByLabelText('Done')).toBeInTheDocument();\n\n // Check that there are multiple buttons (table manipulation buttons)\n const buttons = container.querySelectorAll('button');\n expect(buttons.length).toBeGreaterThan(1);\n });\n\n it('renders with hasBorder prop', () => {\n const { container } = renderComponent({ hasBorder: false });\n\n expect(container.firstChild).toBeInTheDocument();\n\n // Verify hasBorder affects rendering - button with aria-pressed attribute\n const borderButton = container.querySelector('button[aria-pressed]');\n expect(borderButton).toBeInTheDocument();\n expect(borderButton).toHaveAttribute('aria-pressed', 'false');\n });\n\n it('renders with hasBorder true', () => {\n const { container } = renderComponent({ hasBorder: true });\n\n // Verify hasBorder affects rendering\n const borderButton = container.querySelector('button[aria-pressed]');\n expect(borderButton).toBeInTheDocument();\n expect(borderButton).toHaveAttribute('aria-pressed', 'true');\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
5
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
6
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
7
|
+
var _react = _interopRequireDefault(require("react"));
|
|
8
|
+
var _react2 = require("@testing-library/react");
|
|
9
|
+
var _slate = require("slate");
|
|
10
|
+
var _defaultToolbar = require("../default-toolbar");
|
|
11
|
+
// Mock the DoneButton component directly to avoid styled component issues
|
|
12
|
+
jest.mock('../done-button', function () {
|
|
13
|
+
return {
|
|
14
|
+
DoneButton: function DoneButton(props) {
|
|
15
|
+
return /*#__PURE__*/_react["default"].createElement("button", {
|
|
16
|
+
"aria-label": "Done",
|
|
17
|
+
onClick: props.onClick,
|
|
18
|
+
"data-testid": "done-button"
|
|
19
|
+
}, "Done");
|
|
20
|
+
},
|
|
21
|
+
RawDoneButton: function RawDoneButton(props) {
|
|
22
|
+
return /*#__PURE__*/_react["default"].createElement("button", {
|
|
23
|
+
"aria-label": "Done",
|
|
24
|
+
onClick: props.onClick,
|
|
25
|
+
className: "RawDoneButton"
|
|
26
|
+
}, "Done");
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
});
|
|
30
|
+
describe('default-toolbar', function () {
|
|
31
|
+
var onDone;
|
|
32
|
+
var onChange;
|
|
33
|
+
var getFocusedValue;
|
|
34
|
+
var defaultProps;
|
|
35
|
+
beforeEach(function () {
|
|
36
|
+
onDone = jest.fn();
|
|
37
|
+
onChange = jest.fn();
|
|
38
|
+
getFocusedValue = jest.fn();
|
|
39
|
+
defaultProps = {
|
|
40
|
+
classes: {},
|
|
41
|
+
value: _slate.Value.fromJSON({}),
|
|
42
|
+
plugins: [],
|
|
43
|
+
className: 'className',
|
|
44
|
+
onDone: onDone,
|
|
45
|
+
onChange: onChange,
|
|
46
|
+
getFocusedValue: getFocusedValue,
|
|
47
|
+
deletable: false,
|
|
48
|
+
showDone: true
|
|
49
|
+
};
|
|
50
|
+
});
|
|
51
|
+
describe('rendering', function () {
|
|
52
|
+
it('renders toolbar', function () {
|
|
53
|
+
var _render = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_defaultToolbar.DefaultToolbar, (0, _extends2["default"])({}, defaultProps, {
|
|
54
|
+
deletable: false
|
|
55
|
+
}))),
|
|
56
|
+
container = _render.container;
|
|
57
|
+
expect(container.firstChild).toBeInTheDocument();
|
|
58
|
+
});
|
|
59
|
+
it('renders with 1 plugin', function () {
|
|
60
|
+
var _render2 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_defaultToolbar.DefaultToolbar, (0, _extends2["default"])({}, defaultProps, {
|
|
61
|
+
plugins: [{
|
|
62
|
+
toolbar: {
|
|
63
|
+
icon: /*#__PURE__*/_react["default"].createElement("span", null, "Icon1")
|
|
64
|
+
},
|
|
65
|
+
name: 'plugin-one'
|
|
66
|
+
}]
|
|
67
|
+
}))),
|
|
68
|
+
container = _render2.container;
|
|
69
|
+
expect(container.firstChild).toBeInTheDocument();
|
|
70
|
+
// Should render plugin toolbar button
|
|
71
|
+
});
|
|
72
|
+
it('renders with 2 plugins', function () {
|
|
73
|
+
var _render3 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_defaultToolbar.DefaultToolbar, (0, _extends2["default"])({}, defaultProps, {
|
|
74
|
+
plugins: [{
|
|
75
|
+
toolbar: {
|
|
76
|
+
icon: /*#__PURE__*/_react["default"].createElement("span", null, "Icon1")
|
|
77
|
+
},
|
|
78
|
+
name: 'plugin-one'
|
|
79
|
+
}, {
|
|
80
|
+
toolbar: {
|
|
81
|
+
icon: /*#__PURE__*/_react["default"].createElement("span", null, "Icon2")
|
|
82
|
+
},
|
|
83
|
+
name: 'plugin-two'
|
|
84
|
+
}]
|
|
85
|
+
}))),
|
|
86
|
+
container = _render3.container;
|
|
87
|
+
expect(container.firstChild).toBeInTheDocument();
|
|
88
|
+
// Should render both plugin toolbar buttons
|
|
89
|
+
});
|
|
90
|
+
it('renders only enabled plugins when one is disabled', function () {
|
|
91
|
+
var _render4 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_defaultToolbar.DefaultToolbar, (0, _extends2["default"])({}, defaultProps, {
|
|
92
|
+
pluginProps: {
|
|
93
|
+
'plugin-one': {
|
|
94
|
+
disabled: true
|
|
95
|
+
}
|
|
96
|
+
},
|
|
97
|
+
plugins: [{
|
|
98
|
+
toolbar: {
|
|
99
|
+
icon: /*#__PURE__*/_react["default"].createElement("span", null, "Icon1")
|
|
100
|
+
},
|
|
101
|
+
name: 'plugin-one'
|
|
102
|
+
}, {
|
|
103
|
+
toolbar: {
|
|
104
|
+
icon: /*#__PURE__*/_react["default"].createElement("span", null, "Icon2")
|
|
105
|
+
},
|
|
106
|
+
name: 'plugin-two'
|
|
107
|
+
}]
|
|
108
|
+
}))),
|
|
109
|
+
container = _render4.container;
|
|
110
|
+
expect(container.firstChild).toBeInTheDocument();
|
|
111
|
+
// Only plugin-two should be rendered (plugin-one is disabled)
|
|
112
|
+
});
|
|
113
|
+
it('renders done button when not deletable', function () {
|
|
114
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_defaultToolbar.DefaultToolbar, (0, _extends2["default"])({}, defaultProps, {
|
|
115
|
+
deletable: false
|
|
116
|
+
})));
|
|
117
|
+
expect(_react2.screen.getByLabelText('Done')).toBeInTheDocument();
|
|
118
|
+
});
|
|
119
|
+
it('does not render done button when deletable', function () {
|
|
120
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_defaultToolbar.DefaultToolbar, (0, _extends2["default"])({}, defaultProps, {
|
|
121
|
+
deletable: true
|
|
122
|
+
})));
|
|
123
|
+
expect(_react2.screen.queryByLabelText('Done')).not.toBeInTheDocument();
|
|
124
|
+
});
|
|
125
|
+
it('does not render done button when showDone is false', function () {
|
|
126
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_defaultToolbar.DefaultToolbar, (0, _extends2["default"])({}, defaultProps, {
|
|
127
|
+
showDone: false,
|
|
128
|
+
deletable: false
|
|
129
|
+
})));
|
|
130
|
+
expect(_react2.screen.queryByLabelText('Done')).not.toBeInTheDocument();
|
|
131
|
+
});
|
|
132
|
+
});
|
|
133
|
+
describe('interactions', function () {
|
|
134
|
+
it('calls onDone when done button is clicked', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee() {
|
|
135
|
+
var doneButton;
|
|
136
|
+
return _regenerator["default"].wrap(function (_context) {
|
|
137
|
+
while (1) switch (_context.prev = _context.next) {
|
|
138
|
+
case 0:
|
|
139
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_defaultToolbar.DefaultToolbar, (0, _extends2["default"])({}, defaultProps, {
|
|
140
|
+
deletable: false
|
|
141
|
+
})));
|
|
142
|
+
doneButton = _react2.screen.getByLabelText('Done');
|
|
143
|
+
_react2.fireEvent.click(doneButton);
|
|
144
|
+
expect(onDone).toHaveBeenCalled();
|
|
145
|
+
case 1:
|
|
146
|
+
case "end":
|
|
147
|
+
return _context.stop();
|
|
148
|
+
}
|
|
149
|
+
}, _callee);
|
|
150
|
+
})));
|
|
151
|
+
});
|
|
152
|
+
});
|
|
153
|
+
//# sourceMappingURL=default-toolbar.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"default-toolbar.test.js","names":["_react","_interopRequireDefault","require","_react2","_slate","_defaultToolbar","jest","mock","DoneButton","props","createElement","onClick","RawDoneButton","className","describe","onDone","onChange","getFocusedValue","defaultProps","beforeEach","fn","classes","value","Value","fromJSON","plugins","deletable","showDone","it","_render","render","DefaultToolbar","_extends2","container","expect","firstChild","toBeInTheDocument","_render2","toolbar","icon","name","_render3","_render4","pluginProps","disabled","screen","getByLabelText","queryByLabelText","not","_asyncToGenerator2","_regenerator","mark","_callee","doneButton","wrap","_context","prev","next","fireEvent","click","toHaveBeenCalled","stop"],"sources":["../../../../src/plugins/toolbar/__tests__/default-toolbar.test.jsx"],"sourcesContent":["import React from 'react';\nimport { fireEvent, render, screen } from '@testing-library/react';\nimport { Value } from 'slate';\nimport { DefaultToolbar } from '../default-toolbar';\n\n// Mock the DoneButton component directly to avoid styled component issues\njest.mock('../done-button', () => ({\n DoneButton: (props) => (\n <button aria-label=\"Done\" onClick={props.onClick} data-testid=\"done-button\">\n Done\n </button>\n ),\n RawDoneButton: (props) => (\n <button aria-label=\"Done\" onClick={props.onClick} className=\"RawDoneButton\">\n Done\n </button>\n ),\n}));\n\ndescribe('default-toolbar', () => {\n let onDone;\n let onChange;\n let getFocusedValue;\n let defaultProps;\n\n beforeEach(() => {\n onDone = jest.fn();\n onChange = jest.fn();\n getFocusedValue = jest.fn();\n\n defaultProps = {\n classes: {},\n value: Value.fromJSON({}),\n plugins: [],\n className: 'className',\n onDone,\n onChange,\n getFocusedValue,\n deletable: false,\n showDone: true,\n };\n });\n\n describe('rendering', () => {\n it('renders toolbar', () => {\n const { container } = render(<DefaultToolbar {...defaultProps} deletable={false} />);\n expect(container.firstChild).toBeInTheDocument();\n });\n\n it('renders with 1 plugin', () => {\n const { container } = render(\n <DefaultToolbar {...defaultProps} plugins={[{ toolbar: { icon: <span>Icon1</span> }, name: 'plugin-one' }]} />,\n );\n\n expect(container.firstChild).toBeInTheDocument();\n // Should render plugin toolbar button\n });\n\n it('renders with 2 plugins', () => {\n const { container } = render(\n <DefaultToolbar\n {...defaultProps}\n plugins={[\n { toolbar: { icon: <span>Icon1</span> }, name: 'plugin-one' },\n { toolbar: { icon: <span>Icon2</span> }, name: 'plugin-two' },\n ]}\n />,\n );\n\n expect(container.firstChild).toBeInTheDocument();\n // Should render both plugin toolbar buttons\n });\n\n it('renders only enabled plugins when one is disabled', () => {\n const { container } = render(\n <DefaultToolbar\n {...defaultProps}\n pluginProps={{\n 'plugin-one': {\n disabled: true,\n },\n }}\n plugins={[\n { toolbar: { icon: <span>Icon1</span> }, name: 'plugin-one' },\n { toolbar: { icon: <span>Icon2</span> }, name: 'plugin-two' },\n ]}\n />,\n );\n\n expect(container.firstChild).toBeInTheDocument();\n // Only plugin-two should be rendered (plugin-one is disabled)\n });\n\n it('renders done button when not deletable', () => {\n render(<DefaultToolbar {...defaultProps} deletable={false} />);\n\n expect(screen.getByLabelText('Done')).toBeInTheDocument();\n });\n\n it('does not render done button when deletable', () => {\n render(<DefaultToolbar {...defaultProps} deletable={true} />);\n\n expect(screen.queryByLabelText('Done')).not.toBeInTheDocument();\n });\n\n it('does not render done button when showDone is false', () => {\n render(<DefaultToolbar {...defaultProps} showDone={false} deletable={false} />);\n\n expect(screen.queryByLabelText('Done')).not.toBeInTheDocument();\n });\n });\n\n describe('interactions', () => {\n it('calls onDone when done button is clicked', async () => {\n render(<DefaultToolbar {...defaultProps} deletable={false} />);\n\n const doneButton = screen.getByLabelText('Done');\n fireEvent.click(doneButton);\n\n expect(onDone).toHaveBeenCalled();\n });\n });\n});\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AACA,IAAAE,MAAA,GAAAF,OAAA;AACA,IAAAG,eAAA,GAAAH,OAAA;AAEA;AACAI,IAAI,CAACC,IAAI,CAAC,gBAAgB,EAAE;EAAA,OAAO;IACjCC,UAAU,EAAE,SAAZA,UAAUA,CAAGC,KAAK;MAAA,oBAChBT,MAAA,YAAAU,aAAA;QAAQ,cAAW,MAAM;QAACC,OAAO,EAAEF,KAAK,CAACE,OAAQ;QAAC,eAAY;MAAa,GAAC,MAEpE,CAAC;IAAA,CACV;IACDC,aAAa,EAAE,SAAfA,aAAaA,CAAGH,KAAK;MAAA,oBACnBT,MAAA,YAAAU,aAAA;QAAQ,cAAW,MAAM;QAACC,OAAO,EAAEF,KAAK,CAACE,OAAQ;QAACE,SAAS,EAAC;MAAe,GAAC,MAEpE,CAAC;IAAA;EAEb,CAAC;AAAA,CAAC,CAAC;AAEHC,QAAQ,CAAC,iBAAiB,EAAE,YAAM;EAChC,IAAIC,MAAM;EACV,IAAIC,QAAQ;EACZ,IAAIC,eAAe;EACnB,IAAIC,YAAY;EAEhBC,UAAU,CAAC,YAAM;IACfJ,MAAM,GAAGT,IAAI,CAACc,EAAE,CAAC,CAAC;IAClBJ,QAAQ,GAAGV,IAAI,CAACc,EAAE,CAAC,CAAC;IACpBH,eAAe,GAAGX,IAAI,CAACc,EAAE,CAAC,CAAC;IAE3BF,YAAY,GAAG;MACbG,OAAO,EAAE,CAAC,CAAC;MACXC,KAAK,EAAEC,YAAK,CAACC,QAAQ,CAAC,CAAC,CAAC,CAAC;MACzBC,OAAO,EAAE,EAAE;MACXZ,SAAS,EAAE,WAAW;MACtBE,MAAM,EAANA,MAAM;MACNC,QAAQ,EAARA,QAAQ;MACRC,eAAe,EAAfA,eAAe;MACfS,SAAS,EAAE,KAAK;MAChBC,QAAQ,EAAE;IACZ,CAAC;EACH,CAAC,CAAC;EAEFb,QAAQ,CAAC,WAAW,EAAE,YAAM;IAC1Bc,EAAE,CAAC,iBAAiB,EAAE,YAAM;MAC1B,IAAAC,OAAA,GAAsB,IAAAC,cAAM,eAAC9B,MAAA,YAAAU,aAAA,CAACL,eAAA,CAAA0B,cAAc,MAAAC,SAAA,iBAAKd,YAAY;UAAEQ,SAAS,EAAE;QAAM,EAAE,CAAC,CAAC;QAA5EO,SAAS,GAAAJ,OAAA,CAATI,SAAS;MACjBC,MAAM,CAACD,SAAS,CAACE,UAAU,CAAC,CAACC,iBAAiB,CAAC,CAAC;IAClD,CAAC,CAAC;IAEFR,EAAE,CAAC,uBAAuB,EAAE,YAAM;MAChC,IAAAS,QAAA,GAAsB,IAAAP,cAAM,eAC1B9B,MAAA,YAAAU,aAAA,CAACL,eAAA,CAAA0B,cAAc,MAAAC,SAAA,iBAAKd,YAAY;UAAEO,OAAO,EAAE,CAAC;YAAEa,OAAO,EAAE;cAAEC,IAAI,eAAEvC,MAAA,YAAAU,aAAA,eAAM,OAAW;YAAE,CAAC;YAAE8B,IAAI,EAAE;UAAa,CAAC;QAAE,EAAE,CAC/G,CAAC;QAFOP,SAAS,GAAAI,QAAA,CAATJ,SAAS;MAIjBC,MAAM,CAACD,SAAS,CAACE,UAAU,CAAC,CAACC,iBAAiB,CAAC,CAAC;MAChD;IACF,CAAC,CAAC;IAEFR,EAAE,CAAC,wBAAwB,EAAE,YAAM;MACjC,IAAAa,QAAA,GAAsB,IAAAX,cAAM,eAC1B9B,MAAA,YAAAU,aAAA,CAACL,eAAA,CAAA0B,cAAc,MAAAC,SAAA,iBACTd,YAAY;UAChBO,OAAO,EAAE,CACP;YAAEa,OAAO,EAAE;cAAEC,IAAI,eAAEvC,MAAA,YAAAU,aAAA,eAAM,OAAW;YAAE,CAAC;YAAE8B,IAAI,EAAE;UAAa,CAAC,EAC7D;YAAEF,OAAO,EAAE;cAAEC,IAAI,eAAEvC,MAAA,YAAAU,aAAA,eAAM,OAAW;YAAE,CAAC;YAAE8B,IAAI,EAAE;UAAa,CAAC;QAC7D,EACH,CACH,CAAC;QAROP,SAAS,GAAAQ,QAAA,CAATR,SAAS;MAUjBC,MAAM,CAACD,SAAS,CAACE,UAAU,CAAC,CAACC,iBAAiB,CAAC,CAAC;MAChD;IACF,CAAC,CAAC;IAEFR,EAAE,CAAC,mDAAmD,EAAE,YAAM;MAC5D,IAAAc,QAAA,GAAsB,IAAAZ,cAAM,eAC1B9B,MAAA,YAAAU,aAAA,CAACL,eAAA,CAAA0B,cAAc,MAAAC,SAAA,iBACTd,YAAY;UAChByB,WAAW,EAAE;YACX,YAAY,EAAE;cACZC,QAAQ,EAAE;YACZ;UACF,CAAE;UACFnB,OAAO,EAAE,CACP;YAAEa,OAAO,EAAE;cAAEC,IAAI,eAAEvC,MAAA,YAAAU,aAAA,eAAM,OAAW;YAAE,CAAC;YAAE8B,IAAI,EAAE;UAAa,CAAC,EAC7D;YAAEF,OAAO,EAAE;cAAEC,IAAI,eAAEvC,MAAA,YAAAU,aAAA,eAAM,OAAW;YAAE,CAAC;YAAE8B,IAAI,EAAE;UAAa,CAAC;QAC7D,EACH,CACH,CAAC;QAbOP,SAAS,GAAAS,QAAA,CAATT,SAAS;MAejBC,MAAM,CAACD,SAAS,CAACE,UAAU,CAAC,CAACC,iBAAiB,CAAC,CAAC;MAChD;IACF,CAAC,CAAC;IAEFR,EAAE,CAAC,wCAAwC,EAAE,YAAM;MACjD,IAAAE,cAAM,eAAC9B,MAAA,YAAAU,aAAA,CAACL,eAAA,CAAA0B,cAAc,MAAAC,SAAA,iBAAKd,YAAY;QAAEQ,SAAS,EAAE;MAAM,EAAE,CAAC,CAAC;MAE9DQ,MAAM,CAACW,cAAM,CAACC,cAAc,CAAC,MAAM,CAAC,CAAC,CAACV,iBAAiB,CAAC,CAAC;IAC3D,CAAC,CAAC;IAEFR,EAAE,CAAC,4CAA4C,EAAE,YAAM;MACrD,IAAAE,cAAM,eAAC9B,MAAA,YAAAU,aAAA,CAACL,eAAA,CAAA0B,cAAc,MAAAC,SAAA,iBAAKd,YAAY;QAAEQ,SAAS,EAAE;MAAK,EAAE,CAAC,CAAC;MAE7DQ,MAAM,CAACW,cAAM,CAACE,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAACC,GAAG,CAACZ,iBAAiB,CAAC,CAAC;IACjE,CAAC,CAAC;IAEFR,EAAE,CAAC,oDAAoD,EAAE,YAAM;MAC7D,IAAAE,cAAM,eAAC9B,MAAA,YAAAU,aAAA,CAACL,eAAA,CAAA0B,cAAc,MAAAC,SAAA,iBAAKd,YAAY;QAAES,QAAQ,EAAE,KAAM;QAACD,SAAS,EAAE;MAAM,EAAE,CAAC,CAAC;MAE/EQ,MAAM,CAACW,cAAM,CAACE,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAACC,GAAG,CAACZ,iBAAiB,CAAC,CAAC;IACjE,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFtB,QAAQ,CAAC,cAAc,EAAE,YAAM;IAC7Bc,EAAE,CAAC,0CAA0C,mBAAAqB,kBAAA,0BAAAC,YAAA,YAAAC,IAAA,CAAE,SAAAC,QAAA;MAAA,IAAAC,UAAA;MAAA,OAAAH,YAAA,YAAAI,IAAA,WAAAC,QAAA;QAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;UAAA;YAC7C,IAAA3B,cAAM,eAAC9B,MAAA,YAAAU,aAAA,CAACL,eAAA,CAAA0B,cAAc,MAAAC,SAAA,iBAAKd,YAAY;cAAEQ,SAAS,EAAE;YAAM,EAAE,CAAC,CAAC;YAExD2B,UAAU,GAAGR,cAAM,CAACC,cAAc,CAAC,MAAM,CAAC;YAChDY,iBAAS,CAACC,KAAK,CAACN,UAAU,CAAC;YAE3BnB,MAAM,CAACnB,MAAM,CAAC,CAAC6C,gBAAgB,CAAC,CAAC;UAAC;UAAA;YAAA,OAAAL,QAAA,CAAAM,IAAA;QAAA;MAAA,GAAAT,OAAA;IAAA,CACnC,GAAC;EACJ,CAAC,CAAC;AACJ,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _utils = require("../../../__tests__/utils");
|
|
5
|
+
var _slate = require("slate");
|
|
6
|
+
var _editorAndToolbar = require("../editor-and-toolbar");
|
|
7
|
+
var _react = _interopRequireDefault(require("react"));
|
|
8
|
+
var _debug = _interopRequireDefault(require("debug"));
|
|
9
|
+
var _react2 = require("@testing-library/react");
|
|
10
|
+
jest.mock('../toolbar', function () {
|
|
11
|
+
return function () {
|
|
12
|
+
return /*#__PURE__*/_react["default"].createElement("div", null, "---- toolbar ------ ");
|
|
13
|
+
};
|
|
14
|
+
});
|
|
15
|
+
(0, _utils.mockIconButton)();
|
|
16
|
+
var log = (0, _debug["default"])('@pie-lib:editable-html:test:editor-and-toolbar');
|
|
17
|
+
describe('toolbar', function () {
|
|
18
|
+
var onDelete, classes;
|
|
19
|
+
beforeEach(function () {
|
|
20
|
+
onDelete = jest.fn();
|
|
21
|
+
classes = (0, _utils.classObject)('root', 'editorHolder', 'editorInFocus');
|
|
22
|
+
});
|
|
23
|
+
it('renders EditorAndToolbar component', function () {
|
|
24
|
+
var value = _slate.Value.fromJSON({});
|
|
25
|
+
Object.defineProperty(value, 'isFocused', {
|
|
26
|
+
get: jest.fn(function () {
|
|
27
|
+
return true;
|
|
28
|
+
})
|
|
29
|
+
});
|
|
30
|
+
var _render = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_editorAndToolbar.EditorAndToolbar, {
|
|
31
|
+
classes: classes,
|
|
32
|
+
value: value,
|
|
33
|
+
plugins: [],
|
|
34
|
+
onDone: jest.fn(),
|
|
35
|
+
onChange: jest.fn()
|
|
36
|
+
}, "children")),
|
|
37
|
+
container = _render.container;
|
|
38
|
+
|
|
39
|
+
// Verify component rendered
|
|
40
|
+
expect(container.firstChild).toBeInTheDocument();
|
|
41
|
+
// Verify toolbar is present
|
|
42
|
+
expect(_react2.screen.getByText('---- toolbar ------')).toBeInTheDocument();
|
|
43
|
+
// Verify children are rendered
|
|
44
|
+
expect(_react2.screen.getByText('children')).toBeInTheDocument();
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
//# sourceMappingURL=editor-and-toolbar.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"editor-and-toolbar.test.js","names":["_utils","require","_slate","_editorAndToolbar","_react","_interopRequireDefault","_debug","_react2","jest","mock","createElement","mockIconButton","log","debug","describe","onDelete","classes","beforeEach","fn","classObject","it","value","Value","fromJSON","Object","defineProperty","get","_render","render","EditorAndToolbar","plugins","onDone","onChange","container","expect","firstChild","toBeInTheDocument","screen","getByText"],"sources":["../../../../src/plugins/toolbar/__tests__/editor-and-toolbar.test.jsx"],"sourcesContent":["import { classObject, mockIconButton } from '../../../__tests__/utils';\n\nimport { Value } from 'slate';\nimport { EditorAndToolbar } from '../editor-and-toolbar';\nimport React from 'react';\nimport debug from 'debug';\nimport { render, screen } from '@testing-library/react';\n\njest.mock('../toolbar', () => () => <div>---- toolbar ------ </div>);\n\nmockIconButton();\n\nconst log = debug('@pie-lib:editable-html:test:editor-and-toolbar');\n\ndescribe('toolbar', () => {\n let onDelete, classes;\n\n beforeEach(() => {\n onDelete = jest.fn();\n classes = classObject('root', 'editorHolder', 'editorInFocus');\n });\n\n it('renders EditorAndToolbar component', () => {\n const value = Value.fromJSON({});\n Object.defineProperty(value, 'isFocused', { get: jest.fn(() => true) });\n\n const { container } = render(\n <EditorAndToolbar classes={classes} value={value} plugins={[]} onDone={jest.fn()} onChange={jest.fn()}>\n children\n </EditorAndToolbar>,\n );\n\n // Verify component rendered\n expect(container.firstChild).toBeInTheDocument();\n // Verify toolbar is present\n expect(screen.getByText('---- toolbar ------')).toBeInTheDocument();\n // Verify children are rendered\n expect(screen.getByText('children')).toBeInTheDocument();\n });\n});\n"],"mappings":";;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAEA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,iBAAA,GAAAF,OAAA;AACA,IAAAG,MAAA,GAAAC,sBAAA,CAAAJ,OAAA;AACA,IAAAK,MAAA,GAAAD,sBAAA,CAAAJ,OAAA;AACA,IAAAM,OAAA,GAAAN,OAAA;AAEAO,IAAI,CAACC,IAAI,CAAC,YAAY,EAAE;EAAA,OAAM;IAAA,oBAAML,MAAA,YAAAM,aAAA,cAAK,sBAAyB,CAAC;EAAA;AAAA,EAAC;AAEpE,IAAAC,qBAAc,EAAC,CAAC;AAEhB,IAAMC,GAAG,GAAG,IAAAC,iBAAK,EAAC,gDAAgD,CAAC;AAEnEC,QAAQ,CAAC,SAAS,EAAE,YAAM;EACxB,IAAIC,QAAQ,EAAEC,OAAO;EAErBC,UAAU,CAAC,YAAM;IACfF,QAAQ,GAAGP,IAAI,CAACU,EAAE,CAAC,CAAC;IACpBF,OAAO,GAAG,IAAAG,kBAAW,EAAC,MAAM,EAAE,cAAc,EAAE,eAAe,CAAC;EAChE,CAAC,CAAC;EAEFC,EAAE,CAAC,oCAAoC,EAAE,YAAM;IAC7C,IAAMC,KAAK,GAAGC,YAAK,CAACC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAChCC,MAAM,CAACC,cAAc,CAACJ,KAAK,EAAE,WAAW,EAAE;MAAEK,GAAG,EAAElB,IAAI,CAACU,EAAE,CAAC;QAAA,OAAM,IAAI;MAAA;IAAE,CAAC,CAAC;IAEvE,IAAAS,OAAA,GAAsB,IAAAC,cAAM,eAC1BxB,MAAA,YAAAM,aAAA,CAACP,iBAAA,CAAA0B,gBAAgB;QAACb,OAAO,EAAEA,OAAQ;QAACK,KAAK,EAAEA,KAAM;QAACS,OAAO,EAAE,EAAG;QAACC,MAAM,EAAEvB,IAAI,CAACU,EAAE,CAAC,CAAE;QAACc,QAAQ,EAAExB,IAAI,CAACU,EAAE,CAAC;MAAE,GAAC,UAErF,CACpB,CAAC;MAJOe,SAAS,GAAAN,OAAA,CAATM,SAAS;;IAMjB;IACAC,MAAM,CAACD,SAAS,CAACE,UAAU,CAAC,CAACC,iBAAiB,CAAC,CAAC;IAChD;IACAF,MAAM,CAACG,cAAM,CAACC,SAAS,CAAC,qBAAqB,CAAC,CAAC,CAACF,iBAAiB,CAAC,CAAC;IACnE;IACAF,MAAM,CAACG,cAAM,CAACC,SAAS,CAAC,UAAU,CAAC,CAAC,CAACF,iBAAiB,CAAC,CAAC;EAC1D,CAAC,CAAC;AACJ,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
5
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
6
|
+
var _utils = require("../../../__tests__/utils");
|
|
7
|
+
var _toolbarButtons = require("../toolbar-buttons");
|
|
8
|
+
var _react = _interopRequireDefault(require("react"));
|
|
9
|
+
var _react2 = require("@testing-library/react");
|
|
10
|
+
var _userEvent = _interopRequireDefault(require("@testing-library/user-event"));
|
|
11
|
+
// Mock IconButton
|
|
12
|
+
jest.mock('@mui/material/IconButton', function () {
|
|
13
|
+
return function IconButton(_ref) {
|
|
14
|
+
var children = _ref.children,
|
|
15
|
+
onClick = _ref.onClick,
|
|
16
|
+
className = _ref.className;
|
|
17
|
+
return /*#__PURE__*/_react["default"].createElement("button", {
|
|
18
|
+
onClick: onClick,
|
|
19
|
+
className: className,
|
|
20
|
+
"data-testid": "icon-button"
|
|
21
|
+
}, children);
|
|
22
|
+
};
|
|
23
|
+
});
|
|
24
|
+
describe('Button', function () {
|
|
25
|
+
var onClick = jest.fn();
|
|
26
|
+
beforeEach(function () {
|
|
27
|
+
onClick.mockClear();
|
|
28
|
+
});
|
|
29
|
+
it('renders with children', function () {
|
|
30
|
+
var classes = (0, _utils.classObject)('root');
|
|
31
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_toolbarButtons.RawButton, {
|
|
32
|
+
onClick: onClick,
|
|
33
|
+
classes: classes
|
|
34
|
+
}, "children"));
|
|
35
|
+
expect(_react2.screen.getByText('children')).toBeInTheDocument();
|
|
36
|
+
});
|
|
37
|
+
it('calls onClick when clicked', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee() {
|
|
38
|
+
var user, classes, button;
|
|
39
|
+
return _regenerator["default"].wrap(function (_context) {
|
|
40
|
+
while (1) switch (_context.prev = _context.next) {
|
|
41
|
+
case 0:
|
|
42
|
+
user = _userEvent["default"].setup();
|
|
43
|
+
classes = (0, _utils.classObject)('root');
|
|
44
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_toolbarButtons.RawButton, {
|
|
45
|
+
onClick: onClick,
|
|
46
|
+
classes: classes
|
|
47
|
+
}, "children"));
|
|
48
|
+
button = _react2.screen.getByText('children');
|
|
49
|
+
_context.next = 1;
|
|
50
|
+
return user.click(button);
|
|
51
|
+
case 1:
|
|
52
|
+
expect(onClick).toHaveBeenCalled();
|
|
53
|
+
case 2:
|
|
54
|
+
case "end":
|
|
55
|
+
return _context.stop();
|
|
56
|
+
}
|
|
57
|
+
}, _callee);
|
|
58
|
+
})));
|
|
59
|
+
});
|
|
60
|
+
describe('MarkButton', function () {
|
|
61
|
+
var classes = (0, _utils.classObject)('button', 'root', 'active');
|
|
62
|
+
var onToggle = jest.fn();
|
|
63
|
+
beforeEach(function () {
|
|
64
|
+
onToggle.mockClear();
|
|
65
|
+
});
|
|
66
|
+
it('renders when not active', function () {
|
|
67
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_toolbarButtons.RawMarkButton, {
|
|
68
|
+
mark: 'i',
|
|
69
|
+
onToggle: onToggle,
|
|
70
|
+
active: false,
|
|
71
|
+
classes: classes
|
|
72
|
+
}, "children"));
|
|
73
|
+
var button = _react2.screen.getByText('children');
|
|
74
|
+
expect(button).toBeInTheDocument();
|
|
75
|
+
expect(button).toHaveAttribute('aria-pressed', 'false');
|
|
76
|
+
});
|
|
77
|
+
it('renders when active', function () {
|
|
78
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_toolbarButtons.RawMarkButton, {
|
|
79
|
+
mark: 'i',
|
|
80
|
+
onToggle: onToggle,
|
|
81
|
+
active: true,
|
|
82
|
+
classes: classes
|
|
83
|
+
}, "children"));
|
|
84
|
+
var button = _react2.screen.getByText('children');
|
|
85
|
+
expect(button).toBeInTheDocument();
|
|
86
|
+
expect(button).toHaveAttribute('aria-pressed', 'true');
|
|
87
|
+
});
|
|
88
|
+
it('calls onToggle when clicked', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee2() {
|
|
89
|
+
var user, button;
|
|
90
|
+
return _regenerator["default"].wrap(function (_context2) {
|
|
91
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
92
|
+
case 0:
|
|
93
|
+
user = _userEvent["default"].setup();
|
|
94
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_toolbarButtons.RawMarkButton, {
|
|
95
|
+
mark: 'i',
|
|
96
|
+
onToggle: onToggle,
|
|
97
|
+
active: false,
|
|
98
|
+
classes: classes
|
|
99
|
+
}, "children"));
|
|
100
|
+
button = _react2.screen.getByText('children');
|
|
101
|
+
_context2.next = 1;
|
|
102
|
+
return user.click(button);
|
|
103
|
+
case 1:
|
|
104
|
+
expect(onToggle).toHaveBeenCalled();
|
|
105
|
+
case 2:
|
|
106
|
+
case "end":
|
|
107
|
+
return _context2.stop();
|
|
108
|
+
}
|
|
109
|
+
}, _callee2);
|
|
110
|
+
})));
|
|
111
|
+
});
|
|
112
|
+
//# sourceMappingURL=toolbar-buttons.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toolbar-buttons.test.js","names":["_utils","require","_toolbarButtons","_react","_interopRequireDefault","_react2","_userEvent","jest","mock","IconButton","_ref","children","onClick","className","createElement","describe","fn","beforeEach","mockClear","it","classes","classObject","render","RawButton","expect","screen","getByText","toBeInTheDocument","_asyncToGenerator2","_regenerator","mark","_callee","user","button","wrap","_context","prev","next","userEvent","setup","click","toHaveBeenCalled","stop","onToggle","RawMarkButton","active","toHaveAttribute","_callee2","_context2"],"sources":["../../../../src/plugins/toolbar/__tests__/toolbar-buttons.test.jsx"],"sourcesContent":["import { classObject } from '../../../__tests__/utils';\nimport { RawButton, RawMarkButton } from '../toolbar-buttons';\nimport React from 'react';\nimport { render, screen } from '@testing-library/react';\nimport userEvent from '@testing-library/user-event';\n\n// Mock IconButton\njest.mock('@mui/material/IconButton', () => {\n return function IconButton({ children, onClick, className }) {\n return (\n <button onClick={onClick} className={className} data-testid=\"icon-button\">\n {children}\n </button>\n );\n };\n});\n\ndescribe('Button', () => {\n const onClick = jest.fn();\n\n beforeEach(() => {\n onClick.mockClear();\n });\n\n it('renders with children', () => {\n const classes = classObject('root');\n render(\n <RawButton onClick={onClick} classes={classes}>\n children\n </RawButton>,\n );\n\n expect(screen.getByText('children')).toBeInTheDocument();\n });\n\n it('calls onClick when clicked', async () => {\n const user = userEvent.setup();\n const classes = classObject('root');\n render(\n <RawButton onClick={onClick} classes={classes}>\n children\n </RawButton>,\n );\n\n const button = screen.getByText('children');\n await user.click(button);\n\n expect(onClick).toHaveBeenCalled();\n });\n});\n\ndescribe('MarkButton', () => {\n const classes = classObject('button', 'root', 'active');\n const onToggle = jest.fn();\n\n beforeEach(() => {\n onToggle.mockClear();\n });\n\n it('renders when not active', () => {\n render(\n <RawMarkButton mark={'i'} onToggle={onToggle} active={false} classes={classes}>\n children\n </RawMarkButton>,\n );\n\n const button = screen.getByText('children');\n expect(button).toBeInTheDocument();\n expect(button).toHaveAttribute('aria-pressed', 'false');\n });\n\n it('renders when active', () => {\n render(\n <RawMarkButton mark={'i'} onToggle={onToggle} active={true} classes={classes}>\n children\n </RawMarkButton>,\n );\n\n const button = screen.getByText('children');\n expect(button).toBeInTheDocument();\n expect(button).toHaveAttribute('aria-pressed', 'true');\n });\n\n it('calls onToggle when clicked', async () => {\n const user = userEvent.setup();\n render(\n <RawMarkButton mark={'i'} onToggle={onToggle} active={false} classes={classes}>\n children\n </RawMarkButton>,\n );\n\n const button = screen.getByText('children');\n await user.click(button);\n\n expect(onToggle).toHaveBeenCalled();\n });\n});\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
5
|
+
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
|
6
|
+
var _utils = require("../../../__tests__/utils");
|
|
7
|
+
var _slate = require("slate");
|
|
8
|
+
var _toolbar = require("../toolbar");
|
|
9
|
+
var _react = _interopRequireDefault(require("react"));
|
|
10
|
+
var _react2 = require("@testing-library/react");
|
|
11
|
+
var _excluded = ["children", "onClick", "buttonRef"];
|
|
12
|
+
(0, _utils.mockMathInput)();
|
|
13
|
+
jest.mock('@mui/material/IconButton', function () {
|
|
14
|
+
return function (props) {
|
|
15
|
+
var children = props.children,
|
|
16
|
+
onClick = props.onClick,
|
|
17
|
+
buttonRef = props.buttonRef,
|
|
18
|
+
rest = (0, _objectWithoutProperties2["default"])(props, _excluded);
|
|
19
|
+
return /*#__PURE__*/_react["default"].createElement("button", (0, _extends2["default"])({
|
|
20
|
+
onClick: onClick
|
|
21
|
+
}, rest), children);
|
|
22
|
+
};
|
|
23
|
+
});
|
|
24
|
+
var node = _slate.Inline.fromJSON({
|
|
25
|
+
type: 'i'
|
|
26
|
+
});
|
|
27
|
+
var parentNode = _slate.Inline.fromJSON({
|
|
28
|
+
type: 'i'
|
|
29
|
+
});
|
|
30
|
+
var value;
|
|
31
|
+
describe('toolbar', function () {
|
|
32
|
+
var onDelete, classes, document, toolbarOpts;
|
|
33
|
+
beforeEach(function () {
|
|
34
|
+
onDelete = jest.fn();
|
|
35
|
+
toolbarOpts = {
|
|
36
|
+
position: 'bottom',
|
|
37
|
+
alwaysVisible: false
|
|
38
|
+
};
|
|
39
|
+
value = _slate.Value.fromJSON({});
|
|
40
|
+
document = {
|
|
41
|
+
getClosestInline: jest.fn().mockReturnValue(node),
|
|
42
|
+
getParent: jest.fn().mockReturnValue()
|
|
43
|
+
};
|
|
44
|
+
Object.defineProperties(value, {
|
|
45
|
+
isCollapsed: {
|
|
46
|
+
get: jest.fn(function () {
|
|
47
|
+
return true;
|
|
48
|
+
})
|
|
49
|
+
},
|
|
50
|
+
startKey: {
|
|
51
|
+
get: jest.fn(function () {
|
|
52
|
+
return '1';
|
|
53
|
+
})
|
|
54
|
+
},
|
|
55
|
+
document: {
|
|
56
|
+
get: jest.fn(function () {
|
|
57
|
+
return document;
|
|
58
|
+
})
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
classes = (0, _utils.classObject)('iconRoot', 'inline', 'toolbar', 'focused', 'shared', 'inline', 'pie-toolbar');
|
|
62
|
+
});
|
|
63
|
+
test('renders custom toolbar', function () {
|
|
64
|
+
var plugins = [{
|
|
65
|
+
deleteNode: function deleteNode() {
|
|
66
|
+
return true;
|
|
67
|
+
},
|
|
68
|
+
toolbar: {
|
|
69
|
+
supports: function supports() {
|
|
70
|
+
return true;
|
|
71
|
+
},
|
|
72
|
+
customToolbar: function customToolbar() {
|
|
73
|
+
return function () {
|
|
74
|
+
return /*#__PURE__*/_react["default"].createElement("div", null, "custom toolbar content");
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}];
|
|
79
|
+
var _render = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_toolbar.Toolbar, {
|
|
80
|
+
toolbarOpts: toolbarOpts,
|
|
81
|
+
plugins: plugins,
|
|
82
|
+
classes: classes,
|
|
83
|
+
value: value,
|
|
84
|
+
onDone: jest.fn(),
|
|
85
|
+
onChange: jest.fn()
|
|
86
|
+
})),
|
|
87
|
+
container = _render.container;
|
|
88
|
+
|
|
89
|
+
// Verify the custom toolbar content is rendered
|
|
90
|
+
expect(container.firstChild).toBeInTheDocument();
|
|
91
|
+
expect(_react2.screen.getByText('custom toolbar content')).toBeInTheDocument();
|
|
92
|
+
});
|
|
93
|
+
describe('default', function () {
|
|
94
|
+
var plugins;
|
|
95
|
+
beforeEach(function () {
|
|
96
|
+
plugins = [];
|
|
97
|
+
});
|
|
98
|
+
test('renders default toolbar', function () {
|
|
99
|
+
var _render2 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_toolbar.Toolbar, {
|
|
100
|
+
toolbarOpts: toolbarOpts,
|
|
101
|
+
plugins: plugins,
|
|
102
|
+
classes: classes,
|
|
103
|
+
value: value,
|
|
104
|
+
onDone: jest.fn(),
|
|
105
|
+
onChange: jest.fn()
|
|
106
|
+
})),
|
|
107
|
+
container = _render2.container;
|
|
108
|
+
|
|
109
|
+
// Verify the toolbar is rendered
|
|
110
|
+
expect(container.firstChild).toBeInTheDocument();
|
|
111
|
+
|
|
112
|
+
// The default toolbar should render the DefaultToolbar component
|
|
113
|
+
// which includes a Done button
|
|
114
|
+
expect(_react2.screen.getByLabelText('Done')).toBeInTheDocument();
|
|
115
|
+
});
|
|
116
|
+
});
|
|
117
|
+
});
|
|
118
|
+
//# sourceMappingURL=toolbar.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toolbar.test.js","names":["_utils","require","_slate","_toolbar","_react","_interopRequireDefault","_react2","_excluded","mockMathInput","jest","mock","props","children","onClick","buttonRef","rest","_objectWithoutProperties2","createElement","_extends2","node","Inline","fromJSON","type","parentNode","value","describe","onDelete","classes","document","toolbarOpts","beforeEach","fn","position","alwaysVisible","Value","getClosestInline","mockReturnValue","getParent","Object","defineProperties","isCollapsed","get","startKey","classObject","test","plugins","deleteNode","toolbar","supports","customToolbar","_render","render","Toolbar","onDone","onChange","container","expect","firstChild","toBeInTheDocument","screen","getByText","_render2","getByLabelText"],"sources":["../../../../src/plugins/toolbar/__tests__/toolbar.test.jsx"],"sourcesContent":["import { classObject, mockMathInput } from '../../../__tests__/utils';\nimport { Inline, Value } from 'slate';\nimport { Toolbar } from '../toolbar';\nimport React from 'react';\nimport { render, screen } from '@testing-library/react';\n\nmockMathInput();\n\njest.mock('@mui/material/IconButton', () => {\n return (props) => {\n const { children, onClick, buttonRef, ...rest } = props;\n return (\n <button onClick={onClick} {...rest}>\n {children}\n </button>\n );\n };\n});\n\nlet node = Inline.fromJSON({ type: 'i' });\nlet parentNode = Inline.fromJSON({\n type: 'i',\n});\nlet value;\n\ndescribe('toolbar', () => {\n let onDelete, classes, document, toolbarOpts;\n\n beforeEach(() => {\n onDelete = jest.fn();\n\n toolbarOpts = {\n position: 'bottom',\n alwaysVisible: false,\n };\n\n value = Value.fromJSON({});\n document = {\n getClosestInline: jest.fn().mockReturnValue(node),\n getParent: jest.fn().mockReturnValue(),\n };\n\n Object.defineProperties(value, {\n isCollapsed: {\n get: jest.fn(() => true),\n },\n startKey: {\n get: jest.fn(() => '1'),\n },\n document: {\n get: jest.fn(() => document),\n },\n });\n\n classes = classObject('iconRoot', 'inline', 'toolbar', 'focused', 'shared', 'inline', 'pie-toolbar');\n });\n\n test('renders custom toolbar', () => {\n const plugins = [\n {\n deleteNode: () => true,\n toolbar: {\n supports: () => true,\n customToolbar: () => () => <div>custom toolbar content</div>,\n },\n },\n ];\n\n const { container } = render(\n <Toolbar\n toolbarOpts={toolbarOpts}\n plugins={plugins}\n classes={classes}\n value={value}\n onDone={jest.fn()}\n onChange={jest.fn()}\n />,\n );\n\n // Verify the custom toolbar content is rendered\n expect(container.firstChild).toBeInTheDocument();\n expect(screen.getByText('custom toolbar content')).toBeInTheDocument();\n });\n\n describe('default', () => {\n let plugins;\n\n beforeEach(() => {\n plugins = [];\n });\n\n test('renders default toolbar', () => {\n const { container } = render(\n <Toolbar\n toolbarOpts={toolbarOpts}\n plugins={plugins}\n classes={classes}\n value={value}\n onDone={jest.fn()}\n onChange={jest.fn()}\n />,\n );\n\n // Verify the toolbar is rendered\n expect(container.firstChild).toBeInTheDocument();\n\n // The default toolbar should render the DefaultToolbar component\n // which includes a Done button\n expect(screen.getByLabelText('Done')).toBeInTheDocument();\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
|