@pie-lib/graphing 4.1.0-beta.7 → 4.1.0-beta.8

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 (97) hide show
  1. package/package.json +3 -3
  2. package/lib/__tests__/bg.test.js +0 -282
  3. package/lib/__tests__/bg.test.js.map +0 -1
  4. package/lib/__tests__/coordinates-label.test.js +0 -276
  5. package/lib/__tests__/coordinates-label.test.js.map +0 -1
  6. package/lib/__tests__/graph-with-controls.test.js +0 -275
  7. package/lib/__tests__/graph-with-controls.test.js.map +0 -1
  8. package/lib/__tests__/graph.test.js +0 -927
  9. package/lib/__tests__/graph.test.js.map +0 -1
  10. package/lib/__tests__/grid-setup.test.js +0 -729
  11. package/lib/__tests__/grid-setup.test.js.map +0 -1
  12. package/lib/__tests__/grid.test.js +0 -29
  13. package/lib/__tests__/grid.test.js.map +0 -1
  14. package/lib/__tests__/key-legend.test.js +0 -321
  15. package/lib/__tests__/key-legend.test.js.map +0 -1
  16. package/lib/__tests__/label-svg-icon.test.js +0 -373
  17. package/lib/__tests__/label-svg-icon.test.js.map +0 -1
  18. package/lib/__tests__/labels.test.js +0 -61
  19. package/lib/__tests__/labels.test.js.map +0 -1
  20. package/lib/__tests__/mark-label.test.js +0 -133
  21. package/lib/__tests__/mark-label.test.js.map +0 -1
  22. package/lib/__tests__/toggle-bar.test.js +0 -197
  23. package/lib/__tests__/toggle-bar.test.js.map +0 -1
  24. package/lib/__tests__/tool-menu.test.js +0 -151
  25. package/lib/__tests__/tool-menu.test.js.map +0 -1
  26. package/lib/__tests__/undo-redo.test.js +0 -31
  27. package/lib/__tests__/undo-redo.test.js.map +0 -1
  28. package/lib/__tests__/use-debounce.test.js +0 -24
  29. package/lib/__tests__/use-debounce.test.js.map +0 -1
  30. package/lib/__tests__/utils.js +0 -70
  31. package/lib/__tests__/utils.js.map +0 -1
  32. package/lib/__tests__/utils.test.js +0 -123
  33. package/lib/__tests__/utils.test.js.map +0 -1
  34. package/lib/axis/__tests__/arrow.test.js +0 -60
  35. package/lib/axis/__tests__/arrow.test.js.map +0 -1
  36. package/lib/axis/__tests__/axes.test.js +0 -195
  37. package/lib/axis/__tests__/axes.test.js.map +0 -1
  38. package/lib/container/__tests__/actions.test.js +0 -108
  39. package/lib/container/__tests__/actions.test.js.map +0 -1
  40. package/lib/container/__tests__/index.test.js +0 -503
  41. package/lib/container/__tests__/index.test.js.map +0 -1
  42. package/lib/container/__tests__/marks.test.js +0 -259
  43. package/lib/container/__tests__/marks.test.js.map +0 -1
  44. package/lib/container/__tests__/middleware.test.js +0 -244
  45. package/lib/container/__tests__/middleware.test.js.map +0 -1
  46. package/lib/container/__tests__/reducer.test.js +0 -450
  47. package/lib/container/__tests__/reducer.test.js.map +0 -1
  48. package/lib/tools/absolute/__tests__/component.test.js +0 -65
  49. package/lib/tools/absolute/__tests__/component.test.js.map +0 -1
  50. package/lib/tools/circle/__tests__/bg-circle.test.js +0 -33
  51. package/lib/tools/circle/__tests__/bg-circle.test.js.map +0 -1
  52. package/lib/tools/circle/__tests__/component.test.js +0 -615
  53. package/lib/tools/circle/__tests__/component.test.js.map +0 -1
  54. package/lib/tools/circle/__tests__/index.test.js +0 -576
  55. package/lib/tools/circle/__tests__/index.test.js.map +0 -1
  56. package/lib/tools/exponential/__tests__/component.test.js +0 -64
  57. package/lib/tools/exponential/__tests__/component.test.js.map +0 -1
  58. package/lib/tools/exponential/__tests__/index.test.js +0 -828
  59. package/lib/tools/exponential/__tests__/index.test.js.map +0 -1
  60. package/lib/tools/line/__tests__/component.test.js +0 -45
  61. package/lib/tools/line/__tests__/component.test.js.map +0 -1
  62. package/lib/tools/parabola/__tests__/component.test.js +0 -64
  63. package/lib/tools/parabola/__tests__/component.test.js.map +0 -1
  64. package/lib/tools/parabola/__tests__/index.test.js +0 -564
  65. package/lib/tools/parabola/__tests__/index.test.js.map +0 -1
  66. package/lib/tools/point/__tests__/component.test.js +0 -434
  67. package/lib/tools/point/__tests__/component.test.js.map +0 -1
  68. package/lib/tools/point/__tests__/index.test.js +0 -262
  69. package/lib/tools/point/__tests__/index.test.js.map +0 -1
  70. package/lib/tools/polygon/__tests__/component.test.js +0 -485
  71. package/lib/tools/polygon/__tests__/component.test.js.map +0 -1
  72. package/lib/tools/polygon/__tests__/index.test.js +0 -303
  73. package/lib/tools/polygon/__tests__/index.test.js.map +0 -1
  74. package/lib/tools/polygon/__tests__/line.test.js +0 -50
  75. package/lib/tools/polygon/__tests__/line.test.js.map +0 -1
  76. package/lib/tools/polygon/__tests__/polygon.test.js +0 -85
  77. package/lib/tools/polygon/__tests__/polygon.test.js.map +0 -1
  78. package/lib/tools/ray/__tests__/component.test.js +0 -35
  79. package/lib/tools/ray/__tests__/component.test.js.map +0 -1
  80. package/lib/tools/segment/__tests__/component.test.js +0 -35
  81. package/lib/tools/segment/__tests__/component.test.js.map +0 -1
  82. package/lib/tools/shared/__tests__/arrow-head.test.js +0 -45
  83. package/lib/tools/shared/__tests__/arrow-head.test.js.map +0 -1
  84. package/lib/tools/shared/line/__tests__/index.test.js +0 -124
  85. package/lib/tools/shared/line/__tests__/index.test.js.map +0 -1
  86. package/lib/tools/shared/line/__tests__/line-path.test.js +0 -62
  87. package/lib/tools/shared/line/__tests__/line-path.test.js.map +0 -1
  88. package/lib/tools/shared/line/__tests__/with-root-edge.test.js +0 -90
  89. package/lib/tools/shared/line/__tests__/with-root-edge.test.js.map +0 -1
  90. package/lib/tools/shared/point/__tests__/arrow-point.test.js +0 -127
  91. package/lib/tools/shared/point/__tests__/arrow-point.test.js.map +0 -1
  92. package/lib/tools/shared/point/__tests__/base-point.test.js +0 -122
  93. package/lib/tools/shared/point/__tests__/base-point.test.js.map +0 -1
  94. package/lib/tools/sine/__tests__/component.test.js +0 -72
  95. package/lib/tools/sine/__tests__/component.test.js.map +0 -1
  96. package/lib/tools/vector/__tests__/component.test.js +0 -32
  97. package/lib/tools/vector/__tests__/component.test.js.map +0 -1
@@ -1,927 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- var _typeof = require("@babel/runtime/helpers/typeof");
5
- var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
6
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
7
- var _react = _interopRequireDefault(require("react"));
8
- var _testUtils = require("@pie-lib/test-utils");
9
- var _utils = require("./utils");
10
- var _graph = _interopRequireWildcard(require("../graph"));
11
- var _tools = require("../tools");
12
- 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); }
13
- 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; }
14
- 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; }
15
- describe('removeBuildingToolIfCurrentToolDiffers', function () {
16
- var marks = [{
17
- type: 'point',
18
- x: 2,
19
- y: 2,
20
- label: 'Point',
21
- showLabel: true
22
- }, {
23
- type: 'line',
24
- from: {
25
- x: 0,
26
- y: 0
27
- },
28
- to: {
29
- x: 1,
30
- y: 1
31
- },
32
- label: 'Line',
33
- building: true
34
- }];
35
- it('keeps all marks if currentTool is the same', function () {
36
- expect((0, _graph.removeBuildingToolIfCurrentToolDiffers)({
37
- marks: marks,
38
- currentTool: {
39
- type: 'line'
40
- }
41
- })).toEqual(marks);
42
- });
43
- it('removes building marks if currentTool is different', function () {
44
- expect((0, _graph.removeBuildingToolIfCurrentToolDiffers)({
45
- marks: marks,
46
- currentTool: {
47
- type: 'different'
48
- }
49
- })).toEqual([marks[0]]);
50
- });
51
- });
52
- describe('Graph', function () {
53
- var onChangeMarks = jest.fn();
54
- var defaultProps = _objectSpread({
55
- className: 'className',
56
- onChangeMarks: onChangeMarks,
57
- tools: _tools.toolsArr,
58
- domain: {
59
- min: 0,
60
- max: 1,
61
- step: 1
62
- },
63
- range: {
64
- min: 0,
65
- max: 1,
66
- step: 1
67
- },
68
- size: {
69
- width: 400,
70
- height: 400
71
- },
72
- marks: [{
73
- type: 'point',
74
- x: 2,
75
- y: 2,
76
- label: 'Point',
77
- showLabel: true
78
- }, {
79
- type: 'line',
80
- from: {
81
- x: 0,
82
- y: 0
83
- },
84
- to: {
85
- x: 1,
86
- y: 1
87
- },
88
- label: 'Line'
89
- }]
90
- }, (0, _utils.graphProps)());
91
- beforeEach(function () {
92
- onChangeMarks.mockClear();
93
- });
94
- describe('rendering', function () {
95
- it('renders without crashing', function () {
96
- var _render = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_graph["default"], defaultProps)),
97
- container = _render.container;
98
- expect(container.firstChild).toBeInTheDocument();
99
- });
100
- it('renders with currentTool', function () {
101
- var props = _objectSpread(_objectSpread({}, defaultProps), {}, {
102
- currentTool: _tools.toolsArr[0]
103
- });
104
- var _render2 = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_graph["default"], props)),
105
- container = _render2.container;
106
- expect(container.firstChild).toBeInTheDocument();
107
- });
108
- it('renders with marks', function () {
109
- var _render3 = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_graph["default"], defaultProps)),
110
- container = _render3.container;
111
- expect(container.firstChild).toBeInTheDocument();
112
- });
113
- it('renders with empty marks array', function () {
114
- var props = _objectSpread(_objectSpread({}, defaultProps), {}, {
115
- marks: []
116
- });
117
- var _render4 = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_graph["default"], props)),
118
- container = _render4.container;
119
- expect(container.firstChild).toBeInTheDocument();
120
- });
121
- it('renders with labelModeEnabled', function () {
122
- var props = _objectSpread(_objectSpread({}, defaultProps), {}, {
123
- labelModeEnabled: true
124
- });
125
- var _render5 = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_graph["default"], props)),
126
- container = _render5.container;
127
- expect(container.firstChild).toBeInTheDocument();
128
- });
129
- });
130
- describe('props handling', function () {
131
- it('calls onChangeMarks when marks prop changes', function () {
132
- var _render6 = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_graph["default"], defaultProps)),
133
- rerender = _render6.rerender;
134
- var newMarks = [{
135
- type: 'point',
136
- x: 3,
137
- y: 3,
138
- label: 'New Point',
139
- showLabel: true
140
- }];
141
- rerender(/*#__PURE__*/_react["default"].createElement(_graph["default"], (0, _extends2["default"])({}, defaultProps, {
142
- marks: newMarks
143
- })));
144
-
145
- // Component should render with new marks
146
- // Note: onChangeMarks is called internally when marks are changed through user interaction,
147
- // not when props change, so we just verify the component renders correctly
148
- expect(onChangeMarks).not.toHaveBeenCalled();
149
- });
150
- it('handles undefined onChangeMarks gracefully', function () {
151
- var props = _objectSpread(_objectSpread({}, defaultProps), {}, {
152
- onChangeMarks: undefined
153
- });
154
- var _render7 = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_graph["default"], props)),
155
- container = _render7.container;
156
- expect(container.firstChild).toBeInTheDocument();
157
- });
158
- });
159
- describe('removeBuildingToolIfCurrentToolDiffers integration', function () {
160
- it('removes building marks when currentTool changes', function () {
161
- var marksWithBuilding = [{
162
- type: 'point',
163
- x: 2,
164
- y: 2,
165
- label: 'Point',
166
- showLabel: true
167
- }, {
168
- type: 'line',
169
- from: {
170
- x: 0,
171
- y: 0
172
- },
173
- to: {
174
- x: 1,
175
- y: 1
176
- },
177
- building: true
178
- }];
179
- var props = _objectSpread(_objectSpread({}, defaultProps), {}, {
180
- marks: marksWithBuilding,
181
- currentTool: {
182
- type: 'point'
183
- } // Different from building mark type
184
- });
185
- var _render8 = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_graph["default"], props)),
186
- container = _render8.container;
187
- expect(container.firstChild).toBeInTheDocument();
188
- });
189
- });
190
- describe('updateMarks method', function () {
191
- it('updates an existing mark', function () {
192
- var wrapper = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_graph["default"], defaultProps));
193
- var rerender = wrapper.rerender;
194
- var updatedMarks = [{
195
- type: 'point',
196
- x: 3,
197
- y: 3,
198
- label: 'Updated Point',
199
- showLabel: true
200
- }, {
201
- type: 'line',
202
- from: {
203
- x: 0,
204
- y: 0
205
- },
206
- to: {
207
- x: 1,
208
- y: 1
209
- },
210
- label: 'Line'
211
- }];
212
- rerender(/*#__PURE__*/_react["default"].createElement(_graph["default"], (0, _extends2["default"])({}, defaultProps, {
213
- marks: updatedMarks
214
- })));
215
-
216
- // Component should render with updated marks
217
- expect(wrapper.container.firstChild).toBeInTheDocument();
218
- });
219
- it('does not update if mark is duplicated', function () {
220
- var duplicatedMarks = [{
221
- type: 'point',
222
- x: 2,
223
- y: 2,
224
- label: 'Point',
225
- showLabel: true
226
- }, {
227
- type: 'point',
228
- x: 2,
229
- y: 2,
230
- label: 'Point',
231
- showLabel: true
232
- }];
233
- var _render9 = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_graph["default"], (0, _extends2["default"])({}, defaultProps, {
234
- marks: duplicatedMarks
235
- }))),
236
- container = _render9.container;
237
- expect(container.firstChild).toBeInTheDocument();
238
- });
239
- it('adds mark if addIfMissing is true and mark does not exist', function () {
240
- var _render0 = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_graph["default"], defaultProps)),
241
- container = _render0.container;
242
-
243
- // The component should handle adding new marks through user interaction
244
- expect(container.firstChild).toBeInTheDocument();
245
- });
246
- it('does not update if mark has no building flag and is duplicated', function () {
247
- var marks = [{
248
- type: 'point',
249
- x: 2,
250
- y: 2,
251
- label: 'Point',
252
- showLabel: true
253
- }];
254
- var _render1 = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_graph["default"], (0, _extends2["default"])({}, defaultProps, {
255
- marks: marks
256
- }))),
257
- container = _render1.container;
258
- expect(container.firstChild).toBeInTheDocument();
259
- });
260
- it('handles building marks correctly', function () {
261
- var marksWithBuilding = [{
262
- type: 'line',
263
- from: {
264
- x: 0,
265
- y: 0
266
- },
267
- building: true
268
- }];
269
- var _render10 = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_graph["default"], (0, _extends2["default"])({}, defaultProps, {
270
- marks: marksWithBuilding
271
- }))),
272
- container = _render10.container;
273
- expect(container.firstChild).toBeInTheDocument();
274
- });
275
- it('updates building mark to completed mark', function () {
276
- var marksWithBuilding = [{
277
- type: 'line',
278
- from: {
279
- x: 0,
280
- y: 0
281
- },
282
- building: true
283
- }];
284
- var _render11 = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_graph["default"], (0, _extends2["default"])({}, defaultProps, {
285
- marks: marksWithBuilding
286
- }))),
287
- rerender = _render11.rerender,
288
- container = _render11.container;
289
- var completedMarks = [{
290
- type: 'line',
291
- from: {
292
- x: 0,
293
- y: 0
294
- },
295
- to: {
296
- x: 1,
297
- y: 1
298
- },
299
- building: false
300
- }];
301
- rerender(/*#__PURE__*/_react["default"].createElement(_graph["default"], (0, _extends2["default"])({}, defaultProps, {
302
- marks: completedMarks
303
- })));
304
- expect(container.firstChild).toBeInTheDocument();
305
- });
306
- it('does not call onChangeMarks if update is undefined', function () {
307
- var _render12 = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_graph["default"], defaultProps)),
308
- container = _render12.container;
309
-
310
- // If update is undefined, onChangeMarks should not be called
311
- // This is handled internally by the component
312
- expect(container.firstChild).toBeInTheDocument();
313
- });
314
- it('does not add mark if existing is not found and addIfMissing is false', function () {
315
- var _render13 = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_graph["default"], defaultProps)),
316
- container = _render13.container;
317
-
318
- // By default, marks are not added if they don't exist and addIfMissing is false
319
- expect(container.firstChild).toBeInTheDocument();
320
- });
321
- it('calls onChangeMarks with correct marks when updating', function () {
322
- var marks = [{
323
- type: 'point',
324
- x: 2,
325
- y: 2,
326
- label: 'Point',
327
- showLabel: true
328
- }];
329
- var _render14 = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_graph["default"], (0, _extends2["default"])({}, defaultProps, {
330
- marks: marks
331
- }))),
332
- rerender = _render14.rerender;
333
- var updatedMarks = [{
334
- type: 'point',
335
- x: 3,
336
- y: 3,
337
- label: 'Updated Point',
338
- showLabel: true
339
- }];
340
- rerender(/*#__PURE__*/_react["default"].createElement(_graph["default"], (0, _extends2["default"])({}, defaultProps, {
341
- marks: updatedMarks
342
- })));
343
-
344
- // The component handles mark updates internally
345
- // onChangeMarks is called through user interactions
346
- });
347
- it('preserves other marks when updating a specific mark', function () {
348
- var marks = [{
349
- type: 'point',
350
- x: 2,
351
- y: 2,
352
- label: 'Point 1',
353
- showLabel: true
354
- }, {
355
- type: 'point',
356
- x: 3,
357
- y: 3,
358
- label: 'Point 2',
359
- showLabel: true
360
- }];
361
- var _render15 = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_graph["default"], (0, _extends2["default"])({}, defaultProps, {
362
- marks: marks
363
- }))),
364
- container = _render15.container;
365
- expect(container.firstChild).toBeInTheDocument();
366
- });
367
- });
368
- describe('getComponent method', function () {
369
- it('returns null if mark is null', function () {
370
- var _render16 = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_graph["default"], defaultProps)),
371
- container = _render16.container;
372
-
373
- // getComponent returns null for null marks
374
- // This is tested by rendering with undefined marks
375
- var propsWithoutMarks = _objectSpread(_objectSpread({}, defaultProps), {}, {
376
- marks: []
377
- });
378
- var _render17 = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_graph["default"], propsWithoutMarks)),
379
- emptyContainer = _render17.container;
380
- expect(emptyContainer.firstChild).toBeInTheDocument();
381
- });
382
- it('returns null if mark is undefined', function () {
383
- var _render18 = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_graph["default"], defaultProps)),
384
- container = _render18.container;
385
- expect(container.firstChild).toBeInTheDocument();
386
- });
387
- it('returns null if tools is undefined', function () {
388
- var propsWithUndefinedTools = _objectSpread(_objectSpread({}, defaultProps), {}, {
389
- tools: undefined
390
- });
391
- var graphInstance = new _graph["default"](propsWithUndefinedTools);
392
- var mark = {
393
- type: 'point',
394
- x: 1,
395
- y: 1
396
- };
397
- var component = graphInstance.getComponent(mark);
398
- expect(component).toBeNull();
399
- });
400
- it('returns null if tools is empty array', function () {
401
- var propsWithEmptyTools = _objectSpread(_objectSpread({}, defaultProps), {}, {
402
- tools: []
403
- });
404
- var graphInstance = new _graph["default"](propsWithEmptyTools);
405
- var mark = {
406
- type: 'point',
407
- x: 1,
408
- y: 1
409
- };
410
- var component = graphInstance.getComponent(mark);
411
- expect(component).toBeNull();
412
- });
413
- it('returns null if mark type is not found in tools', function () {
414
- var graphInstance = new _graph["default"](defaultProps);
415
- var mark = {
416
- type: 'nonexistent-type',
417
- x: 1,
418
- y: 1
419
- };
420
- var component = graphInstance.getComponent(mark);
421
- expect(component).toBeNull();
422
- });
423
- it('returns component if tool has no Component property', function () {
424
- var toolWithoutComponent = [{
425
- type: 'custom',
426
- label: 'Custom'
427
- }];
428
- var propsWithCustomTool = _objectSpread(_objectSpread({}, defaultProps), {}, {
429
- tools: toolWithoutComponent
430
- });
431
- var graphInstance = new _graph["default"](propsWithCustomTool);
432
- var mark = {
433
- type: 'custom',
434
- x: 1,
435
- y: 1
436
- };
437
- var component = graphInstance.getComponent(mark);
438
- expect(component).toBeNull();
439
- });
440
- it('returns correct component for point mark', function () {
441
- var graphInstance = new _graph["default"](defaultProps);
442
- var mark = {
443
- type: 'point',
444
- x: 1,
445
- y: 1
446
- };
447
- var component = graphInstance.getComponent(mark);
448
- expect(component).toBeTruthy();
449
- });
450
- it('returns correct component for line mark', function () {
451
- var graphInstance = new _graph["default"](defaultProps);
452
- var mark = {
453
- type: 'line',
454
- from: {
455
- x: 0,
456
- y: 0
457
- },
458
- to: {
459
- x: 1,
460
- y: 1
461
- }
462
- };
463
- var component = graphInstance.getComponent(mark);
464
- expect(component).toBeTruthy();
465
- });
466
- it('returns correct component for different mark types', function () {
467
- var graphInstance = new _graph["default"](defaultProps);
468
- var pointMark = {
469
- type: 'point',
470
- x: 1,
471
- y: 1
472
- };
473
- var lineMark = {
474
- type: 'line',
475
- from: {
476
- x: 0,
477
- y: 0
478
- },
479
- to: {
480
- x: 1,
481
- y: 1
482
- }
483
- };
484
- var circleMark = {
485
- type: 'circle',
486
- center: {
487
- x: 0,
488
- y: 0
489
- },
490
- edge: {
491
- x: 1,
492
- y: 1
493
- }
494
- };
495
- var pointComponent = graphInstance.getComponent(pointMark);
496
- var lineComponent = graphInstance.getComponent(lineMark);
497
- var circleComponent = graphInstance.getComponent(circleMark);
498
- expect(pointComponent).toBeTruthy();
499
- expect(lineComponent).toBeTruthy();
500
- expect(circleComponent).toBeTruthy();
501
- });
502
- });
503
- describe('getComponent method - unit tests', function () {
504
- it('returns null if mark is null', function () {
505
- var graphInstance = new _graph["default"](defaultProps);
506
- var component = graphInstance.getComponent(null);
507
- expect(component).toBeNull();
508
- });
509
- it('returns null if mark is undefined', function () {
510
- var graphInstance = new _graph["default"](defaultProps);
511
- var component = graphInstance.getComponent(undefined);
512
- expect(component).toBeNull();
513
- });
514
- it('returns null if tools is undefined', function () {
515
- var propsWithUndefinedTools = _objectSpread(_objectSpread({}, defaultProps), {}, {
516
- tools: undefined
517
- });
518
- var graphInstance = new _graph["default"](propsWithUndefinedTools);
519
- var mark = {
520
- type: 'point',
521
- x: 1,
522
- y: 1
523
- };
524
- var component = graphInstance.getComponent(mark);
525
- expect(component).toBeNull();
526
- });
527
- it('returns null if tools is empty array', function () {
528
- var propsWithEmptyTools = _objectSpread(_objectSpread({}, defaultProps), {}, {
529
- tools: []
530
- });
531
- var graphInstance = new _graph["default"](propsWithEmptyTools);
532
- var mark = {
533
- type: 'point',
534
- x: 1,
535
- y: 1
536
- };
537
- var component = graphInstance.getComponent(mark);
538
- expect(component).toBeNull();
539
- });
540
- it('returns null if mark type is not found in tools', function () {
541
- var graphInstance = new _graph["default"](defaultProps);
542
- var mark = {
543
- type: 'nonexistent-type',
544
- x: 1,
545
- y: 1
546
- };
547
- var component = graphInstance.getComponent(mark);
548
- expect(component).toBeNull();
549
- });
550
- it('returns component if tool has no Component property', function () {
551
- var toolWithoutComponent = [{
552
- type: 'custom',
553
- label: 'Custom'
554
- }];
555
- var propsWithCustomTool = _objectSpread(_objectSpread({}, defaultProps), {}, {
556
- tools: toolWithoutComponent
557
- });
558
- var graphInstance = new _graph["default"](propsWithCustomTool);
559
- var mark = {
560
- type: 'custom',
561
- x: 1,
562
- y: 1
563
- };
564
- var component = graphInstance.getComponent(mark);
565
- expect(component).toBeNull();
566
- });
567
- it('returns correct component for point mark', function () {
568
- var graphInstance = new _graph["default"](defaultProps);
569
- var mark = {
570
- type: 'point',
571
- x: 1,
572
- y: 1
573
- };
574
- var component = graphInstance.getComponent(mark);
575
- expect(component).toBeTruthy();
576
- });
577
- it('returns correct component for line mark', function () {
578
- var graphInstance = new _graph["default"](defaultProps);
579
- var mark = {
580
- type: 'line',
581
- from: {
582
- x: 0,
583
- y: 0
584
- },
585
- to: {
586
- x: 1,
587
- y: 1
588
- }
589
- };
590
- var component = graphInstance.getComponent(mark);
591
- expect(component).toBeTruthy();
592
- });
593
- it('returns correct component for different mark types', function () {
594
- var graphInstance = new _graph["default"](defaultProps);
595
- var pointMark = {
596
- type: 'point',
597
- x: 1,
598
- y: 1
599
- };
600
- var lineMark = {
601
- type: 'line',
602
- from: {
603
- x: 0,
604
- y: 0
605
- },
606
- to: {
607
- x: 1,
608
- y: 1
609
- }
610
- };
611
- var circleMark = {
612
- type: 'circle',
613
- center: {
614
- x: 0,
615
- y: 0
616
- },
617
- edge: {
618
- x: 1,
619
- y: 1
620
- }
621
- };
622
- var pointComponent = graphInstance.getComponent(pointMark);
623
- var lineComponent = graphInstance.getComponent(lineMark);
624
- var circleComponent = graphInstance.getComponent(circleMark);
625
- expect(pointComponent).toBeTruthy();
626
- expect(lineComponent).toBeTruthy();
627
- expect(circleComponent).toBeTruthy();
628
- });
629
- });
630
- describe('updateMarks method - unit tests', function () {
631
- it('does not update if update parameter is null', function () {
632
- var onChangeMarks = jest.fn();
633
- var marks = [{
634
- type: 'point',
635
- x: 1,
636
- y: 1
637
- }];
638
- var props = _objectSpread(_objectSpread({}, defaultProps), {}, {
639
- onChangeMarks: onChangeMarks,
640
- marks: marks
641
- });
642
- var graphInstance = new _graph["default"](props);
643
- var existing = marks[0];
644
- graphInstance.updateMarks(existing, null);
645
- expect(onChangeMarks).not.toHaveBeenCalled();
646
- });
647
- it('does not update if update parameter is undefined', function () {
648
- var onChangeMarks = jest.fn();
649
- var marks = [{
650
- type: 'point',
651
- x: 1,
652
- y: 1
653
- }];
654
- var props = _objectSpread(_objectSpread({}, defaultProps), {}, {
655
- onChangeMarks: onChangeMarks,
656
- marks: marks
657
- });
658
- var graphInstance = new _graph["default"](props);
659
- var existing = marks[0];
660
- graphInstance.updateMarks(existing, undefined);
661
- expect(onChangeMarks).not.toHaveBeenCalled();
662
- });
663
- it('updates existing mark when found', function () {
664
- var onChangeMarks = jest.fn();
665
- var marks = [{
666
- type: 'point',
667
- x: 1,
668
- y: 1
669
- }, {
670
- type: 'point',
671
- x: 2,
672
- y: 2
673
- }];
674
- var props = _objectSpread(_objectSpread({}, defaultProps), {}, {
675
- onChangeMarks: onChangeMarks,
676
- marks: marks
677
- });
678
- var graphInstance = new _graph["default"](props);
679
- var existing = marks[0];
680
- var updated = {
681
- type: 'point',
682
- x: 1,
683
- y: 3
684
- };
685
- graphInstance.updateMarks(existing, updated);
686
- expect(onChangeMarks).toHaveBeenCalledTimes(1);
687
- var updatedMarks = onChangeMarks.mock.calls[0][0];
688
- expect(updatedMarks[0]).toEqual(updated);
689
- expect(updatedMarks[1]).toEqual(marks[1]);
690
- });
691
- it('adds mark if addIfMissing is true and mark not found', function () {
692
- var onChangeMarks = jest.fn();
693
- var marks = [{
694
- type: 'point',
695
- x: 1,
696
- y: 1
697
- }];
698
- var props = _objectSpread(_objectSpread({}, defaultProps), {}, {
699
- onChangeMarks: onChangeMarks,
700
- marks: marks
701
- });
702
- var graphInstance = new _graph["default"](props);
703
- var existing = {
704
- type: 'point',
705
- x: 5,
706
- y: 5
707
- };
708
- var updated = {
709
- type: 'point',
710
- x: 2,
711
- y: 2
712
- };
713
- graphInstance.updateMarks(existing, updated, true);
714
- expect(onChangeMarks).toHaveBeenCalledTimes(1);
715
- var updatedMarks = onChangeMarks.mock.calls[0][0];
716
- expect(updatedMarks.length).toBe(2);
717
- expect(updatedMarks[1]).toEqual(updated);
718
- });
719
- it('does not add mark if addIfMissing is false and mark not found', function () {
720
- var onChangeMarks = jest.fn();
721
- var marks = [{
722
- type: 'point',
723
- x: 1,
724
- y: 1
725
- }];
726
- var props = _objectSpread(_objectSpread({}, defaultProps), {}, {
727
- onChangeMarks: onChangeMarks,
728
- marks: marks
729
- });
730
- var graphInstance = new _graph["default"](props);
731
- var existing = {
732
- type: 'point',
733
- x: 5,
734
- y: 5
735
- };
736
- var updated = {
737
- type: 'point',
738
- x: 2,
739
- y: 2
740
- };
741
- graphInstance.updateMarks(existing, updated, false);
742
- expect(onChangeMarks).not.toHaveBeenCalled();
743
- });
744
- it('does not update if mark is still building', function () {
745
- var onChangeMarks = jest.fn();
746
- var marks = [{
747
- type: 'point',
748
- x: 1,
749
- y: 1,
750
- building: true
751
- }];
752
- var props = _objectSpread(_objectSpread({}, defaultProps), {}, {
753
- onChangeMarks: onChangeMarks,
754
- marks: marks
755
- });
756
- var graphInstance = new _graph["default"](props);
757
- var existing = marks[0];
758
- var updated = {
759
- type: 'point',
760
- x: 2,
761
- y: 2
762
- };
763
- graphInstance.updateMarks(existing, updated);
764
- expect(onChangeMarks).toHaveBeenCalled();
765
- });
766
- it('preserves mark order when updating', function () {
767
- var onChangeMarks = jest.fn();
768
- var marks = [{
769
- type: 'point',
770
- x: 1,
771
- y: 1
772
- }, {
773
- type: 'point',
774
- x: 2,
775
- y: 2
776
- }, {
777
- type: 'point',
778
- x: 3,
779
- y: 3
780
- }];
781
- var props = _objectSpread(_objectSpread({}, defaultProps), {}, {
782
- onChangeMarks: onChangeMarks,
783
- marks: marks
784
- });
785
- var graphInstance = new _graph["default"](props);
786
- var existing = marks[1];
787
- var updated = {
788
- type: 'point',
789
- x: 2,
790
- y: 5
791
- };
792
- graphInstance.updateMarks(existing, updated);
793
- var updatedMarks = onChangeMarks.mock.calls[0][0];
794
- expect(updatedMarks[0]).toEqual(marks[0]);
795
- expect(updatedMarks[1]).toEqual(updated);
796
- expect(updatedMarks[2]).toEqual(marks[2]);
797
- });
798
- it('handles empty marks array', function () {
799
- var onChangeMarks = jest.fn();
800
- var props = _objectSpread(_objectSpread({}, defaultProps), {}, {
801
- onChangeMarks: onChangeMarks,
802
- marks: []
803
- });
804
- var graphInstance = new _graph["default"](props);
805
- var existing = {
806
- type: 'point',
807
- x: 1,
808
- y: 1
809
- };
810
- var updated = {
811
- type: 'point',
812
- x: 2,
813
- y: 2
814
- };
815
- graphInstance.updateMarks(existing, updated, true);
816
- expect(onChangeMarks).toHaveBeenCalledTimes(1);
817
- var updatedMarks = onChangeMarks.mock.calls[0][0];
818
- expect(updatedMarks.length).toBe(1);
819
- expect(updatedMarks[0]).toEqual(updated);
820
- });
821
- });
822
- describe('updateMarks and getComponent integration', function () {
823
- it('updates marks and renders with correct components', function () {
824
- var initialMarks = [{
825
- type: 'point',
826
- x: 2,
827
- y: 2,
828
- label: 'Point',
829
- showLabel: true
830
- }];
831
- var _render19 = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_graph["default"], (0, _extends2["default"])({}, defaultProps, {
832
- marks: initialMarks
833
- }))),
834
- rerender = _render19.rerender,
835
- container = _render19.container;
836
- var updatedMarks = [{
837
- type: 'line',
838
- from: {
839
- x: 0,
840
- y: 0
841
- },
842
- to: {
843
- x: 1,
844
- y: 1
845
- },
846
- label: 'Line'
847
- }];
848
- rerender(/*#__PURE__*/_react["default"].createElement(_graph["default"], (0, _extends2["default"])({}, defaultProps, {
849
- marks: updatedMarks
850
- })));
851
- expect(container.querySelector('#marks')).toBeInTheDocument();
852
- });
853
- it('handles adding new marks with different types', function () {
854
- var initialMarks = [{
855
- type: 'point',
856
- x: 2,
857
- y: 2,
858
- label: 'Point',
859
- showLabel: true
860
- }];
861
- var _render20 = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_graph["default"], (0, _extends2["default"])({}, defaultProps, {
862
- marks: initialMarks
863
- }))),
864
- rerender = _render20.rerender,
865
- container = _render20.container;
866
- var updatedMarks = [{
867
- type: 'point',
868
- x: 2,
869
- y: 2,
870
- label: 'Point',
871
- showLabel: true
872
- }, {
873
- type: 'line',
874
- from: {
875
- x: 0,
876
- y: 0
877
- },
878
- to: {
879
- x: 1,
880
- y: 1
881
- },
882
- label: 'Line'
883
- }];
884
- rerender(/*#__PURE__*/_react["default"].createElement(_graph["default"], (0, _extends2["default"])({}, defaultProps, {
885
- marks: updatedMarks
886
- })));
887
- expect(container.querySelector('#marks')).toBeInTheDocument();
888
- });
889
- it('handles removing marks', function () {
890
- var initialMarks = [{
891
- type: 'point',
892
- x: 2,
893
- y: 2,
894
- label: 'Point',
895
- showLabel: true
896
- }, {
897
- type: 'line',
898
- from: {
899
- x: 0,
900
- y: 0
901
- },
902
- to: {
903
- x: 1,
904
- y: 1
905
- },
906
- label: 'Line'
907
- }];
908
- var _render21 = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_graph["default"], (0, _extends2["default"])({}, defaultProps, {
909
- marks: initialMarks
910
- }))),
911
- rerender = _render21.rerender,
912
- container = _render21.container;
913
- var updatedMarks = [{
914
- type: 'point',
915
- x: 2,
916
- y: 2,
917
- label: 'Point',
918
- showLabel: true
919
- }];
920
- rerender(/*#__PURE__*/_react["default"].createElement(_graph["default"], (0, _extends2["default"])({}, defaultProps, {
921
- marks: updatedMarks
922
- })));
923
- expect(container.querySelector('#marks')).toBeInTheDocument();
924
- });
925
- });
926
- });
927
- //# sourceMappingURL=graph.test.js.map