@pie-lib/editable-html 13.0.8 → 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.
Files changed (46) hide show
  1. package/CHANGELOG.md +0 -28
  2. package/lib/__tests__/editor-utils.test.js +164 -0
  3. package/lib/__tests__/editor-utils.test.js.map +1 -0
  4. package/lib/__tests__/serialization.test.js +241 -0
  5. package/lib/__tests__/serialization.test.js.map +1 -0
  6. package/lib/__tests__/utils.js +79 -0
  7. package/lib/__tests__/utils.js.map +1 -0
  8. package/lib/plugins/image/__tests__/component.test.js +96 -0
  9. package/lib/plugins/image/__tests__/component.test.js.map +1 -0
  10. package/lib/plugins/image/__tests__/image-toolbar-logic.test.js +131 -0
  11. package/lib/plugins/image/__tests__/image-toolbar-logic.test.js.map +1 -0
  12. package/lib/plugins/image/__tests__/image-toolbar.test.js +21 -0
  13. package/lib/plugins/image/__tests__/image-toolbar.test.js.map +1 -0
  14. package/lib/plugins/image/__tests__/index.test.js +86 -0
  15. package/lib/plugins/image/__tests__/index.test.js.map +1 -0
  16. package/lib/plugins/image/__tests__/insert-image-handler.test.js +112 -0
  17. package/lib/plugins/image/__tests__/insert-image-handler.test.js.map +1 -0
  18. package/lib/plugins/image/__tests__/mock-change.js +22 -0
  19. package/lib/plugins/image/__tests__/mock-change.js.map +1 -0
  20. package/lib/plugins/list/__tests__/index.test.js +63 -0
  21. package/lib/plugins/list/__tests__/index.test.js.map +1 -0
  22. package/lib/plugins/math/__tests__/index.test.js +284 -0
  23. package/lib/plugins/math/__tests__/index.test.js.map +1 -0
  24. package/lib/plugins/media/__tests__/index.test.js +69 -0
  25. package/lib/plugins/media/__tests__/index.test.js.map +1 -0
  26. package/lib/plugins/respArea/drag-in-the-blank/__tests__/choice.test.js +93 -0
  27. package/lib/plugins/respArea/drag-in-the-blank/__tests__/choice.test.js.map +1 -0
  28. package/lib/plugins/respArea/math-templated/index.js +2 -2
  29. package/lib/plugins/respArea/math-templated/index.js.map +1 -1
  30. package/lib/plugins/table/__tests__/index.test.js +416 -0
  31. package/lib/plugins/table/__tests__/index.test.js.map +1 -0
  32. package/lib/plugins/table/__tests__/table-toolbar.test.js +81 -0
  33. package/lib/plugins/table/__tests__/table-toolbar.test.js.map +1 -0
  34. package/lib/plugins/toolbar/__tests__/default-toolbar.test.js +153 -0
  35. package/lib/plugins/toolbar/__tests__/default-toolbar.test.js.map +1 -0
  36. package/lib/plugins/toolbar/__tests__/editor-and-toolbar.test.js +47 -0
  37. package/lib/plugins/toolbar/__tests__/editor-and-toolbar.test.js.map +1 -0
  38. package/lib/plugins/toolbar/__tests__/toolbar-buttons.test.js +112 -0
  39. package/lib/plugins/toolbar/__tests__/toolbar-buttons.test.js.map +1 -0
  40. package/lib/plugins/toolbar/__tests__/toolbar.test.js +118 -0
  41. package/lib/plugins/toolbar/__tests__/toolbar.test.js.map +1 -0
  42. package/lib/shared/alert-dialog.js +68 -0
  43. package/package.json +7 -7
  44. package/src/__tests__/utils.js +1 -1
  45. package/src/plugins/respArea/math-templated/index.jsx +1 -1
  46. package/LICENSE.md +0 -5
@@ -0,0 +1,416 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _typeof = require("@babel/runtime/helpers/typeof");
5
+ var _slateEditTable = _interopRequireDefault(require("slate-edit-table"));
6
+ var _index = _interopRequireWildcard(require("../index"));
7
+ var _slate = require("slate");
8
+ var _react = _interopRequireDefault(require("react"));
9
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
10
+ jest.mock('slate-edit-table', function () {
11
+ var mock = {
12
+ "default": jest.fn().mockReturnThis(),
13
+ utils: {
14
+ isSelectionInTable: jest.fn().mockReturnValue(true),
15
+ createTable: jest.fn(function (c) {
16
+ return {
17
+ toJSON: jest.fn().mockReturnValue({
18
+ object: 'block',
19
+ type: 'table'
20
+ })
21
+ };
22
+ })
23
+ },
24
+ changes: {
25
+ insertTable: jest.fn(function (c) {
26
+ return c;
27
+ })
28
+ }
29
+ };
30
+ return jest.fn().mockReturnValue(mock);
31
+ });
32
+ describe('table', function () {
33
+ describe('toolbar', function () {
34
+ describe('onClick', function () {
35
+ var plugin;
36
+ var onChange;
37
+ var findDescendant;
38
+ var insertBlock;
39
+ var changeMock;
40
+ beforeEach(function () {
41
+ plugin = (0, _index["default"])();
42
+ onChange = jest.fn();
43
+ insertBlock = jest.fn();
44
+ findDescendant = jest.fn();
45
+ changeMock = jest.fn().mockReturnValue({
46
+ insertBlock: insertBlock,
47
+ value: {
48
+ document: {
49
+ findDescendant: findDescendant
50
+ }
51
+ }
52
+ });
53
+ });
54
+ it('calls utils.createTable', function () {
55
+ plugin.toolbar.onClick({
56
+ change: changeMock
57
+ }, onChange);
58
+ expect((0, _slateEditTable["default"])().utils.createTable).toHaveBeenCalledWith(2, 2);
59
+ });
60
+ it('creates table with border: 1 as default', function () {
61
+ plugin.toolbar.onClick({
62
+ change: changeMock
63
+ }, onChange);
64
+ expect(insertBlock).toHaveBeenCalledWith(_slate.Block.create({
65
+ key: '2',
66
+ type: 'table',
67
+ data: {
68
+ border: '1',
69
+ newTable: true
70
+ }
71
+ }));
72
+ });
73
+ it('moves cursor to first cell of the table and removes the newTable property', function () {
74
+ var dataRemoveFn = jest.fn().mockReturnValue({
75
+ border: '1'
76
+ });
77
+ var setNodeByKey = jest.fn();
78
+ var newTableBlock = {
79
+ key: '2',
80
+ data: {
81
+ remove: dataRemoveFn
82
+ }
83
+ };
84
+ var collapseToStartOf = jest.fn();
85
+ changeMock = jest.fn().mockReturnValue({
86
+ insertBlock: insertBlock,
87
+ collapseToStartOf: collapseToStartOf,
88
+ setNodeByKey: setNodeByKey,
89
+ value: {
90
+ document: {
91
+ findDescendant: jest.fn().mockReturnValue(newTableBlock)
92
+ }
93
+ }
94
+ });
95
+ plugin.toolbar.onClick({
96
+ change: changeMock
97
+ }, onChange);
98
+ expect(collapseToStartOf).toHaveBeenCalledWith(newTableBlock);
99
+ expect(dataRemoveFn).toHaveBeenCalledWith('newTable');
100
+ expect(setNodeByKey).toHaveBeenCalledWith('2', {
101
+ data: {
102
+ border: '1'
103
+ }
104
+ });
105
+ });
106
+ });
107
+ describe('supports', function () {
108
+ var assertSupports = function assertSupports(inTable, object, expected) {
109
+ it("inTable: ".concat(inTable, ", type: ").concat(object, " => ").concat(expected), function () {
110
+ (0, _slateEditTable["default"])().utils.isSelectionInTable.mockReturnValue(inTable);
111
+ var plugin = (0, _index["default"])();
112
+ var supports = plugin.toolbar.supports({
113
+ object: object
114
+ });
115
+ expect(supports).toEqual(expected);
116
+ });
117
+ };
118
+ assertSupports(true, 'block', true);
119
+ assertSupports(false, 'block', false);
120
+ assertSupports(true, 'inline', false);
121
+ assertSupports(false, 'inline', false);
122
+ });
123
+ describe('customToolbar', function () {
124
+ describe('toggleBorder', function () {
125
+ var assertToggle = function assertToggle(border, expectedBorder) {
126
+ describe("with initial border of ".concat(border), function () {
127
+ var change;
128
+ var done;
129
+ beforeEach(function () {
130
+ var plugin = (0, _index["default"])();
131
+ change = {
132
+ setNodeByKey: jest.fn().mockReturnThis()
133
+ };
134
+ plugin.utils.getTableBlock = jest.fn().mockReturnValue({
135
+ key: 'tableKey',
136
+ data: _slate.Data.create({
137
+ border: border
138
+ })
139
+ });
140
+ var node = {
141
+ key: 'nodeKey'
142
+ };
143
+ var value = {
144
+ change: jest.fn().mockReturnValue(change)
145
+ };
146
+ done = jest.fn();
147
+ var Comp = plugin.toolbar.customToolbar(node, value, done);
148
+ var c = Comp();
149
+ c.props.onToggleBorder();
150
+ });
151
+ it("calls setNodeByKey with ".concat(expectedBorder), function () {
152
+ expect(change.setNodeByKey).toHaveBeenCalledWith('tableKey', {
153
+ data: _slate.Data.create({
154
+ border: expectedBorder
155
+ })
156
+ });
157
+ });
158
+ it('calls onToolbarDone', function () {
159
+ expect(done).toHaveBeenCalledWith(change, false);
160
+ });
161
+ });
162
+ };
163
+ assertToggle(null, '1');
164
+ assertToggle(undefined, '1');
165
+ assertToggle('0', '1');
166
+ assertToggle('1', '0');
167
+ assertToggle('2', '0');
168
+ });
169
+ });
170
+ describe('normalizeNode', function () {
171
+ it('should exit the function if the node is not of type document', function () {
172
+ var tablePlugin = (0, _index["default"])();
173
+ var returnValue = tablePlugin.normalizeNode({
174
+ object: 'table'
175
+ });
176
+ expect(returnValue).toEqual(undefined);
177
+ });
178
+ it('should exit there are no changes needed', function () {
179
+ var tablePlugin = (0, _index["default"])();
180
+ var nodes = {
181
+ size: 3,
182
+ findLastIndex: jest.fn().mockReturnValue(1)
183
+ };
184
+ var returnValue = tablePlugin.normalizeNode({
185
+ object: 'document',
186
+ nodes: nodes,
187
+ findDescendant: jest.fn().mockReturnValue({
188
+ object: 'block',
189
+ type: 'table'
190
+ }),
191
+ getParent: jest.fn().mockReturnValue(undefined)
192
+ });
193
+ expect(returnValue).toEqual(undefined);
194
+ });
195
+ it('should return a function if a table does not have a node before or after it', function () {
196
+ var tablePlugin = (0, _index["default"])();
197
+ var nodes = [{
198
+ object: 'block',
199
+ type: 'table',
200
+ key: '99',
201
+ data: _slate.Data.create({
202
+ newTable: true
203
+ })
204
+ }];
205
+ var findDescendant = jest.fn(function (callback) {
206
+ nodes.forEach(function (n) {
207
+ return callback(n);
208
+ });
209
+ });
210
+ var change = {
211
+ insertNodeByPath: jest.fn(),
212
+ value: {
213
+ document: {
214
+ getPath: jest.fn().mockReturnValue(_slate.PathUtils.create([0, 0]))
215
+ }
216
+ }
217
+ };
218
+ var returnValue = tablePlugin.normalizeNode({
219
+ object: 'document',
220
+ findDescendant: findDescendant,
221
+ getPath: jest.fn().mockReturnValue(_slate.PathUtils.create([0, 0])),
222
+ getPreviousNode: jest.fn().mockReturnValue(undefined),
223
+ getNextNode: jest.fn().mockReturnValue(undefined)
224
+ });
225
+ expect(returnValue).toEqual(expect.any(Function));
226
+ returnValue(change);
227
+ expect(change.insertNodeByPath).toHaveBeenCalledWith([0], 0, {
228
+ object: 'block',
229
+ type: 'div'
230
+ });
231
+ });
232
+ });
233
+ });
234
+ });
235
+ describe('parseStyleString', function () {
236
+ var parses = function parses(s, expected) {
237
+ it("parses ".concat(s, " -> ").concat(JSON.stringify(expected)), function () {
238
+ var result = (0, _index.parseStyleString)(s);
239
+ expect(result).toEqual(expected);
240
+ });
241
+ };
242
+ parses(' width: 10px ', {
243
+ width: '10px'
244
+ });
245
+ parses(' width: 10px; ', {
246
+ width: '10px'
247
+ });
248
+ parses(' border-width: 10px; ', {
249
+ 'border-width': '10px'
250
+ });
251
+ parses(' border: solid 1px red; height: 1px', {
252
+ border: 'solid 1px red',
253
+ height: '1px'
254
+ });
255
+ });
256
+ describe('toStyleString', function () {
257
+ var styleString = function styleString(o, expected) {
258
+ it("".concat(JSON.stringify(s), " -> ").concat(expected), function () {
259
+ var result = toStyleString(o);
260
+ expect(result).toEqual(expected);
261
+ });
262
+ };
263
+ });
264
+ describe('reactAttributes', function () {
265
+ var attributes = function attributes(o, expected) {
266
+ it("".concat(JSON.stringify(o), " -> ").concat(JSON.stringify(expected)), function () {
267
+ var result = (0, _index.reactAttributes)(o);
268
+ expect(result).toEqual(expected);
269
+ });
270
+ };
271
+ attributes({
272
+ 'border-width': '10px',
273
+ 'line-height': 1.56
274
+ }, {
275
+ borderWidth: '10px',
276
+ lineHeight: '1.56'
277
+ });
278
+ });
279
+ describe('serialization', function () {
280
+ describe('deserialize', function () {
281
+ var next;
282
+ beforeEach(function () {
283
+ next = jest.fn().mockReturnValue([]);
284
+ });
285
+ describe('table', function () {
286
+ var el;
287
+ var out;
288
+ beforeEach(function () {
289
+ el = {
290
+ tagName: 'table',
291
+ children: [],
292
+ getAttribute: jest.fn(function (name) {
293
+ switch (name) {
294
+ case 'border':
295
+ return '1';
296
+ case 'cellspacing':
297
+ return '2';
298
+ case 'cellpadding':
299
+ return '3';
300
+ case 'class':
301
+ return 'table-class';
302
+ case 'style':
303
+ return 'width: 10px';
304
+ }
305
+ })
306
+ };
307
+ out = _index.serialization.deserialize(el, next);
308
+ });
309
+ var assertData = function assertData(name, value) {
310
+ it("data.".concat(name, " should eql ").concat(value), function () {
311
+ expect(out.data[name]).toEqual(value);
312
+ });
313
+ };
314
+ assertData('border', '1');
315
+ assertData('cellspacing', '2');
316
+ assertData('cellpadding', '3');
317
+ assertData('class', 'table-class');
318
+ assertData('style', {
319
+ width: '10px'
320
+ });
321
+ it('returns a table block', function () {
322
+ expect(out).toMatchObject({
323
+ object: 'block',
324
+ type: 'table',
325
+ nodes: []
326
+ });
327
+ });
328
+ });
329
+ it('deserializes tr', function () {
330
+ var el = {
331
+ tagName: 'tr',
332
+ children: []
333
+ };
334
+ var out = _index.serialization.deserialize(el, next);
335
+ expect(out).toEqual({
336
+ object: 'block',
337
+ type: 'table_row',
338
+ nodes: []
339
+ });
340
+ });
341
+ it('deserializes td', function () {
342
+ var el = {
343
+ tagName: 'td',
344
+ childNodes: [],
345
+ getAttribute: jest.fn(function (name) {
346
+ var o = {
347
+ "class": 'class name',
348
+ colspan: '1',
349
+ rowspan: '1'
350
+ };
351
+ return o[name];
352
+ })
353
+ };
354
+ var out = _index.serialization.deserialize(el, next);
355
+ expect(out).toEqual({
356
+ object: 'block',
357
+ type: 'table_cell',
358
+ nodes: [],
359
+ data: {
360
+ colspan: '1',
361
+ rowspan: '1',
362
+ "class": 'class name',
363
+ header: false
364
+ }
365
+ });
366
+ });
367
+ });
368
+ describe('serialize', function () {
369
+ it('serializes table', function () {
370
+ var el = _index.serialization.serialize({
371
+ object: 'block',
372
+ type: 'table',
373
+ nodes: [],
374
+ data: _slate.Data.create({
375
+ border: '1',
376
+ cellpadding: '2',
377
+ cellspacing: '3'
378
+ })
379
+ });
380
+ expect(el).toEqual(/*#__PURE__*/_react["default"].createElement("table", {
381
+ border: "1",
382
+ cellPadding: "2",
383
+ cellSpacing: "3"
384
+ }, /*#__PURE__*/_react["default"].createElement("tbody", null)));
385
+ });
386
+ it('serializes table_row', function () {
387
+ var el = _index.serialization.serialize({
388
+ object: 'block',
389
+ type: 'table_row',
390
+ nodes: []
391
+ });
392
+ expect(el).toEqual(/*#__PURE__*/_react["default"].createElement("tr", null));
393
+ });
394
+ it('serializes table_cell', function () {
395
+ var el = _index.serialization.serialize({
396
+ object: 'block',
397
+ type: 'table_cell',
398
+ nodes: [],
399
+ data: _slate.Data.create({
400
+ header: false,
401
+ style: {
402
+ width: '10px'
403
+ },
404
+ "class": 'foo'
405
+ })
406
+ });
407
+ expect(el).toEqual(/*#__PURE__*/_react["default"].createElement("td", {
408
+ style: {
409
+ width: '10px'
410
+ },
411
+ className: 'foo'
412
+ }));
413
+ });
414
+ });
415
+ });
416
+ //# sourceMappingURL=index.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.test.js","names":["_slateEditTable","_interopRequireDefault","require","_index","_interopRequireWildcard","_slate","_react","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","_typeof","has","get","set","_t","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","jest","mock","fn","mockReturnThis","utils","isSelectionInTable","mockReturnValue","createTable","c","toJSON","object","type","changes","insertTable","describe","plugin","onChange","findDescendant","insertBlock","changeMock","beforeEach","TablePlugin","value","document","it","toolbar","onClick","change","expect","EditTable","toHaveBeenCalledWith","Block","create","key","data","border","newTable","dataRemoveFn","setNodeByKey","newTableBlock","remove","collapseToStartOf","assertSupports","inTable","expected","concat","supports","toEqual","assertToggle","expectedBorder","done","getTableBlock","Data","node","Comp","customToolbar","props","onToggleBorder","undefined","tablePlugin","returnValue","normalizeNode","nodes","size","findLastIndex","getParent","callback","forEach","insertNodeByPath","getPath","PathUtils","getPreviousNode","getNextNode","any","Function","parses","s","JSON","stringify","result","parseStyleString","width","height","styleString","toStyleString","attributes","reactAttributes","borderWidth","lineHeight","next","el","out","tagName","children","getAttribute","name","serialization","deserialize","assertData","toMatchObject","childNodes","colspan","rowspan","header","serialize","cellpadding","cellspacing","createElement","cellPadding","cellSpacing","style","className"],"sources":["../../../../src/plugins/table/__tests__/index.test.jsx"],"sourcesContent":["import EditTable from 'slate-edit-table';\nimport TablePlugin, { parseStyleString, reactAttributes, serialization } from '../index';\nimport { Block, Data, PathUtils } from 'slate';\nimport React from 'react';\n\njest.mock('slate-edit-table', () => {\n const mock = {\n default: jest.fn().mockReturnThis(),\n utils: {\n isSelectionInTable: jest.fn().mockReturnValue(true),\n createTable: jest.fn(function (c) {\n return {\n toJSON: jest.fn().mockReturnValue({ object: 'block', type: 'table' }),\n };\n }),\n },\n changes: {\n insertTable: jest.fn(function (c) {\n return c;\n }),\n },\n };\n\n return jest.fn().mockReturnValue(mock);\n});\n\ndescribe('table', () => {\n describe('toolbar', () => {\n describe('onClick', () => {\n let plugin;\n let onChange;\n let findDescendant;\n let insertBlock;\n let changeMock;\n\n beforeEach(() => {\n plugin = TablePlugin();\n onChange = jest.fn();\n insertBlock = jest.fn();\n findDescendant = jest.fn();\n changeMock = jest.fn().mockReturnValue({\n insertBlock,\n value: {\n document: {\n findDescendant,\n },\n },\n });\n });\n\n it('calls utils.createTable', () => {\n plugin.toolbar.onClick({ change: changeMock }, onChange);\n\n expect(EditTable().utils.createTable).toHaveBeenCalledWith(2, 2);\n });\n\n it('creates table with border: 1 as default', () => {\n plugin.toolbar.onClick({ change: changeMock }, onChange);\n\n expect(insertBlock).toHaveBeenCalledWith(\n Block.create({ key: '2', type: 'table', data: { border: '1', newTable: true } }),\n );\n });\n\n it('moves cursor to first cell of the table and removes the newTable property', () => {\n const dataRemoveFn = jest.fn().mockReturnValue({ border: '1' });\n const setNodeByKey = jest.fn();\n const newTableBlock = {\n key: '2',\n data: {\n remove: dataRemoveFn,\n },\n };\n const collapseToStartOf = jest.fn();\n\n changeMock = jest.fn().mockReturnValue({\n insertBlock,\n collapseToStartOf,\n setNodeByKey,\n value: {\n document: {\n findDescendant: jest.fn().mockReturnValue(newTableBlock),\n },\n },\n });\n plugin.toolbar.onClick({ change: changeMock }, onChange);\n\n expect(collapseToStartOf).toHaveBeenCalledWith(newTableBlock);\n expect(dataRemoveFn).toHaveBeenCalledWith('newTable');\n expect(setNodeByKey).toHaveBeenCalledWith('2', { data: { border: '1' } });\n });\n });\n\n describe('supports', () => {\n const assertSupports = (inTable, object, expected) => {\n it(`inTable: ${inTable}, type: ${object} => ${expected}`, () => {\n EditTable().utils.isSelectionInTable.mockReturnValue(inTable);\n const plugin = TablePlugin();\n const supports = plugin.toolbar.supports({ object });\n expect(supports).toEqual(expected);\n });\n };\n\n assertSupports(true, 'block', true);\n assertSupports(false, 'block', false);\n assertSupports(true, 'inline', false);\n assertSupports(false, 'inline', false);\n });\n\n describe('customToolbar', () => {\n describe('toggleBorder', () => {\n const assertToggle = (border, expectedBorder) => {\n describe(`with initial border of ${border}`, () => {\n let change;\n let done;\n\n beforeEach(() => {\n const plugin = TablePlugin();\n change = {\n setNodeByKey: jest.fn().mockReturnThis(),\n };\n plugin.utils.getTableBlock = jest.fn().mockReturnValue({\n key: 'tableKey',\n data: Data.create({ border }),\n });\n const node = { key: 'nodeKey' };\n const value = {\n change: jest.fn().mockReturnValue(change),\n };\n done = jest.fn();\n const Comp = plugin.toolbar.customToolbar(node, value, done);\n const c = Comp();\n c.props.onToggleBorder();\n });\n\n it(`calls setNodeByKey with ${expectedBorder}`, () => {\n expect(change.setNodeByKey).toHaveBeenCalledWith('tableKey', {\n data: Data.create({ border: expectedBorder }),\n });\n });\n\n it('calls onToolbarDone', () => {\n expect(done).toHaveBeenCalledWith(change, false);\n });\n });\n };\n\n assertToggle(null, '1');\n assertToggle(undefined, '1');\n assertToggle('0', '1');\n assertToggle('1', '0');\n assertToggle('2', '0');\n });\n });\n\n describe('normalizeNode', () => {\n it('should exit the function if the node is not of type document', () => {\n const tablePlugin = TablePlugin();\n const returnValue = tablePlugin.normalizeNode({ object: 'table' });\n\n expect(returnValue).toEqual(undefined);\n });\n\n it('should exit there are no changes needed', () => {\n const tablePlugin = TablePlugin();\n const nodes = {\n size: 3,\n findLastIndex: jest.fn().mockReturnValue(1),\n };\n const returnValue = tablePlugin.normalizeNode({\n object: 'document',\n nodes,\n findDescendant: jest.fn().mockReturnValue({ object: 'block', type: 'table' }),\n getParent: jest.fn().mockReturnValue(undefined),\n });\n expect(returnValue).toEqual(undefined);\n });\n\n it('should return a function if a table does not have a node before or after it', () => {\n const tablePlugin = TablePlugin();\n const nodes = [\n {\n object: 'block',\n type: 'table',\n key: '99',\n data: Data.create({\n newTable: true,\n }),\n },\n ];\n const findDescendant = jest.fn((callback) => {\n nodes.forEach((n) => callback(n));\n });\n const change = {\n insertNodeByPath: jest.fn(),\n value: {\n document: {\n getPath: jest.fn().mockReturnValue(PathUtils.create([0, 0])),\n },\n },\n };\n\n const returnValue = tablePlugin.normalizeNode({\n object: 'document',\n findDescendant,\n getPath: jest.fn().mockReturnValue(PathUtils.create([0, 0])),\n getPreviousNode: jest.fn().mockReturnValue(undefined),\n getNextNode: jest.fn().mockReturnValue(undefined),\n });\n\n expect(returnValue).toEqual(expect.any(Function));\n\n returnValue(change);\n\n expect(change.insertNodeByPath).toHaveBeenCalledWith([0], 0, {\n object: 'block',\n type: 'div',\n });\n });\n });\n });\n});\n\ndescribe('parseStyleString', () => {\n const parses = (s, expected) => {\n it(`parses ${s} -> ${JSON.stringify(expected)}`, () => {\n const result = parseStyleString(s);\n expect(result).toEqual(expected);\n });\n };\n parses(' width: 10px ', { width: '10px' });\n parses(' width: 10px; ', { width: '10px' });\n parses(' border-width: 10px; ', { 'border-width': '10px' });\n parses(' border: solid 1px red; height: 1px', {\n border: 'solid 1px red',\n height: '1px',\n });\n});\n\ndescribe('toStyleString', () => {\n const styleString = (o, expected) => {\n it(`${JSON.stringify(s)} -> ${expected}`, () => {\n const result = toStyleString(o);\n expect(result).toEqual(expected);\n });\n };\n});\n\ndescribe('reactAttributes', () => {\n const attributes = (o, expected) => {\n it(`${JSON.stringify(o)} -> ${JSON.stringify(expected)}`, () => {\n const result = reactAttributes(o);\n expect(result).toEqual(expected);\n });\n };\n attributes({ 'border-width': '10px', 'line-height': 1.56 }, { borderWidth: '10px', lineHeight: '1.56' });\n});\n\ndescribe('serialization', () => {\n describe('deserialize', () => {\n let next;\n\n beforeEach(() => {\n next = jest.fn().mockReturnValue([]);\n });\n\n describe('table', () => {\n let el;\n let out;\n beforeEach(() => {\n el = {\n tagName: 'table',\n children: [],\n getAttribute: jest.fn((name) => {\n switch (name) {\n case 'border':\n return '1';\n case 'cellspacing':\n return '2';\n case 'cellpadding':\n return '3';\n case 'class':\n return 'table-class';\n case 'style':\n return 'width: 10px';\n }\n }),\n };\n out = serialization.deserialize(el, next);\n });\n\n const assertData = (name, value) => {\n it(`data.${name} should eql ${value}`, () => {\n expect(out.data[name]).toEqual(value);\n });\n };\n\n assertData('border', '1');\n assertData('cellspacing', '2');\n assertData('cellpadding', '3');\n assertData('class', 'table-class');\n assertData('style', { width: '10px' });\n it('returns a table block', () => {\n expect(out).toMatchObject({\n object: 'block',\n type: 'table',\n nodes: [],\n });\n });\n });\n\n it('deserializes tr', () => {\n const el = {\n tagName: 'tr',\n children: [],\n };\n\n const out = serialization.deserialize(el, next);\n\n expect(out).toEqual({\n object: 'block',\n type: 'table_row',\n nodes: [],\n });\n });\n\n it('deserializes td', () => {\n const el = {\n tagName: 'td',\n childNodes: [],\n getAttribute: jest.fn(function (name) {\n const o = {\n class: 'class name',\n colspan: '1',\n rowspan: '1',\n };\n return o[name];\n }),\n };\n\n const out = serialization.deserialize(el, next);\n\n expect(out).toEqual({\n object: 'block',\n type: 'table_cell',\n nodes: [],\n data: {\n colspan: '1',\n rowspan: '1',\n class: 'class name',\n header: false,\n },\n });\n });\n });\n\n describe('serialize', () => {\n it('serializes table', () => {\n const el = serialization.serialize({\n object: 'block',\n type: 'table',\n nodes: [],\n data: Data.create({\n border: '1',\n cellpadding: '2',\n cellspacing: '3',\n }),\n });\n\n expect(el).toEqual(\n <table border=\"1\" cellPadding=\"2\" cellSpacing=\"3\">\n <tbody />\n </table>,\n );\n });\n\n it('serializes table_row', () => {\n const el = serialization.serialize({\n object: 'block',\n type: 'table_row',\n nodes: [],\n });\n\n expect(el).toEqual(<tr />);\n });\n it('serializes table_cell', () => {\n const el = serialization.serialize({\n object: 'block',\n type: 'table_cell',\n nodes: [],\n data: Data.create({\n header: false,\n style: { width: '10px' },\n class: 'foo',\n }),\n });\n\n expect(el).toEqual(<td style={{ width: '10px' }} className={'foo'} />);\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
@@ -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":[]}