@pie-element/charting 10.1.0 → 10.2.0-mui-update.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +66 -0
- package/configure/CHANGELOG.md +66 -0
- package/configure/lib/__tests__/configure.test.js +215 -0
- package/configure/lib/__tests__/correctResponse.test.js +151 -0
- package/configure/lib/charting-config.js +150 -221
- package/configure/lib/charting-config.js.map +1 -1
- package/configure/lib/configure.js +280 -379
- package/configure/lib/configure.js.map +1 -1
- package/configure/lib/correct-response.js +184 -259
- package/configure/lib/correct-response.js.map +1 -1
- package/configure/lib/defaults.js +3 -5
- package/configure/lib/defaults.js.map +1 -1
- package/configure/lib/index.js +100 -164
- package/configure/lib/index.js.map +1 -1
- package/configure/lib/utils.js +25 -42
- package/configure/lib/utils.js.map +1 -1
- package/configure/package.json +12 -10
- package/controller/CHANGELOG.md +52 -0
- package/controller/lib/__tests__/index.test.js +1676 -0
- package/controller/lib/defaults.js +3 -5
- package/controller/lib/defaults.js.map +1 -1
- package/controller/lib/index.js +162 -231
- package/controller/lib/index.js.map +1 -1
- package/controller/package.json +2 -2
- package/docs/demo/pie.manifest.json +11 -0
- package/lib/__tests__/main.test.js +40 -0
- package/lib/index.js +53 -100
- package/lib/index.js.map +1 -1
- package/lib/main.js +146 -209
- package/lib/main.js.map +1 -1
- package/package.json +12 -10
- package/LICENSE.md +0 -5
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,72 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [10.3.3](https://github.com/pie-framework/pie-elements/compare/@pie-element/charting@10.3.2...@pie-element/charting@10.3.3) (2025-11-27)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
* bump libs PD-5274, PD-5211, PD-5248 ([7610b25](https://github.com/pie-framework/pie-elements/commit/7610b25423956b6492f33322513b3430051fca77))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
## [10.3.2](https://github.com/pie-framework/pie-elements/compare/@pie-element/charting@10.3.1...@pie-element/charting@10.3.2) (2025-10-22)
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
### Bug Fixes
|
|
21
|
+
|
|
22
|
+
* bump libs PD-5265 ([184a978](https://github.com/pie-framework/pie-elements/commit/184a978f57a2a84dc6ba87c1eba0b92d5cdd9eae))
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
## [10.3.1](https://github.com/pie-framework/pie-elements/compare/@pie-element/charting@10.2.1...@pie-element/charting@10.3.1) (2025-10-16)
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
### Bug Fixes
|
|
32
|
+
|
|
33
|
+
* bump pie-lib versions and pslb module versions ([393d39f](https://github.com/pie-framework/pie-elements/commit/393d39fb850ad055568f4d20464213e9043f208f))
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
# [10.3.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/charting@10.2.0...@pie-element/charting@10.3.0) (2025-10-15)
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
### Bug Fixes
|
|
43
|
+
|
|
44
|
+
* bump libs ([2616ab2](https://github.com/pie-framework/pie-elements/commit/2616ab24f776f4df02302f5855c381ee52527665))
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
## [10.2.1](https://github.com/pie-framework/pie-elements/compare/@pie-element/charting@10.2.0...@pie-element/charting@10.2.1) (2025-10-14)
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
### Bug Fixes
|
|
54
|
+
|
|
55
|
+
* bump libs ([2616ab2](https://github.com/pie-framework/pie-elements/commit/2616ab24f776f4df02302f5855c381ee52527665))
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
# [10.2.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/charting@10.0.0...@pie-element/charting@10.2.0) (2025-10-10)
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
### Features
|
|
65
|
+
|
|
66
|
+
* update libs PD-5208, PD-5211, PD-5199, PD-5218, PD-5217 ([da327fa](https://github.com/pie-framework/pie-elements/commit/da327fa501f6e9eff1c0b30b5ef092426a91f78b))
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
|
|
6
72
|
# [10.1.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/charting@9.0.0...@pie-element/charting@10.1.0) (2025-10-07)
|
|
7
73
|
|
|
8
74
|
**Note:** Version bump only for package @pie-element/charting
|
package/configure/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,72 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [9.3.3](https://github.com/pie-framework/pie-elements/compare/@pie-element/charting-configure@9.3.2...@pie-element/charting-configure@9.3.3) (2025-11-27)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
* bump libs PD-5274, PD-5211, PD-5248 ([7610b25](https://github.com/pie-framework/pie-elements/commit/7610b25423956b6492f33322513b3430051fca77))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
## [9.3.2](https://github.com/pie-framework/pie-elements/compare/@pie-element/charting-configure@9.3.1...@pie-element/charting-configure@9.3.2) (2025-10-22)
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
### Bug Fixes
|
|
21
|
+
|
|
22
|
+
* bump libs PD-5265 ([184a978](https://github.com/pie-framework/pie-elements/commit/184a978f57a2a84dc6ba87c1eba0b92d5cdd9eae))
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
## [9.3.1](https://github.com/pie-framework/pie-elements/compare/@pie-element/charting-configure@9.2.1...@pie-element/charting-configure@9.3.1) (2025-10-16)
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
### Bug Fixes
|
|
32
|
+
|
|
33
|
+
* bump pie-lib versions and pslb module versions ([393d39f](https://github.com/pie-framework/pie-elements/commit/393d39fb850ad055568f4d20464213e9043f208f))
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
# [9.3.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/charting-configure@9.2.0...@pie-element/charting-configure@9.3.0) (2025-10-15)
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
### Bug Fixes
|
|
43
|
+
|
|
44
|
+
* bump libs ([2616ab2](https://github.com/pie-framework/pie-elements/commit/2616ab24f776f4df02302f5855c381ee52527665))
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
## [9.2.1](https://github.com/pie-framework/pie-elements/compare/@pie-element/charting-configure@9.2.0...@pie-element/charting-configure@9.2.1) (2025-10-14)
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
### Bug Fixes
|
|
54
|
+
|
|
55
|
+
* bump libs ([2616ab2](https://github.com/pie-framework/pie-elements/commit/2616ab24f776f4df02302f5855c381ee52527665))
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
# [9.2.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/charting-configure@9.0.1...@pie-element/charting-configure@9.2.0) (2025-10-10)
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
### Features
|
|
65
|
+
|
|
66
|
+
* update libs PD-5208, PD-5211, PD-5199, PD-5218, PD-5217 ([da327fa](https://github.com/pie-framework/pie-elements/commit/da327fa501f6e9eff1c0b30b5ef092426a91f78b))
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
|
|
6
72
|
# [9.1.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/charting-configure@9.0.0...@pie-element/charting-configure@9.1.0) (2025-10-07)
|
|
7
73
|
|
|
8
74
|
**Note:** Version bump only for package @pie-element/charting-configure
|
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var React = _interopRequireWildcard(require("react"));
|
|
5
|
+
var _enzyme = require("enzyme");
|
|
6
|
+
var _configure = require("../configure");
|
|
7
|
+
var _chartingConfig = require("../charting-config");
|
|
8
|
+
var _correctResponse = require("../correct-response");
|
|
9
|
+
var _defaults = _interopRequireDefault(require("../defaults"));
|
|
10
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (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 (const 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); }
|
|
11
|
+
jest.mock('@pie-lib/config-ui', () => ({
|
|
12
|
+
InputContainer: props => /*#__PURE__*/React.createElement("div", null, props.children),
|
|
13
|
+
InputCheckbox: props => /*#__PURE__*/React.createElement("div", null, props.children),
|
|
14
|
+
FeedbackConfig: props => /*#__PURE__*/React.createElement("div", null, props.children),
|
|
15
|
+
layout: {
|
|
16
|
+
ConfigLayout: props => /*#__PURE__*/React.createElement("div", null, props.children)
|
|
17
|
+
},
|
|
18
|
+
settings: {
|
|
19
|
+
Panel: props => /*#__PURE__*/React.createElement("div", {
|
|
20
|
+
onChange: props.onChange
|
|
21
|
+
}),
|
|
22
|
+
toggle: jest.fn(),
|
|
23
|
+
radio: jest.fn(),
|
|
24
|
+
numberFields: jest.fn()
|
|
25
|
+
}
|
|
26
|
+
}));
|
|
27
|
+
jest.mock('@pie-lib/charting', () => ({
|
|
28
|
+
Chart: () => /*#__PURE__*/React.createElement("div", null),
|
|
29
|
+
chartTypes: {
|
|
30
|
+
Bar: () => ({
|
|
31
|
+
Component: () => /*#__PURE__*/React.createElement("div", null),
|
|
32
|
+
type: 'bar'
|
|
33
|
+
}),
|
|
34
|
+
Histogram: () => ({
|
|
35
|
+
Component: () => /*#__PURE__*/React.createElement("div", null),
|
|
36
|
+
type: 'histogram'
|
|
37
|
+
}),
|
|
38
|
+
LineDot: () => ({
|
|
39
|
+
Component: () => /*#__PURE__*/React.createElement("div", null),
|
|
40
|
+
type: 'lineDot'
|
|
41
|
+
}),
|
|
42
|
+
LineCross: () => ({
|
|
43
|
+
Component: () => /*#__PURE__*/React.createElement("div", null),
|
|
44
|
+
type: 'lineCross'
|
|
45
|
+
}),
|
|
46
|
+
DotPlot: () => ({
|
|
47
|
+
Component: () => /*#__PURE__*/React.createElement("div", null),
|
|
48
|
+
type: 'dotPlot'
|
|
49
|
+
}),
|
|
50
|
+
LinePlot: () => ({
|
|
51
|
+
Component: () => /*#__PURE__*/React.createElement("div", null),
|
|
52
|
+
type: 'linePlot'
|
|
53
|
+
})
|
|
54
|
+
}
|
|
55
|
+
}));
|
|
56
|
+
describe('Configure', () => {
|
|
57
|
+
let wrapper;
|
|
58
|
+
beforeEach(() => {
|
|
59
|
+
wrapper = props => {
|
|
60
|
+
const configureProps = {
|
|
61
|
+
..._defaults.default,
|
|
62
|
+
...props
|
|
63
|
+
};
|
|
64
|
+
return (0, _enzyme.shallow)(/*#__PURE__*/React.createElement(_configure.Configure, configureProps));
|
|
65
|
+
};
|
|
66
|
+
});
|
|
67
|
+
describe('renders', () => {
|
|
68
|
+
it('snapshot', () => {
|
|
69
|
+
expect(wrapper()).toMatchSnapshot();
|
|
70
|
+
});
|
|
71
|
+
});
|
|
72
|
+
describe('logic', () => {
|
|
73
|
+
it('updates rationale', () => {
|
|
74
|
+
const onModelChanged = jest.fn();
|
|
75
|
+
const component = wrapper({
|
|
76
|
+
onModelChanged
|
|
77
|
+
});
|
|
78
|
+
component.instance().onRationaleChange('New Rationale');
|
|
79
|
+
expect(onModelChanged).toBeCalledWith(expect.objectContaining({
|
|
80
|
+
..._defaults.default.model,
|
|
81
|
+
rationale: 'New Rationale'
|
|
82
|
+
}));
|
|
83
|
+
});
|
|
84
|
+
it('updates prompt', () => {
|
|
85
|
+
const onModelChanged = jest.fn();
|
|
86
|
+
const component = wrapper({
|
|
87
|
+
onModelChanged
|
|
88
|
+
});
|
|
89
|
+
component.instance().onPromptChange('New Prompt');
|
|
90
|
+
expect(onModelChanged).toBeCalledWith(expect.objectContaining({
|
|
91
|
+
..._defaults.default.model,
|
|
92
|
+
prompt: 'New Prompt'
|
|
93
|
+
}));
|
|
94
|
+
});
|
|
95
|
+
it('updates teacher instructions', () => {
|
|
96
|
+
const onModelChanged = jest.fn();
|
|
97
|
+
const component = wrapper({
|
|
98
|
+
onModelChanged
|
|
99
|
+
});
|
|
100
|
+
component.instance().onTeacherInstructionsChange('New Teacher Instructions');
|
|
101
|
+
expect(onModelChanged).toBeCalledWith(expect.objectContaining({
|
|
102
|
+
..._defaults.default.model,
|
|
103
|
+
teacherInstructions: 'New Teacher Instructions'
|
|
104
|
+
}));
|
|
105
|
+
});
|
|
106
|
+
it('updates chart type', () => {
|
|
107
|
+
const onModelChanged = jest.fn();
|
|
108
|
+
const component = wrapper({
|
|
109
|
+
onModelChanged
|
|
110
|
+
});
|
|
111
|
+
component.instance().onChartTypeChange('histogram');
|
|
112
|
+
expect(onModelChanged).toBeCalledWith(expect.objectContaining({
|
|
113
|
+
..._defaults.default.model,
|
|
114
|
+
chartType: 'histogram'
|
|
115
|
+
}));
|
|
116
|
+
});
|
|
117
|
+
});
|
|
118
|
+
});
|
|
119
|
+
describe('CorrectResponse', () => {
|
|
120
|
+
let wrapper;
|
|
121
|
+
let props;
|
|
122
|
+
const onChange = jest.fn();
|
|
123
|
+
beforeEach(() => {
|
|
124
|
+
props = {
|
|
125
|
+
classes: {},
|
|
126
|
+
model: _defaults.default.model,
|
|
127
|
+
onChange,
|
|
128
|
+
tools: []
|
|
129
|
+
};
|
|
130
|
+
wrapper = newProps => {
|
|
131
|
+
const configureProps = {
|
|
132
|
+
...props,
|
|
133
|
+
newProps
|
|
134
|
+
};
|
|
135
|
+
return (0, _enzyme.shallow)(/*#__PURE__*/React.createElement(_correctResponse.CorrectResponse, configureProps));
|
|
136
|
+
};
|
|
137
|
+
});
|
|
138
|
+
describe('renders', () => {
|
|
139
|
+
it('snapshot', () => {
|
|
140
|
+
expect(wrapper()).toMatchSnapshot();
|
|
141
|
+
});
|
|
142
|
+
});
|
|
143
|
+
describe('logic', () => {
|
|
144
|
+
let w;
|
|
145
|
+
beforeEach(() => {
|
|
146
|
+
w = wrapper();
|
|
147
|
+
});
|
|
148
|
+
it('changes correctAnswer data', () => {
|
|
149
|
+
w.instance().changeData([]);
|
|
150
|
+
expect(onChange).toHaveBeenCalledWith(expect.objectContaining({
|
|
151
|
+
correctAnswer: expect.objectContaining({
|
|
152
|
+
data: []
|
|
153
|
+
})
|
|
154
|
+
}));
|
|
155
|
+
const wrap = wrapper({
|
|
156
|
+
..._defaults.default,
|
|
157
|
+
correctAnswer: {
|
|
158
|
+
data: []
|
|
159
|
+
}
|
|
160
|
+
});
|
|
161
|
+
wrap.instance().changeData([{
|
|
162
|
+
value: 2,
|
|
163
|
+
label: 'A'
|
|
164
|
+
}]);
|
|
165
|
+
expect(onChange).toHaveBeenCalledWith(expect.objectContaining({
|
|
166
|
+
correctAnswer: expect.objectContaining({
|
|
167
|
+
data: [{
|
|
168
|
+
value: 2,
|
|
169
|
+
label: 'A'
|
|
170
|
+
}]
|
|
171
|
+
})
|
|
172
|
+
}));
|
|
173
|
+
});
|
|
174
|
+
});
|
|
175
|
+
});
|
|
176
|
+
describe('ChartingConfig', () => {
|
|
177
|
+
let wrapper;
|
|
178
|
+
let props;
|
|
179
|
+
const onChange = jest.fn();
|
|
180
|
+
beforeEach(() => {
|
|
181
|
+
props = {
|
|
182
|
+
classes: {},
|
|
183
|
+
model: _defaults.default.model,
|
|
184
|
+
onChange,
|
|
185
|
+
tools: []
|
|
186
|
+
};
|
|
187
|
+
wrapper = newProps => {
|
|
188
|
+
const configureProps = {
|
|
189
|
+
...props,
|
|
190
|
+
newProps
|
|
191
|
+
};
|
|
192
|
+
return (0, _enzyme.shallow)(/*#__PURE__*/React.createElement(_chartingConfig.ChartingConfig, configureProps));
|
|
193
|
+
};
|
|
194
|
+
});
|
|
195
|
+
describe('renders', () => {
|
|
196
|
+
it('snapshot', () => {
|
|
197
|
+
expect(wrapper()).toMatchSnapshot();
|
|
198
|
+
});
|
|
199
|
+
});
|
|
200
|
+
describe('logic', () => {
|
|
201
|
+
it('changeData calls onChange', () => {
|
|
202
|
+
wrapper().instance().changeData([{
|
|
203
|
+
value: 2,
|
|
204
|
+
label: 'A'
|
|
205
|
+
}]);
|
|
206
|
+
expect(onChange).toBeCalledWith(expect.objectContaining({
|
|
207
|
+
data: [{
|
|
208
|
+
value: 2,
|
|
209
|
+
label: 'A'
|
|
210
|
+
}]
|
|
211
|
+
}));
|
|
212
|
+
});
|
|
213
|
+
});
|
|
214
|
+
});
|
|
215
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwicmVxdWlyZSIsIl9lbnp5bWUiLCJfY29uZmlndXJlIiwiX2NoYXJ0aW5nQ29uZmlnIiwiX2NvcnJlY3RSZXNwb25zZSIsIl9kZWZhdWx0cyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJlIiwidCIsIldlYWtNYXAiLCJyIiwibiIsIl9fZXNNb2R1bGUiLCJvIiwiaSIsImYiLCJfX3Byb3RvX18iLCJkZWZhdWx0IiwiaGFzIiwiZ2V0Iiwic2V0IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJqZXN0IiwibW9jayIsIklucHV0Q29udGFpbmVyIiwicHJvcHMiLCJjcmVhdGVFbGVtZW50IiwiY2hpbGRyZW4iLCJJbnB1dENoZWNrYm94IiwiRmVlZGJhY2tDb25maWciLCJsYXlvdXQiLCJDb25maWdMYXlvdXQiLCJzZXR0aW5ncyIsIlBhbmVsIiwib25DaGFuZ2UiLCJ0b2dnbGUiLCJmbiIsInJhZGlvIiwibnVtYmVyRmllbGRzIiwiQ2hhcnQiLCJjaGFydFR5cGVzIiwiQmFyIiwiQ29tcG9uZW50IiwidHlwZSIsIkhpc3RvZ3JhbSIsIkxpbmVEb3QiLCJMaW5lQ3Jvc3MiLCJEb3RQbG90IiwiTGluZVBsb3QiLCJkZXNjcmliZSIsIndyYXBwZXIiLCJiZWZvcmVFYWNoIiwiY29uZmlndXJlUHJvcHMiLCJkZWZhdWx0VmFsdWVzIiwic2hhbGxvdyIsIkNvbmZpZ3VyZSIsIml0IiwiZXhwZWN0IiwidG9NYXRjaFNuYXBzaG90Iiwib25Nb2RlbENoYW5nZWQiLCJjb21wb25lbnQiLCJpbnN0YW5jZSIsIm9uUmF0aW9uYWxlQ2hhbmdlIiwidG9CZUNhbGxlZFdpdGgiLCJvYmplY3RDb250YWluaW5nIiwibW9kZWwiLCJyYXRpb25hbGUiLCJvblByb21wdENoYW5nZSIsInByb21wdCIsIm9uVGVhY2hlckluc3RydWN0aW9uc0NoYW5nZSIsInRlYWNoZXJJbnN0cnVjdGlvbnMiLCJvbkNoYXJ0VHlwZUNoYW5nZSIsImNoYXJ0VHlwZSIsImNsYXNzZXMiLCJ0b29scyIsIm5ld1Byb3BzIiwiQ29ycmVjdFJlc3BvbnNlIiwidyIsImNoYW5nZURhdGEiLCJ0b0hhdmVCZWVuQ2FsbGVkV2l0aCIsImNvcnJlY3RBbnN3ZXIiLCJkYXRhIiwid3JhcCIsInZhbHVlIiwibGFiZWwiLCJDaGFydGluZ0NvbmZpZyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9fX3Rlc3RzX18vY29uZmlndXJlLnRlc3QuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgc2hhbGxvdyB9IGZyb20gJ2VuenltZSc7XG5cbmltcG9ydCB7IENvbmZpZ3VyZSB9IGZyb20gJy4uL2NvbmZpZ3VyZSc7XG5pbXBvcnQgeyBDaGFydGluZ0NvbmZpZyB9IGZyb20gJy4uL2NoYXJ0aW5nLWNvbmZpZyc7XG5pbXBvcnQgeyBDb3JyZWN0UmVzcG9uc2UgfSBmcm9tICcuLi9jb3JyZWN0LXJlc3BvbnNlJztcbmltcG9ydCBkZWZhdWx0VmFsdWVzIGZyb20gJy4uL2RlZmF1bHRzJztcblxuamVzdC5tb2NrKCdAcGllLWxpYi9jb25maWctdWknLCAoKSA9PiAoe1xuICBJbnB1dENvbnRhaW5lcjogKHByb3BzKSA9PiA8ZGl2Pntwcm9wcy5jaGlsZHJlbn08L2Rpdj4sXG4gIElucHV0Q2hlY2tib3g6IChwcm9wcykgPT4gPGRpdj57cHJvcHMuY2hpbGRyZW59PC9kaXY+LFxuICBGZWVkYmFja0NvbmZpZzogKHByb3BzKSA9PiA8ZGl2Pntwcm9wcy5jaGlsZHJlbn08L2Rpdj4sXG4gIGxheW91dDoge1xuICAgIENvbmZpZ0xheW91dDogKHByb3BzKSA9PiA8ZGl2Pntwcm9wcy5jaGlsZHJlbn08L2Rpdj4sXG4gIH0sXG4gIHNldHRpbmdzOiB7XG4gICAgUGFuZWw6IChwcm9wcykgPT4gPGRpdiBvbkNoYW5nZT17cHJvcHMub25DaGFuZ2V9IC8+LFxuICAgIHRvZ2dsZTogamVzdC5mbigpLFxuICAgIHJhZGlvOiBqZXN0LmZuKCksXG4gICAgbnVtYmVyRmllbGRzOiBqZXN0LmZuKCksXG4gIH0sXG59KSk7XG5cbmplc3QubW9jaygnQHBpZS1saWIvY2hhcnRpbmcnLCAoKSA9PiAoe1xuICBDaGFydDogKCkgPT4gPGRpdiAvPixcbiAgY2hhcnRUeXBlczoge1xuICAgIEJhcjogKCkgPT4gKHtcbiAgICAgIENvbXBvbmVudDogKCkgPT4gPGRpdiAvPixcbiAgICAgIHR5cGU6ICdiYXInLFxuICAgIH0pLFxuICAgIEhpc3RvZ3JhbTogKCkgPT4gKHtcbiAgICAgIENvbXBvbmVudDogKCkgPT4gPGRpdiAvPixcbiAgICAgIHR5cGU6ICdoaXN0b2dyYW0nLFxuICAgIH0pLFxuICAgIExpbmVEb3Q6ICgpID0+ICh7XG4gICAgICBDb21wb25lbnQ6ICgpID0+IDxkaXYgLz4sXG4gICAgICB0eXBlOiAnbGluZURvdCcsXG4gICAgfSksXG4gICAgTGluZUNyb3NzOiAoKSA9PiAoe1xuICAgICAgQ29tcG9uZW50OiAoKSA9PiA8ZGl2IC8+LFxuICAgICAgdHlwZTogJ2xpbmVDcm9zcycsXG4gICAgfSksXG4gICAgRG90UGxvdDogKCkgPT4gKHtcbiAgICAgIENvbXBvbmVudDogKCkgPT4gPGRpdiAvPixcbiAgICAgIHR5cGU6ICdkb3RQbG90JyxcbiAgICB9KSxcbiAgICBMaW5lUGxvdDogKCkgPT4gKHtcbiAgICAgIENvbXBvbmVudDogKCkgPT4gPGRpdiAvPixcbiAgICAgIHR5cGU6ICdsaW5lUGxvdCcsXG4gICAgfSksXG4gIH0sXG59KSk7XG5cbmRlc2NyaWJlKCdDb25maWd1cmUnLCAoKSA9PiB7XG4gIGxldCB3cmFwcGVyO1xuXG4gIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgIHdyYXBwZXIgPSAocHJvcHMpID0+IHtcbiAgICAgIGNvbnN0IGNvbmZpZ3VyZVByb3BzID0geyAuLi5kZWZhdWx0VmFsdWVzLCAuLi5wcm9wcyB9O1xuXG4gICAgICByZXR1cm4gc2hhbGxvdyg8Q29uZmlndXJlIHsuLi5jb25maWd1cmVQcm9wc30gLz4pO1xuICAgIH07XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdyZW5kZXJzJywgKCkgPT4ge1xuICAgIGl0KCdzbmFwc2hvdCcsICgpID0+IHtcbiAgICAgIGV4cGVjdCh3cmFwcGVyKCkpLnRvTWF0Y2hTbmFwc2hvdCgpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnbG9naWMnLCAoKSA9PiB7XG4gICAgaXQoJ3VwZGF0ZXMgcmF0aW9uYWxlJywgKCkgPT4ge1xuICAgICAgY29uc3Qgb25Nb2RlbENoYW5nZWQgPSBqZXN0LmZuKCk7XG4gICAgICBjb25zdCBjb21wb25lbnQgPSB3cmFwcGVyKHsgb25Nb2RlbENoYW5nZWQgfSk7XG5cbiAgICAgIGNvbXBvbmVudC5pbnN0YW5jZSgpLm9uUmF0aW9uYWxlQ2hhbmdlKCdOZXcgUmF0aW9uYWxlJyk7XG5cbiAgICAgIGV4cGVjdChvbk1vZGVsQ2hhbmdlZCkudG9CZUNhbGxlZFdpdGgoXG4gICAgICAgIGV4cGVjdC5vYmplY3RDb250YWluaW5nKHtcbiAgICAgICAgICAuLi5kZWZhdWx0VmFsdWVzLm1vZGVsLFxuICAgICAgICAgIHJhdGlvbmFsZTogJ05ldyBSYXRpb25hbGUnLFxuICAgICAgICB9KSxcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdCgndXBkYXRlcyBwcm9tcHQnLCAoKSA9PiB7XG4gICAgICBjb25zdCBvbk1vZGVsQ2hhbmdlZCA9IGplc3QuZm4oKTtcbiAgICAgIGNvbnN0IGNvbXBvbmVudCA9IHdyYXBwZXIoeyBvbk1vZGVsQ2hhbmdlZCB9KTtcblxuICAgICAgY29tcG9uZW50Lmluc3RhbmNlKCkub25Qcm9tcHRDaGFuZ2UoJ05ldyBQcm9tcHQnKTtcblxuICAgICAgZXhwZWN0KG9uTW9kZWxDaGFuZ2VkKS50b0JlQ2FsbGVkV2l0aChcbiAgICAgICAgZXhwZWN0Lm9iamVjdENvbnRhaW5pbmcoe1xuICAgICAgICAgIC4uLmRlZmF1bHRWYWx1ZXMubW9kZWwsXG4gICAgICAgICAgcHJvbXB0OiAnTmV3IFByb21wdCcsXG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGl0KCd1cGRhdGVzIHRlYWNoZXIgaW5zdHJ1Y3Rpb25zJywgKCkgPT4ge1xuICAgICAgY29uc3Qgb25Nb2RlbENoYW5nZWQgPSBqZXN0LmZuKCk7XG4gICAgICBjb25zdCBjb21wb25lbnQgPSB3cmFwcGVyKHsgb25Nb2RlbENoYW5nZWQgfSk7XG5cbiAgICAgIGNvbXBvbmVudC5pbnN0YW5jZSgpLm9uVGVhY2hlckluc3RydWN0aW9uc0NoYW5nZSgnTmV3IFRlYWNoZXIgSW5zdHJ1Y3Rpb25zJyk7XG5cbiAgICAgIGV4cGVjdChvbk1vZGVsQ2hhbmdlZCkudG9CZUNhbGxlZFdpdGgoXG4gICAgICAgIGV4cGVjdC5vYmplY3RDb250YWluaW5nKHtcbiAgICAgICAgICAuLi5kZWZhdWx0VmFsdWVzLm1vZGVsLFxuICAgICAgICAgIHRlYWNoZXJJbnN0cnVjdGlvbnM6ICdOZXcgVGVhY2hlciBJbnN0cnVjdGlvbnMnLFxuICAgICAgICB9KSxcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdCgndXBkYXRlcyBjaGFydCB0eXBlJywgKCkgPT4ge1xuICAgICAgY29uc3Qgb25Nb2RlbENoYW5nZWQgPSBqZXN0LmZuKCk7XG4gICAgICBjb25zdCBjb21wb25lbnQgPSB3cmFwcGVyKHsgb25Nb2RlbENoYW5nZWQgfSk7XG5cbiAgICAgIGNvbXBvbmVudC5pbnN0YW5jZSgpLm9uQ2hhcnRUeXBlQ2hhbmdlKCdoaXN0b2dyYW0nKTtcblxuICAgICAgZXhwZWN0KG9uTW9kZWxDaGFuZ2VkKS50b0JlQ2FsbGVkV2l0aChcbiAgICAgICAgZXhwZWN0Lm9iamVjdENvbnRhaW5pbmcoe1xuICAgICAgICAgIC4uLmRlZmF1bHRWYWx1ZXMubW9kZWwsXG4gICAgICAgICAgY2hhcnRUeXBlOiAnaGlzdG9ncmFtJyxcbiAgICAgICAgfSksXG4gICAgICApO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuXG5kZXNjcmliZSgnQ29ycmVjdFJlc3BvbnNlJywgKCkgPT4ge1xuICBsZXQgd3JhcHBlcjtcbiAgbGV0IHByb3BzO1xuICBjb25zdCBvbkNoYW5nZSA9IGplc3QuZm4oKTtcblxuICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICBwcm9wcyA9IHtcbiAgICAgIGNsYXNzZXM6IHt9LFxuICAgICAgbW9kZWw6IGRlZmF1bHRWYWx1ZXMubW9kZWwsXG4gICAgICBvbkNoYW5nZSxcbiAgICAgIHRvb2xzOiBbXSxcbiAgICB9O1xuXG4gICAgd3JhcHBlciA9IChuZXdQcm9wcykgPT4ge1xuICAgICAgY29uc3QgY29uZmlndXJlUHJvcHMgPSB7IC4uLnByb3BzLCBuZXdQcm9wcyB9O1xuXG4gICAgICByZXR1cm4gc2hhbGxvdyg8Q29ycmVjdFJlc3BvbnNlIHsuLi5jb25maWd1cmVQcm9wc30gLz4pO1xuICAgIH07XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdyZW5kZXJzJywgKCkgPT4ge1xuICAgIGl0KCdzbmFwc2hvdCcsICgpID0+IHtcbiAgICAgIGV4cGVjdCh3cmFwcGVyKCkpLnRvTWF0Y2hTbmFwc2hvdCgpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnbG9naWMnLCAoKSA9PiB7XG4gICAgbGV0IHc7XG5cbiAgICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICAgIHcgPSB3cmFwcGVyKCk7XG4gICAgfSk7XG5cbiAgICBpdCgnY2hhbmdlcyBjb3JyZWN0QW5zd2VyIGRhdGEnLCAoKSA9PiB7XG4gICAgICB3Lmluc3RhbmNlKCkuY2hhbmdlRGF0YShbXSk7XG5cbiAgICAgIGV4cGVjdChvbkNoYW5nZSkudG9IYXZlQmVlbkNhbGxlZFdpdGgoXG4gICAgICAgIGV4cGVjdC5vYmplY3RDb250YWluaW5nKHtcbiAgICAgICAgICBjb3JyZWN0QW5zd2VyOiBleHBlY3Qub2JqZWN0Q29udGFpbmluZyh7XG4gICAgICAgICAgICBkYXRhOiBbXSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgfSksXG4gICAgICApO1xuXG4gICAgICBjb25zdCB3cmFwID0gd3JhcHBlcih7XG4gICAgICAgIC4uLmRlZmF1bHRWYWx1ZXMsXG4gICAgICAgIGNvcnJlY3RBbnN3ZXI6IHtcbiAgICAgICAgICBkYXRhOiBbXSxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgICAgd3JhcC5pbnN0YW5jZSgpLmNoYW5nZURhdGEoW3sgdmFsdWU6IDIsIGxhYmVsOiAnQScgfV0pO1xuXG4gICAgICBleHBlY3Qob25DaGFuZ2UpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKFxuICAgICAgICBleHBlY3Qub2JqZWN0Q29udGFpbmluZyh7XG4gICAgICAgICAgY29ycmVjdEFuc3dlcjogZXhwZWN0Lm9iamVjdENvbnRhaW5pbmcoe1xuICAgICAgICAgICAgZGF0YTogW3sgdmFsdWU6IDIsIGxhYmVsOiAnQScgfV0sXG4gICAgICAgICAgfSksXG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcblxuZGVzY3JpYmUoJ0NoYXJ0aW5nQ29uZmlnJywgKCkgPT4ge1xuICBsZXQgd3JhcHBlcjtcbiAgbGV0IHByb3BzO1xuICBjb25zdCBvbkNoYW5nZSA9IGplc3QuZm4oKTtcblxuICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICBwcm9wcyA9IHtcbiAgICAgIGNsYXNzZXM6IHt9LFxuICAgICAgbW9kZWw6IGRlZmF1bHRWYWx1ZXMubW9kZWwsXG4gICAgICBvbkNoYW5nZSxcbiAgICAgIHRvb2xzOiBbXSxcbiAgICB9O1xuXG4gICAgd3JhcHBlciA9IChuZXdQcm9wcykgPT4ge1xuICAgICAgY29uc3QgY29uZmlndXJlUHJvcHMgPSB7IC4uLnByb3BzLCBuZXdQcm9wcyB9O1xuXG4gICAgICByZXR1cm4gc2hhbGxvdyg8Q2hhcnRpbmdDb25maWcgey4uLmNvbmZpZ3VyZVByb3BzfSAvPik7XG4gICAgfTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3JlbmRlcnMnLCAoKSA9PiB7XG4gICAgaXQoJ3NuYXBzaG90JywgKCkgPT4ge1xuICAgICAgZXhwZWN0KHdyYXBwZXIoKSkudG9NYXRjaFNuYXBzaG90KCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdsb2dpYycsICgpID0+IHtcbiAgICBpdCgnY2hhbmdlRGF0YSBjYWxscyBvbkNoYW5nZScsICgpID0+IHtcbiAgICAgIHdyYXBwZXIoKVxuICAgICAgICAuaW5zdGFuY2UoKVxuICAgICAgICAuY2hhbmdlRGF0YShbeyB2YWx1ZTogMiwgbGFiZWw6ICdBJyB9XSk7XG5cbiAgICAgIGV4cGVjdChvbkNoYW5nZSkudG9CZUNhbGxlZFdpdGgoXG4gICAgICAgIGV4cGVjdC5vYmplY3RDb250YWluaW5nKHtcbiAgICAgICAgICBkYXRhOiBbeyB2YWx1ZTogMiwgbGFiZWw6ICdBJyB9XSxcbiAgICAgICAgfSksXG4gICAgICApO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl0sIm1hcHBpbmdzIjoiOzs7QUFBQSxJQUFBQSxLQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxPQUFBLEdBQUFELE9BQUE7QUFFQSxJQUFBRSxVQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxlQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxnQkFBQSxHQUFBSixPQUFBO0FBQ0EsSUFBQUssU0FBQSxHQUFBQyxzQkFBQSxDQUFBTixPQUFBO0FBQXdDLFNBQUFELHdCQUFBUSxDQUFBLEVBQUFDLENBQUEsNkJBQUFDLE9BQUEsTUFBQUMsQ0FBQSxPQUFBRCxPQUFBLElBQUFFLENBQUEsT0FBQUYsT0FBQSxZQUFBVix1QkFBQSxZQUFBQSxDQUFBUSxDQUFBLEVBQUFDLENBQUEsU0FBQUEsQ0FBQSxJQUFBRCxDQUFBLElBQUFBLENBQUEsQ0FBQUssVUFBQSxTQUFBTCxDQUFBLE1BQUFNLENBQUEsRUFBQUMsQ0FBQSxFQUFBQyxDQUFBLEtBQUFDLFNBQUEsUUFBQUMsT0FBQSxFQUFBVixDQUFBLGlCQUFBQSxDQUFBLHVC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
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _correctResponse = require("../correct-response");
|
|
5
|
+
var _cloneDeep = _interopRequireDefault(require("lodash/cloneDeep"));
|
|
6
|
+
describe('CorrectResponse - getUpdatedCategories function', () => {
|
|
7
|
+
const prevProps = {
|
|
8
|
+
model: {
|
|
9
|
+
data: [{
|
|
10
|
+
label: 'A',
|
|
11
|
+
value: 0,
|
|
12
|
+
interactive: true,
|
|
13
|
+
editable: true
|
|
14
|
+
}, {
|
|
15
|
+
label: 'B',
|
|
16
|
+
value: 1,
|
|
17
|
+
interactive: true,
|
|
18
|
+
editable: false
|
|
19
|
+
}, {
|
|
20
|
+
label: 'C',
|
|
21
|
+
value: 2,
|
|
22
|
+
interactive: true,
|
|
23
|
+
editable: false
|
|
24
|
+
}],
|
|
25
|
+
correctAnswer: {
|
|
26
|
+
data: [{
|
|
27
|
+
label: 'A',
|
|
28
|
+
value: 1
|
|
29
|
+
}, {
|
|
30
|
+
label: 'B',
|
|
31
|
+
value: 1
|
|
32
|
+
}, {
|
|
33
|
+
label: 'C',
|
|
34
|
+
value: 1
|
|
35
|
+
}]
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
const prevState = {
|
|
40
|
+
categories: [{
|
|
41
|
+
label: 'A',
|
|
42
|
+
value: 0,
|
|
43
|
+
interactive: true,
|
|
44
|
+
editable: true
|
|
45
|
+
}, {
|
|
46
|
+
label: 'B',
|
|
47
|
+
value: 1,
|
|
48
|
+
interactive: true,
|
|
49
|
+
editable: false
|
|
50
|
+
}, {
|
|
51
|
+
label: 'C',
|
|
52
|
+
value: 2,
|
|
53
|
+
interactive: true,
|
|
54
|
+
editable: false
|
|
55
|
+
}]
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
// Test when a new category is added to Define Chart
|
|
59
|
+
it('should handle category addition correctly', () => {
|
|
60
|
+
const nextProps = (0, _cloneDeep.default)(prevProps);
|
|
61
|
+
nextProps.model.data.push({
|
|
62
|
+
label: 'D',
|
|
63
|
+
value: 2,
|
|
64
|
+
interactive: true,
|
|
65
|
+
editable: true
|
|
66
|
+
});
|
|
67
|
+
const updatedCategories = (0, _correctResponse.getUpdatedCategories)(nextProps, prevProps, prevState);
|
|
68
|
+
expect(updatedCategories).toEqual([{
|
|
69
|
+
label: 'A',
|
|
70
|
+
value: 1,
|
|
71
|
+
interactive: true,
|
|
72
|
+
editable: true,
|
|
73
|
+
deletable: false
|
|
74
|
+
}, {
|
|
75
|
+
label: 'B',
|
|
76
|
+
value: 1,
|
|
77
|
+
interactive: true,
|
|
78
|
+
editable: false,
|
|
79
|
+
deletable: false
|
|
80
|
+
}, {
|
|
81
|
+
label: 'C',
|
|
82
|
+
value: 1,
|
|
83
|
+
interactive: true,
|
|
84
|
+
editable: false,
|
|
85
|
+
deletable: false
|
|
86
|
+
}, {
|
|
87
|
+
label: 'D',
|
|
88
|
+
value: 2,
|
|
89
|
+
interactive: true,
|
|
90
|
+
editable: true,
|
|
91
|
+
deletable: false
|
|
92
|
+
}]);
|
|
93
|
+
});
|
|
94
|
+
|
|
95
|
+
// Test when a category is removed from Define Chart
|
|
96
|
+
it('should handle category removal correctly', () => {
|
|
97
|
+
const nextProps = {
|
|
98
|
+
model: {
|
|
99
|
+
data: [{
|
|
100
|
+
label: 'A',
|
|
101
|
+
value: 0,
|
|
102
|
+
interactive: true,
|
|
103
|
+
editable: true,
|
|
104
|
+
index: 0,
|
|
105
|
+
deletable: true
|
|
106
|
+
}, {
|
|
107
|
+
label: 'C',
|
|
108
|
+
value: 2,
|
|
109
|
+
interactive: true,
|
|
110
|
+
editable: false,
|
|
111
|
+
index: 2,
|
|
112
|
+
deletable: true
|
|
113
|
+
}]
|
|
114
|
+
}
|
|
115
|
+
};
|
|
116
|
+
const updatedCategories = (0, _correctResponse.getUpdatedCategories)(nextProps, prevProps, prevState);
|
|
117
|
+
expect(updatedCategories).toEqual([{
|
|
118
|
+
label: 'A',
|
|
119
|
+
value: 0,
|
|
120
|
+
interactive: true,
|
|
121
|
+
editable: true,
|
|
122
|
+
deletable: false
|
|
123
|
+
}, {
|
|
124
|
+
label: 'C',
|
|
125
|
+
value: 2,
|
|
126
|
+
interactive: true,
|
|
127
|
+
editable: false,
|
|
128
|
+
deletable: false
|
|
129
|
+
}]);
|
|
130
|
+
});
|
|
131
|
+
|
|
132
|
+
// Test when all categories are removed from Define Chart
|
|
133
|
+
it('should handle all category removal correctly', () => {
|
|
134
|
+
const nextProps = {
|
|
135
|
+
model: {
|
|
136
|
+
data: []
|
|
137
|
+
}
|
|
138
|
+
};
|
|
139
|
+
const prevState = {
|
|
140
|
+
"categories": [{
|
|
141
|
+
"label": "A",
|
|
142
|
+
"value": 0,
|
|
143
|
+
"editable": true,
|
|
144
|
+
"interactive": true
|
|
145
|
+
}]
|
|
146
|
+
};
|
|
147
|
+
const updatedCategories = (0, _correctResponse.getUpdatedCategories)(nextProps, prevProps, prevState);
|
|
148
|
+
expect(updatedCategories).toEqual([]);
|
|
149
|
+
});
|
|
150
|
+
});
|
|
151
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29ycmVjdFJlc3BvbnNlIiwicmVxdWlyZSIsIl9jbG9uZURlZXAiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiZGVzY3JpYmUiLCJwcmV2UHJvcHMiLCJtb2RlbCIsImRhdGEiLCJsYWJlbCIsInZhbHVlIiwiaW50ZXJhY3RpdmUiLCJlZGl0YWJsZSIsImNvcnJlY3RBbnN3ZXIiLCJwcmV2U3RhdGUiLCJjYXRlZ29yaWVzIiwiaXQiLCJuZXh0UHJvcHMiLCJjbG9uZURlZXAiLCJwdXNoIiwidXBkYXRlZENhdGVnb3JpZXMiLCJnZXRVcGRhdGVkQ2F0ZWdvcmllcyIsImV4cGVjdCIsInRvRXF1YWwiLCJkZWxldGFibGUiLCJpbmRleCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9fX3Rlc3RzX18vY29ycmVjdFJlc3BvbnNlLnRlc3QuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZ2V0VXBkYXRlZENhdGVnb3JpZXMgfSBmcm9tICcuLi9jb3JyZWN0LXJlc3BvbnNlJztcbmltcG9ydCBjbG9uZURlZXAgZnJvbSAnbG9kYXNoL2Nsb25lRGVlcCc7XG5cbmRlc2NyaWJlKCdDb3JyZWN0UmVzcG9uc2UgLSBnZXRVcGRhdGVkQ2F0ZWdvcmllcyBmdW5jdGlvbicsICgpID0+IHtcbiAgY29uc3QgcHJldlByb3BzID0ge1xuICAgIG1vZGVsOiB7XG4gICAgICBkYXRhOiBbXG4gICAgICAgIHsgbGFiZWw6ICdBJywgdmFsdWU6IDAsIGludGVyYWN0aXZlOiB0cnVlLCBlZGl0YWJsZTogdHJ1ZSB9LFxuICAgICAgICB7IGxhYmVsOiAnQicsIHZhbHVlOiAxLCBpbnRlcmFjdGl2ZTogdHJ1ZSwgZWRpdGFibGU6IGZhbHNlIH0sXG4gICAgICAgIHsgbGFiZWw6ICdDJywgdmFsdWU6IDIsIGludGVyYWN0aXZlOiB0cnVlLCBlZGl0YWJsZTogZmFsc2UgfSxcbiAgICAgIF0sXG4gICAgICBjb3JyZWN0QW5zd2VyOiB7XG4gICAgICAgIGRhdGE6IFtcbiAgICAgICAgICB7IGxhYmVsOiAnQScsIHZhbHVlOiAxIH0sXG4gICAgICAgICAgeyBsYWJlbDogJ0InLCB2YWx1ZTogMSB9LFxuICAgICAgICAgIHsgbGFiZWw6ICdDJywgdmFsdWU6IDEgfSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgfSxcbiAgfTtcblxuICBjb25zdCBwcmV2U3RhdGUgPSB7XG4gICAgY2F0ZWdvcmllczogW1xuICAgICAgeyBsYWJlbDogJ0EnLCB2YWx1ZTogMCwgaW50ZXJhY3RpdmU6IHRydWUsIGVkaXRhYmxlOiB0cnVlIH0sXG4gICAgICB7IGxhYmVsOiAnQicsIHZhbHVlOiAxLCBpbnRlcmFjdGl2ZTogdHJ1ZSwgZWRpdGFibGU6IGZhbHNlIH0sXG4gICAgICB7IGxhYmVsOiAnQycsIHZhbHVlOiAyLCBpbnRlcmFjdGl2ZTogdHJ1ZSwgZWRpdGFibGU6IGZhbHNlIH0sXG4gICAgXSxcbiAgfTtcblxuICAvLyBUZXN0IHdoZW4gYSBuZXcgY2F0ZWdvcnkgaXMgYWRkZWQgdG8gRGVmaW5lIENoYXJ0XG4gIGl0KCdzaG91bGQgaGFuZGxlIGNhdGVnb3J5IGFkZGl0aW9uIGNvcnJlY3RseScsICgpID0+IHtcbiAgICBjb25zdCBuZXh0UHJvcHMgPSBjbG9uZURlZXAocHJldlByb3BzKTtcbiAgICBuZXh0UHJvcHMubW9kZWwuZGF0YS5wdXNoKHsgbGFiZWw6ICdEJywgdmFsdWU6IDIsIGludGVyYWN0aXZlOiB0cnVlLCBlZGl0YWJsZTogdHJ1ZSB9KTtcblxuICAgIGNvbnN0IHVwZGF0ZWRDYXRlZ29yaWVzID0gZ2V0VXBkYXRlZENhdGVnb3JpZXMobmV4dFByb3BzLCBwcmV2UHJvcHMsIHByZXZTdGF0ZSk7XG5cbiAgICBleHBlY3QodXBkYXRlZENhdGVnb3JpZXMpLnRvRXF1YWwoW1xuICAgICAgeyBsYWJlbDogJ0EnLCB2YWx1ZTogMSwgaW50ZXJhY3RpdmU6IHRydWUsIGVkaXRhYmxlOiB0cnVlLCBkZWxldGFibGU6IGZhbHNlIH0sXG4gICAgICB7IGxhYmVsOiAnQicsIHZhbHVlOiAxLCBpbnRlcmFjdGl2ZTogdHJ1ZSwgZWRpdGFibGU6IGZhbHNlLCBkZWxldGFibGU6IGZhbHNlIH0sXG4gICAgICB7IGxhYmVsOiAnQycsIHZhbHVlOiAxLCBpbnRlcmFjdGl2ZTogdHJ1ZSwgZWRpdGFibGU6IGZhbHNlLCBkZWxldGFibGU6IGZhbHNlIH0sXG4gICAgICB7IGxhYmVsOiAnRCcsIHZhbHVlOiAyLCBpbnRlcmFjdGl2ZTogdHJ1ZSwgZWRpdGFibGU6IHRydWUsIGRlbGV0YWJsZTogZmFsc2UgfSxcbiAgICBdKTtcbiAgfSk7XG5cbiAgLy8gVGVzdCB3aGVuIGEgY2F0ZWdvcnkgaXMgcmVtb3ZlZCBmcm9tIERlZmluZSBDaGFydFxuICBpdCgnc2hvdWxkIGhhbmRsZSBjYXRlZ29yeSByZW1vdmFsIGNvcnJlY3RseScsICgpID0+IHtcbiAgICBjb25zdCBuZXh0UHJvcHMgPSB7XG4gICAgICBtb2RlbDoge1xuICAgICAgICBkYXRhOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6ICdBJyxcbiAgICAgICAgICAgIHZhbHVlOiAwLFxuICAgICAgICAgICAgaW50ZXJhY3RpdmU6IHRydWUsXG4gICAgICAgICAgICBlZGl0YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIGluZGV4OiAwLFxuICAgICAgICAgICAgZGVsZXRhYmxlOiB0cnVlLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6ICdDJyxcbiAgICAgICAgICAgIHZhbHVlOiAyLFxuICAgICAgICAgICAgaW50ZXJhY3RpdmU6IHRydWUsXG4gICAgICAgICAgICBlZGl0YWJsZTogZmFsc2UsXG4gICAgICAgICAgICBpbmRleDogMixcbiAgICAgICAgICAgIGRlbGV0YWJsZTogdHJ1ZSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgY29uc3QgdXBkYXRlZENhdGVnb3JpZXMgPSBnZXRVcGRhdGVkQ2F0ZWdvcmllcyhuZXh0UHJvcHMsIHByZXZQcm9wcywgcHJldlN0YXRlKTtcblxuICAgIGV4cGVjdCh1cGRhdGVkQ2F0ZWdvcmllcykudG9FcXVhbChbXG4gICAgICB7IGxhYmVsOiAnQScsIHZhbHVlOiAwLCBpbnRlcmFjdGl2ZTogdHJ1ZSwgZWRpdGFibGU6IHRydWUsIGRlbGV0YWJsZTogZmFsc2UgfSxcbiAgICAgIHsgbGFiZWw6ICdDJywgdmFsdWU6IDIsIGludGVyYWN0aXZlOiB0cnVlLCBlZGl0YWJsZTogZmFsc2UsIGRlbGV0YWJsZTogZmFsc2UgfSxcbiAgICBdKTtcbiAgfSk7XG5cbiAgLy8gVGVzdCB3aGVuIGFsbCBjYXRlZ29yaWVzIGFyZSByZW1vdmVkIGZyb20gRGVmaW5lIENoYXJ0XG4gIGl0KCdzaG91bGQgaGFuZGxlIGFsbCBjYXRlZ29yeSByZW1vdmFsIGNvcnJlY3RseScsICgpID0+IHtcbiAgICBjb25zdCBuZXh0UHJvcHMgPSB7XG4gICAgICBtb2RlbDoge1xuICAgICAgICBkYXRhOiBbXSxcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIGNvbnN0IHByZXZTdGF0ZSA9IHtcbiAgICAgIFwiY2F0ZWdvcmllc1wiOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgICBcImxhYmVsXCI6IFwiQVwiLFxuICAgICAgICAgICAgICBcInZhbHVlXCI6IDAsXG4gICAgICAgICAgICAgIFwiZWRpdGFibGVcIjogdHJ1ZSxcbiAgICAgICAgICAgICAgXCJpbnRlcmFjdGl2ZVwiOiB0cnVlXG4gICAgICAgICAgfVxuICAgICAgXVxuICB9XG5cbiAgICBjb25zdCB1cGRhdGVkQ2F0ZWdvcmllcyA9IGdldFVwZGF0ZWRDYXRlZ29yaWVzKG5leHRQcm9wcywgcHJldlByb3BzLCBwcmV2U3RhdGUpO1xuXG4gICAgZXhwZWN0KHVwZGF0ZWRDYXRlZ29yaWVzKS50b0VxdWFsKFtdKTtcbiAgfSk7XG59KTtcbiJdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsSUFBQUEsZ0JBQUEsR0FBQUMsT0FBQTtBQUNBLElBQUFDLFVBQUEsR0FBQUMs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
|