@pie-lib/graphing 4.1.0-beta.7 → 4.1.0-beta.9
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/package.json +3 -3
- package/lib/__tests__/bg.test.js +0 -282
- package/lib/__tests__/bg.test.js.map +0 -1
- package/lib/__tests__/coordinates-label.test.js +0 -276
- package/lib/__tests__/coordinates-label.test.js.map +0 -1
- package/lib/__tests__/graph-with-controls.test.js +0 -275
- package/lib/__tests__/graph-with-controls.test.js.map +0 -1
- package/lib/__tests__/graph.test.js +0 -927
- package/lib/__tests__/graph.test.js.map +0 -1
- package/lib/__tests__/grid-setup.test.js +0 -729
- package/lib/__tests__/grid-setup.test.js.map +0 -1
- package/lib/__tests__/grid.test.js +0 -29
- package/lib/__tests__/grid.test.js.map +0 -1
- package/lib/__tests__/key-legend.test.js +0 -321
- package/lib/__tests__/key-legend.test.js.map +0 -1
- package/lib/__tests__/label-svg-icon.test.js +0 -373
- package/lib/__tests__/label-svg-icon.test.js.map +0 -1
- package/lib/__tests__/labels.test.js +0 -61
- package/lib/__tests__/labels.test.js.map +0 -1
- package/lib/__tests__/mark-label.test.js +0 -133
- package/lib/__tests__/mark-label.test.js.map +0 -1
- package/lib/__tests__/toggle-bar.test.js +0 -197
- package/lib/__tests__/toggle-bar.test.js.map +0 -1
- package/lib/__tests__/tool-menu.test.js +0 -151
- package/lib/__tests__/tool-menu.test.js.map +0 -1
- package/lib/__tests__/undo-redo.test.js +0 -31
- package/lib/__tests__/undo-redo.test.js.map +0 -1
- package/lib/__tests__/use-debounce.test.js +0 -24
- package/lib/__tests__/use-debounce.test.js.map +0 -1
- package/lib/__tests__/utils.js +0 -70
- package/lib/__tests__/utils.js.map +0 -1
- package/lib/__tests__/utils.test.js +0 -123
- package/lib/__tests__/utils.test.js.map +0 -1
- package/lib/axis/__tests__/arrow.test.js +0 -60
- package/lib/axis/__tests__/arrow.test.js.map +0 -1
- package/lib/axis/__tests__/axes.test.js +0 -195
- package/lib/axis/__tests__/axes.test.js.map +0 -1
- package/lib/container/__tests__/actions.test.js +0 -108
- package/lib/container/__tests__/actions.test.js.map +0 -1
- package/lib/container/__tests__/index.test.js +0 -503
- package/lib/container/__tests__/index.test.js.map +0 -1
- package/lib/container/__tests__/marks.test.js +0 -259
- package/lib/container/__tests__/marks.test.js.map +0 -1
- package/lib/container/__tests__/middleware.test.js +0 -244
- package/lib/container/__tests__/middleware.test.js.map +0 -1
- package/lib/container/__tests__/reducer.test.js +0 -450
- package/lib/container/__tests__/reducer.test.js.map +0 -1
- package/lib/tools/absolute/__tests__/component.test.js +0 -65
- package/lib/tools/absolute/__tests__/component.test.js.map +0 -1
- package/lib/tools/circle/__tests__/bg-circle.test.js +0 -33
- package/lib/tools/circle/__tests__/bg-circle.test.js.map +0 -1
- package/lib/tools/circle/__tests__/component.test.js +0 -615
- package/lib/tools/circle/__tests__/component.test.js.map +0 -1
- package/lib/tools/circle/__tests__/index.test.js +0 -576
- package/lib/tools/circle/__tests__/index.test.js.map +0 -1
- package/lib/tools/exponential/__tests__/component.test.js +0 -64
- package/lib/tools/exponential/__tests__/component.test.js.map +0 -1
- package/lib/tools/exponential/__tests__/index.test.js +0 -828
- package/lib/tools/exponential/__tests__/index.test.js.map +0 -1
- package/lib/tools/line/__tests__/component.test.js +0 -45
- package/lib/tools/line/__tests__/component.test.js.map +0 -1
- package/lib/tools/parabola/__tests__/component.test.js +0 -64
- package/lib/tools/parabola/__tests__/component.test.js.map +0 -1
- package/lib/tools/parabola/__tests__/index.test.js +0 -564
- package/lib/tools/parabola/__tests__/index.test.js.map +0 -1
- package/lib/tools/point/__tests__/component.test.js +0 -434
- package/lib/tools/point/__tests__/component.test.js.map +0 -1
- package/lib/tools/point/__tests__/index.test.js +0 -262
- package/lib/tools/point/__tests__/index.test.js.map +0 -1
- package/lib/tools/polygon/__tests__/component.test.js +0 -485
- package/lib/tools/polygon/__tests__/component.test.js.map +0 -1
- package/lib/tools/polygon/__tests__/index.test.js +0 -303
- package/lib/tools/polygon/__tests__/index.test.js.map +0 -1
- package/lib/tools/polygon/__tests__/line.test.js +0 -50
- package/lib/tools/polygon/__tests__/line.test.js.map +0 -1
- package/lib/tools/polygon/__tests__/polygon.test.js +0 -85
- package/lib/tools/polygon/__tests__/polygon.test.js.map +0 -1
- package/lib/tools/ray/__tests__/component.test.js +0 -35
- package/lib/tools/ray/__tests__/component.test.js.map +0 -1
- package/lib/tools/segment/__tests__/component.test.js +0 -35
- package/lib/tools/segment/__tests__/component.test.js.map +0 -1
- package/lib/tools/shared/__tests__/arrow-head.test.js +0 -45
- package/lib/tools/shared/__tests__/arrow-head.test.js.map +0 -1
- package/lib/tools/shared/line/__tests__/index.test.js +0 -124
- package/lib/tools/shared/line/__tests__/index.test.js.map +0 -1
- package/lib/tools/shared/line/__tests__/line-path.test.js +0 -62
- package/lib/tools/shared/line/__tests__/line-path.test.js.map +0 -1
- package/lib/tools/shared/line/__tests__/with-root-edge.test.js +0 -90
- package/lib/tools/shared/line/__tests__/with-root-edge.test.js.map +0 -1
- package/lib/tools/shared/point/__tests__/arrow-point.test.js +0 -127
- package/lib/tools/shared/point/__tests__/arrow-point.test.js.map +0 -1
- package/lib/tools/shared/point/__tests__/base-point.test.js +0 -122
- package/lib/tools/shared/point/__tests__/base-point.test.js.map +0 -1
- package/lib/tools/sine/__tests__/component.test.js +0 -72
- package/lib/tools/sine/__tests__/component.test.js.map +0 -1
- package/lib/tools/vector/__tests__/component.test.js +0 -32
- package/lib/tools/vector/__tests__/component.test.js.map +0 -1
- package/src/__tests__/bg.test.jsx +0 -250
- package/src/__tests__/coordinates-label.test.jsx +0 -243
- package/src/__tests__/graph-with-controls.test.jsx +0 -198
- package/src/__tests__/graph.test.jsx +0 -721
- package/src/__tests__/grid-setup.test.jsx +0 -645
- package/src/__tests__/grid.test.jsx +0 -22
- package/src/__tests__/key-legend.test.jsx +0 -260
- package/src/__tests__/label-svg-icon.test.jsx +0 -278
- package/src/__tests__/labels.test.jsx +0 -55
- package/src/__tests__/mark-label.test.jsx +0 -63
- package/src/__tests__/toggle-bar.test.jsx +0 -146
- package/src/__tests__/tool-menu.test.jsx +0 -115
- package/src/__tests__/undo-redo.test.jsx +0 -24
- package/src/__tests__/use-debounce.test.js +0 -21
- package/src/__tests__/utils.js +0 -41
- package/src/__tests__/utils.test.js +0 -105
- package/src/axis/__tests__/arrow.test.jsx +0 -38
- package/src/axis/__tests__/axes.test.jsx +0 -216
- package/src/container/__tests__/actions.test.js +0 -105
- package/src/container/__tests__/index.test.jsx +0 -319
- package/src/container/__tests__/marks.test.js +0 -172
- package/src/container/__tests__/middleware.test.js +0 -235
- package/src/container/__tests__/reducer.test.js +0 -324
- package/src/tools/absolute/__tests__/component.test.jsx +0 -53
- package/src/tools/circle/__tests__/bg-circle.test.jsx +0 -26
- package/src/tools/circle/__tests__/component.test.jsx +0 -494
- package/src/tools/circle/__tests__/index.test.js +0 -480
- package/src/tools/exponential/__tests__/component.test.jsx +0 -53
- package/src/tools/exponential/__tests__/index.test.js +0 -729
- package/src/tools/line/__tests__/component.test.jsx +0 -37
- package/src/tools/parabola/__tests__/component.test.jsx +0 -48
- package/src/tools/parabola/__tests__/index.test.js +0 -470
- package/src/tools/point/__tests__/component.test.jsx +0 -349
- package/src/tools/point/__tests__/index.test.js +0 -241
- package/src/tools/polygon/__tests__/component.test.jsx +0 -471
- package/src/tools/polygon/__tests__/index.test.js +0 -294
- package/src/tools/polygon/__tests__/line.test.jsx +0 -35
- package/src/tools/polygon/__tests__/polygon.test.jsx +0 -61
- package/src/tools/ray/__tests__/component.test.jsx +0 -29
- package/src/tools/segment/__tests__/component.test.jsx +0 -28
- package/src/tools/shared/__tests__/arrow-head.test.jsx +0 -31
- package/src/tools/shared/line/__tests__/index.test.jsx +0 -109
- package/src/tools/shared/line/__tests__/line-path.test.jsx +0 -53
- package/src/tools/shared/line/__tests__/with-root-edge.test.jsx +0 -73
- package/src/tools/shared/point/__tests__/arrow-point.test.jsx +0 -91
- package/src/tools/shared/point/__tests__/base-point.test.jsx +0 -87
- package/src/tools/sine/__tests__/component.test.jsx +0 -51
- package/src/tools/vector/__tests__/component.test.jsx +0 -25
|
@@ -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
|