@pie-lib/config-ui 13.0.13 → 13.1.0-beta
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +0 -42
- package/lib/__tests__/alert-dialog.test.js +262 -0
- package/lib/__tests__/alert-dialog.test.js.map +1 -0
- package/lib/__tests__/checkbox.test.js +227 -0
- package/lib/__tests__/checkbox.test.js.map +1 -0
- package/lib/__tests__/choice-utils.test.js +14 -0
- package/lib/__tests__/choice-utils.test.js.map +1 -0
- package/lib/__tests__/form-section.test.js +252 -0
- package/lib/__tests__/form-section.test.js.map +1 -0
- package/lib/__tests__/help.test.js +270 -0
- package/lib/__tests__/help.test.js.map +1 -0
- package/lib/__tests__/input.test.js +268 -0
- package/lib/__tests__/input.test.js.map +1 -0
- package/lib/__tests__/langs.test.js +541 -0
- package/lib/__tests__/langs.test.js.map +1 -0
- package/lib/__tests__/number-text-field-custom.test.js +362 -0
- package/lib/__tests__/number-text-field-custom.test.js.map +1 -0
- package/lib/__tests__/number-text-field.test.js +421 -0
- package/lib/__tests__/number-text-field.test.js.map +1 -0
- package/lib/__tests__/radio-with-label.test.js +233 -0
- package/lib/__tests__/radio-with-label.test.js.map +1 -0
- package/lib/__tests__/settings-panel.test.js +184 -0
- package/lib/__tests__/settings-panel.test.js.map +1 -0
- package/lib/__tests__/settings.test.js +653 -0
- package/lib/__tests__/settings.test.js.map +1 -0
- package/lib/__tests__/tabs.test.js +211 -0
- package/lib/__tests__/tabs.test.js.map +1 -0
- package/lib/__tests__/two-choice.test.js +124 -0
- package/lib/__tests__/two-choice.test.js.map +1 -0
- package/lib/__tests__/with-stateful-model.test.js +221 -0
- package/lib/__tests__/with-stateful-model.test.js.map +1 -0
- package/lib/choice-configuration/__tests__/feedback-menu.test.js +287 -0
- package/lib/choice-configuration/__tests__/feedback-menu.test.js.map +1 -0
- package/lib/choice-configuration/__tests__/index.test.js +253 -0
- package/lib/choice-configuration/__tests__/index.test.js.map +1 -0
- package/lib/feedback-config/__tests__/feedback-config.test.js +201 -0
- package/lib/feedback-config/__tests__/feedback-config.test.js.map +1 -0
- package/lib/feedback-config/__tests__/feedback-selector.test.js +177 -0
- package/lib/feedback-config/__tests__/feedback-selector.test.js.map +1 -0
- package/lib/layout/__tests__/config.layout.test.js +70 -0
- package/lib/layout/__tests__/config.layout.test.js.map +1 -0
- package/lib/layout/__tests__/layout-content.test.js +6 -0
- package/lib/layout/__tests__/layout-content.test.js.map +1 -0
- package/lib/tags-input/__tests__/index.test.js +183 -0
- package/lib/tags-input/__tests__/index.test.js.map +1 -0
- package/package.json +5 -5
- package/LICENSE.md +0 -5
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
5
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
6
|
+
var _react = _interopRequireDefault(require("react"));
|
|
7
|
+
var _react2 = require("@testing-library/react");
|
|
8
|
+
var _userEvent = _interopRequireDefault(require("@testing-library/user-event"));
|
|
9
|
+
var _radioWithLabel = _interopRequireDefault(require("../radio-with-label"));
|
|
10
|
+
describe('RadioWithLabel Component', function () {
|
|
11
|
+
var onChange = jest.fn();
|
|
12
|
+
beforeEach(function () {
|
|
13
|
+
onChange.mockClear();
|
|
14
|
+
});
|
|
15
|
+
describe('Rendering', function () {
|
|
16
|
+
it('should render radio button with label', function () {
|
|
17
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_radioWithLabel["default"], {
|
|
18
|
+
label: "Option 1",
|
|
19
|
+
value: "option1",
|
|
20
|
+
checked: false,
|
|
21
|
+
onChange: onChange
|
|
22
|
+
}));
|
|
23
|
+
expect(_react2.screen.getByText('Option 1')).toBeInTheDocument();
|
|
24
|
+
expect(_react2.screen.getByRole('radio')).toBeInTheDocument();
|
|
25
|
+
});
|
|
26
|
+
it('should render checked radio button', function () {
|
|
27
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_radioWithLabel["default"], {
|
|
28
|
+
label: "Selected",
|
|
29
|
+
value: "selected",
|
|
30
|
+
checked: true,
|
|
31
|
+
onChange: onChange
|
|
32
|
+
}));
|
|
33
|
+
expect(_react2.screen.getByRole('radio')).toBeChecked();
|
|
34
|
+
});
|
|
35
|
+
it('should render unchecked radio button', function () {
|
|
36
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_radioWithLabel["default"], {
|
|
37
|
+
label: "Unselected",
|
|
38
|
+
value: "unselected",
|
|
39
|
+
checked: false,
|
|
40
|
+
onChange: onChange
|
|
41
|
+
}));
|
|
42
|
+
expect(_react2.screen.getByRole('radio')).not.toBeChecked();
|
|
43
|
+
});
|
|
44
|
+
});
|
|
45
|
+
describe('User interaction', function () {
|
|
46
|
+
it('should call onChange when radio button is clicked', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee() {
|
|
47
|
+
var user, radio;
|
|
48
|
+
return _regenerator["default"].wrap(function (_context) {
|
|
49
|
+
while (1) switch (_context.prev = _context.next) {
|
|
50
|
+
case 0:
|
|
51
|
+
user = _userEvent["default"].setup();
|
|
52
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_radioWithLabel["default"], {
|
|
53
|
+
label: "Option",
|
|
54
|
+
value: "option",
|
|
55
|
+
checked: false,
|
|
56
|
+
onChange: onChange
|
|
57
|
+
}));
|
|
58
|
+
radio = _react2.screen.getByRole('radio');
|
|
59
|
+
_context.next = 1;
|
|
60
|
+
return user.click(radio);
|
|
61
|
+
case 1:
|
|
62
|
+
expect(onChange).toHaveBeenCalled();
|
|
63
|
+
case 2:
|
|
64
|
+
case "end":
|
|
65
|
+
return _context.stop();
|
|
66
|
+
}
|
|
67
|
+
}, _callee);
|
|
68
|
+
})));
|
|
69
|
+
it('should call onChange when label is clicked', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee2() {
|
|
70
|
+
var user, label;
|
|
71
|
+
return _regenerator["default"].wrap(function (_context2) {
|
|
72
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
73
|
+
case 0:
|
|
74
|
+
user = _userEvent["default"].setup();
|
|
75
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_radioWithLabel["default"], {
|
|
76
|
+
label: "Click me",
|
|
77
|
+
value: "test",
|
|
78
|
+
checked: false,
|
|
79
|
+
onChange: onChange
|
|
80
|
+
}));
|
|
81
|
+
label = _react2.screen.getByText('Click me');
|
|
82
|
+
_context2.next = 1;
|
|
83
|
+
return user.click(label);
|
|
84
|
+
case 1:
|
|
85
|
+
expect(onChange).toHaveBeenCalled();
|
|
86
|
+
case 2:
|
|
87
|
+
case "end":
|
|
88
|
+
return _context2.stop();
|
|
89
|
+
}
|
|
90
|
+
}, _callee2);
|
|
91
|
+
})));
|
|
92
|
+
});
|
|
93
|
+
describe('Props', function () {
|
|
94
|
+
it('should accept different value types', function () {
|
|
95
|
+
var _render = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_radioWithLabel["default"], {
|
|
96
|
+
label: "String value",
|
|
97
|
+
value: "string",
|
|
98
|
+
checked: false,
|
|
99
|
+
onChange: onChange
|
|
100
|
+
})),
|
|
101
|
+
stringContainer = _render.container;
|
|
102
|
+
var _render2 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_radioWithLabel["default"], {
|
|
103
|
+
label: "Number value",
|
|
104
|
+
value: 123,
|
|
105
|
+
checked: false,
|
|
106
|
+
onChange: onChange
|
|
107
|
+
})),
|
|
108
|
+
numberContainer = _render2.container;
|
|
109
|
+
expect(stringContainer.querySelector('input[type="radio"]')).toBeInTheDocument();
|
|
110
|
+
expect(numberContainer.querySelector('input[type="radio"]')).toBeInTheDocument();
|
|
111
|
+
});
|
|
112
|
+
it('should display different labels', function () {
|
|
113
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_radioWithLabel["default"], {
|
|
114
|
+
label: "Label A",
|
|
115
|
+
value: "a",
|
|
116
|
+
checked: false,
|
|
117
|
+
onChange: onChange
|
|
118
|
+
}), /*#__PURE__*/_react["default"].createElement(_radioWithLabel["default"], {
|
|
119
|
+
label: "Label B",
|
|
120
|
+
value: "b",
|
|
121
|
+
checked: false,
|
|
122
|
+
onChange: onChange
|
|
123
|
+
})));
|
|
124
|
+
expect(_react2.screen.getByText('Label A')).toBeInTheDocument();
|
|
125
|
+
expect(_react2.screen.getByText('Label B')).toBeInTheDocument();
|
|
126
|
+
});
|
|
127
|
+
});
|
|
128
|
+
describe('Radio button group behavior', function () {
|
|
129
|
+
it('should allow multiple radio buttons to be rendered', function () {
|
|
130
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_radioWithLabel["default"], {
|
|
131
|
+
label: "Option 1",
|
|
132
|
+
value: "opt1",
|
|
133
|
+
checked: true,
|
|
134
|
+
onChange: onChange
|
|
135
|
+
}), /*#__PURE__*/_react["default"].createElement(_radioWithLabel["default"], {
|
|
136
|
+
label: "Option 2",
|
|
137
|
+
value: "opt2",
|
|
138
|
+
checked: false,
|
|
139
|
+
onChange: onChange
|
|
140
|
+
}), /*#__PURE__*/_react["default"].createElement(_radioWithLabel["default"], {
|
|
141
|
+
label: "Option 3",
|
|
142
|
+
value: "opt3",
|
|
143
|
+
checked: false,
|
|
144
|
+
onChange: onChange
|
|
145
|
+
})));
|
|
146
|
+
var radios = _react2.screen.getAllByRole('radio');
|
|
147
|
+
expect(radios).toHaveLength(3);
|
|
148
|
+
expect(radios[0]).toBeChecked();
|
|
149
|
+
expect(radios[1]).not.toBeChecked();
|
|
150
|
+
expect(radios[2]).not.toBeChecked();
|
|
151
|
+
});
|
|
152
|
+
it('should handle independent onChange callbacks for multiple radios', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee3() {
|
|
153
|
+
var user, onChange1, onChange2, onChange3, radios;
|
|
154
|
+
return _regenerator["default"].wrap(function (_context3) {
|
|
155
|
+
while (1) switch (_context3.prev = _context3.next) {
|
|
156
|
+
case 0:
|
|
157
|
+
user = _userEvent["default"].setup();
|
|
158
|
+
onChange1 = jest.fn();
|
|
159
|
+
onChange2 = jest.fn();
|
|
160
|
+
onChange3 = jest.fn();
|
|
161
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_radioWithLabel["default"], {
|
|
162
|
+
label: "Option 1",
|
|
163
|
+
value: "opt1",
|
|
164
|
+
checked: true,
|
|
165
|
+
onChange: onChange1
|
|
166
|
+
}), /*#__PURE__*/_react["default"].createElement(_radioWithLabel["default"], {
|
|
167
|
+
label: "Option 2",
|
|
168
|
+
value: "opt2",
|
|
169
|
+
checked: false,
|
|
170
|
+
onChange: onChange2
|
|
171
|
+
}), /*#__PURE__*/_react["default"].createElement(_radioWithLabel["default"], {
|
|
172
|
+
label: "Option 3",
|
|
173
|
+
value: "opt3",
|
|
174
|
+
checked: false,
|
|
175
|
+
onChange: onChange3
|
|
176
|
+
})));
|
|
177
|
+
radios = _react2.screen.getAllByRole('radio');
|
|
178
|
+
_context3.next = 1;
|
|
179
|
+
return user.click(radios[1]);
|
|
180
|
+
case 1:
|
|
181
|
+
expect(onChange2).toHaveBeenCalled();
|
|
182
|
+
expect(onChange1).not.toHaveBeenCalled();
|
|
183
|
+
expect(onChange3).not.toHaveBeenCalled();
|
|
184
|
+
onChange2.mockClear();
|
|
185
|
+
_context3.next = 2;
|
|
186
|
+
return user.click(radios[2]);
|
|
187
|
+
case 2:
|
|
188
|
+
expect(onChange3).toHaveBeenCalled();
|
|
189
|
+
expect(onChange1).not.toHaveBeenCalled();
|
|
190
|
+
expect(onChange2).not.toHaveBeenCalled();
|
|
191
|
+
case 3:
|
|
192
|
+
case "end":
|
|
193
|
+
return _context3.stop();
|
|
194
|
+
}
|
|
195
|
+
}, _callee3);
|
|
196
|
+
})));
|
|
197
|
+
});
|
|
198
|
+
describe('Styling', function () {
|
|
199
|
+
it('should render with correct styling classes', function () {
|
|
200
|
+
var _render3 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_radioWithLabel["default"], {
|
|
201
|
+
label: "Styled",
|
|
202
|
+
value: "styled",
|
|
203
|
+
checked: false,
|
|
204
|
+
onChange: onChange
|
|
205
|
+
})),
|
|
206
|
+
container = _render3.container;
|
|
207
|
+
expect(container.querySelector('[class*="MuiFormControlLabel"]')).toBeInTheDocument();
|
|
208
|
+
expect(container.querySelector('[class*="MuiRadio"]')).toBeInTheDocument();
|
|
209
|
+
});
|
|
210
|
+
});
|
|
211
|
+
describe('Edge cases', function () {
|
|
212
|
+
it('should handle empty string label', function () {
|
|
213
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_radioWithLabel["default"], {
|
|
214
|
+
label: "",
|
|
215
|
+
value: "empty",
|
|
216
|
+
checked: false,
|
|
217
|
+
onChange: onChange
|
|
218
|
+
}));
|
|
219
|
+
expect(_react2.screen.getByRole('radio')).toBeInTheDocument();
|
|
220
|
+
});
|
|
221
|
+
it('should handle long labels', function () {
|
|
222
|
+
var longLabel = 'This is a very long label that should wrap properly and not break the layout';
|
|
223
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_radioWithLabel["default"], {
|
|
224
|
+
label: longLabel,
|
|
225
|
+
value: "long",
|
|
226
|
+
checked: false,
|
|
227
|
+
onChange: onChange
|
|
228
|
+
}));
|
|
229
|
+
expect(_react2.screen.getByText(longLabel)).toBeInTheDocument();
|
|
230
|
+
});
|
|
231
|
+
});
|
|
232
|
+
});
|
|
233
|
+
//# sourceMappingURL=radio-with-label.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"radio-with-label.test.js","names":["_react","_interopRequireDefault","require","_react2","_userEvent","_radioWithLabel","describe","onChange","jest","fn","beforeEach","mockClear","it","render","createElement","label","value","checked","expect","screen","getByText","toBeInTheDocument","getByRole","toBeChecked","not","_asyncToGenerator2","_regenerator","mark","_callee","user","radio","wrap","_context","prev","next","userEvent","setup","click","toHaveBeenCalled","stop","_callee2","_context2","_render","stringContainer","container","_render2","numberContainer","querySelector","Fragment","radios","getAllByRole","toHaveLength","_callee3","onChange1","onChange2","onChange3","_context3","_render3","longLabel"],"sources":["../../src/__tests__/radio-with-label.test.jsx"],"sourcesContent":["import React from 'react';\nimport { render, screen } from '@testing-library/react';\nimport userEvent from '@testing-library/user-event';\nimport RadioWithLabel from '../radio-with-label';\n\ndescribe('RadioWithLabel Component', () => {\n const onChange = jest.fn();\n\n beforeEach(() => {\n onChange.mockClear();\n });\n\n describe('Rendering', () => {\n it('should render radio button with label', () => {\n render(<RadioWithLabel label=\"Option 1\" value=\"option1\" checked={false} onChange={onChange} />);\n\n expect(screen.getByText('Option 1')).toBeInTheDocument();\n expect(screen.getByRole('radio')).toBeInTheDocument();\n });\n\n it('should render checked radio button', () => {\n render(<RadioWithLabel label=\"Selected\" value=\"selected\" checked={true} onChange={onChange} />);\n\n expect(screen.getByRole('radio')).toBeChecked();\n });\n\n it('should render unchecked radio button', () => {\n render(<RadioWithLabel label=\"Unselected\" value=\"unselected\" checked={false} onChange={onChange} />);\n\n expect(screen.getByRole('radio')).not.toBeChecked();\n });\n });\n\n describe('User interaction', () => {\n it('should call onChange when radio button is clicked', async () => {\n const user = userEvent.setup();\n render(<RadioWithLabel label=\"Option\" value=\"option\" checked={false} onChange={onChange} />);\n\n const radio = screen.getByRole('radio');\n await user.click(radio);\n\n expect(onChange).toHaveBeenCalled();\n });\n\n it('should call onChange when label is clicked', async () => {\n const user = userEvent.setup();\n render(<RadioWithLabel label=\"Click me\" value=\"test\" checked={false} onChange={onChange} />);\n\n const label = screen.getByText('Click me');\n await user.click(label);\n\n expect(onChange).toHaveBeenCalled();\n });\n });\n\n describe('Props', () => {\n it('should accept different value types', () => {\n const { container: stringContainer } = render(\n <RadioWithLabel label=\"String value\" value=\"string\" checked={false} onChange={onChange} />,\n );\n\n const { container: numberContainer } = render(\n <RadioWithLabel label=\"Number value\" value={123} checked={false} onChange={onChange} />,\n );\n\n expect(stringContainer.querySelector('input[type=\"radio\"]')).toBeInTheDocument();\n expect(numberContainer.querySelector('input[type=\"radio\"]')).toBeInTheDocument();\n });\n\n it('should display different labels', () => {\n render(\n <>\n <RadioWithLabel label=\"Label A\" value=\"a\" checked={false} onChange={onChange} />\n <RadioWithLabel label=\"Label B\" value=\"b\" checked={false} onChange={onChange} />\n </>,\n );\n\n expect(screen.getByText('Label A')).toBeInTheDocument();\n expect(screen.getByText('Label B')).toBeInTheDocument();\n });\n });\n\n describe('Radio button group behavior', () => {\n it('should allow multiple radio buttons to be rendered', () => {\n render(\n <>\n <RadioWithLabel label=\"Option 1\" value=\"opt1\" checked={true} onChange={onChange} />\n <RadioWithLabel label=\"Option 2\" value=\"opt2\" checked={false} onChange={onChange} />\n <RadioWithLabel label=\"Option 3\" value=\"opt3\" checked={false} onChange={onChange} />\n </>,\n );\n\n const radios = screen.getAllByRole('radio');\n expect(radios).toHaveLength(3);\n expect(radios[0]).toBeChecked();\n expect(radios[1]).not.toBeChecked();\n expect(radios[2]).not.toBeChecked();\n });\n\n it('should handle independent onChange callbacks for multiple radios', async () => {\n const user = userEvent.setup();\n const onChange1 = jest.fn();\n const onChange2 = jest.fn();\n const onChange3 = jest.fn();\n\n render(\n <>\n <RadioWithLabel label=\"Option 1\" value=\"opt1\" checked={true} onChange={onChange1} />\n <RadioWithLabel label=\"Option 2\" value=\"opt2\" checked={false} onChange={onChange2} />\n <RadioWithLabel label=\"Option 3\" value=\"opt3\" checked={false} onChange={onChange3} />\n </>,\n );\n\n const radios = screen.getAllByRole('radio');\n\n await user.click(radios[1]);\n expect(onChange2).toHaveBeenCalled();\n expect(onChange1).not.toHaveBeenCalled();\n expect(onChange3).not.toHaveBeenCalled();\n\n onChange2.mockClear();\n\n await user.click(radios[2]);\n expect(onChange3).toHaveBeenCalled();\n expect(onChange1).not.toHaveBeenCalled();\n expect(onChange2).not.toHaveBeenCalled();\n });\n });\n\n describe('Styling', () => {\n it('should render with correct styling classes', () => {\n const { container } = render(\n <RadioWithLabel label=\"Styled\" value=\"styled\" checked={false} onChange={onChange} />,\n );\n\n expect(container.querySelector('[class*=\"MuiFormControlLabel\"]')).toBeInTheDocument();\n expect(container.querySelector('[class*=\"MuiRadio\"]')).toBeInTheDocument();\n });\n });\n\n describe('Edge cases', () => {\n it('should handle empty string label', () => {\n render(<RadioWithLabel label=\"\" value=\"empty\" checked={false} onChange={onChange} />);\n\n expect(screen.getByRole('radio')).toBeInTheDocument();\n });\n\n it('should handle long labels', () => {\n const longLabel = 'This is a very long label that should wrap properly and not break the layout';\n render(<RadioWithLabel label={longLabel} value=\"long\" checked={false} onChange={onChange} />);\n\n expect(screen.getByText(longLabel)).toBeInTheDocument();\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
5
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
6
|
+
var _react = _interopRequireDefault(require("react"));
|
|
7
|
+
var _react2 = require("@testing-library/react");
|
|
8
|
+
var _panel = require("../settings/panel");
|
|
9
|
+
var _settings = require("../settings");
|
|
10
|
+
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; }
|
|
11
|
+
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; }
|
|
12
|
+
describe('Settings Panel', function () {
|
|
13
|
+
var onChange;
|
|
14
|
+
var configure;
|
|
15
|
+
var model;
|
|
16
|
+
var groups;
|
|
17
|
+
beforeEach(function () {
|
|
18
|
+
onChange = jest.fn();
|
|
19
|
+
configure = {
|
|
20
|
+
orientationLabel: 'Orientation',
|
|
21
|
+
settingsOrientation: true,
|
|
22
|
+
editChoiceLabel: false
|
|
23
|
+
};
|
|
24
|
+
model = {
|
|
25
|
+
choiceAreaLayout: 'vertical'
|
|
26
|
+
};
|
|
27
|
+
groups = function groups(_ref) {
|
|
28
|
+
var configure = _ref.configure;
|
|
29
|
+
return {
|
|
30
|
+
'Group 1': {
|
|
31
|
+
choiceAreaLayout: configure.settingsOrientation && {
|
|
32
|
+
type: 'radio',
|
|
33
|
+
label: configure.orientationLabel,
|
|
34
|
+
choices: [{
|
|
35
|
+
label: 'opt1',
|
|
36
|
+
value: 'opt1'
|
|
37
|
+
}, {
|
|
38
|
+
label: 'opt2',
|
|
39
|
+
value: 'opt2'
|
|
40
|
+
}]
|
|
41
|
+
},
|
|
42
|
+
editChoiceLabel: {
|
|
43
|
+
type: 'toggle',
|
|
44
|
+
label: 'Edit choice label',
|
|
45
|
+
isConfigProperty: true
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
};
|
|
50
|
+
});
|
|
51
|
+
var renderComponent = function renderComponent() {
|
|
52
|
+
var extras = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
53
|
+
return (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_panel.Panel, (0, _extends2["default"])({
|
|
54
|
+
model: model,
|
|
55
|
+
configuration: configure,
|
|
56
|
+
onChangeModel: onChange,
|
|
57
|
+
onChangeConfiguration: onChange,
|
|
58
|
+
groups: groups({
|
|
59
|
+
configure: configure
|
|
60
|
+
})
|
|
61
|
+
}, extras)));
|
|
62
|
+
};
|
|
63
|
+
describe('rendering', function () {
|
|
64
|
+
it('renders settings panel', function () {
|
|
65
|
+
renderComponent();
|
|
66
|
+
expect(_react2.screen.getByText('Group 1')).toBeInTheDocument();
|
|
67
|
+
});
|
|
68
|
+
it('renders toggle settings', function () {
|
|
69
|
+
renderComponent();
|
|
70
|
+
|
|
71
|
+
// Toggle components render with Switch role in MUI v5
|
|
72
|
+
var toggles = _react2.screen.getAllByRole('switch');
|
|
73
|
+
expect(toggles.length).toBeGreaterThan(0);
|
|
74
|
+
});
|
|
75
|
+
it('conditionally renders radio buttons based on configuration', function () {
|
|
76
|
+
renderComponent();
|
|
77
|
+
|
|
78
|
+
// Should render radio when settingsOrientation is true
|
|
79
|
+
expect(_react2.screen.getByText('Orientation')).toBeInTheDocument();
|
|
80
|
+
});
|
|
81
|
+
it('does not render radio buttons when disabled in configuration', function () {
|
|
82
|
+
var disabledGroups = groups({
|
|
83
|
+
configure: _objectSpread(_objectSpread({}, configure), {}, {
|
|
84
|
+
settingsOrientation: false
|
|
85
|
+
})
|
|
86
|
+
});
|
|
87
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_panel.Panel, {
|
|
88
|
+
model: model,
|
|
89
|
+
configuration: _objectSpread(_objectSpread({}, configure), {}, {
|
|
90
|
+
settingsOrientation: false
|
|
91
|
+
}),
|
|
92
|
+
onChangeModel: onChange,
|
|
93
|
+
onChangeConfiguration: onChange,
|
|
94
|
+
groups: disabledGroups
|
|
95
|
+
}));
|
|
96
|
+
|
|
97
|
+
// Should not render radio when settingsOrientation is false
|
|
98
|
+
expect(_react2.screen.queryByText('Orientation')).not.toBeInTheDocument();
|
|
99
|
+
});
|
|
100
|
+
});
|
|
101
|
+
});
|
|
102
|
+
|
|
103
|
+
// Utility function tests - these are simple unit tests that don't need RTL
|
|
104
|
+
describe('toggle', function () {
|
|
105
|
+
it('returns a toggle type object', function () {
|
|
106
|
+
var setting = (0, _settings.toggle)('Label');
|
|
107
|
+
expect(setting).toEqual({
|
|
108
|
+
label: 'Label',
|
|
109
|
+
type: 'toggle',
|
|
110
|
+
isConfigProperty: false,
|
|
111
|
+
disabled: false
|
|
112
|
+
});
|
|
113
|
+
});
|
|
114
|
+
});
|
|
115
|
+
describe('radio', function () {
|
|
116
|
+
it('returns a radio type object', function () {
|
|
117
|
+
var setting = (0, _settings.radio)('Radio', ['one', 'two']);
|
|
118
|
+
expect(setting).toEqual({
|
|
119
|
+
label: 'Radio',
|
|
120
|
+
type: 'radio',
|
|
121
|
+
isConfigProperty: false,
|
|
122
|
+
choices: [{
|
|
123
|
+
label: 'one',
|
|
124
|
+
value: 'one'
|
|
125
|
+
}, {
|
|
126
|
+
label: 'two',
|
|
127
|
+
value: 'two'
|
|
128
|
+
}]
|
|
129
|
+
});
|
|
130
|
+
});
|
|
131
|
+
});
|
|
132
|
+
describe('dropdown', function () {
|
|
133
|
+
it('returns a dropdown type object', function () {
|
|
134
|
+
var setting = (0, _settings.dropdown)('Dropdown', ['one', 'two']);
|
|
135
|
+
expect(setting).toEqual({
|
|
136
|
+
label: 'Dropdown',
|
|
137
|
+
type: 'dropdown',
|
|
138
|
+
isConfigProperty: false,
|
|
139
|
+
choices: ['one', 'two']
|
|
140
|
+
});
|
|
141
|
+
});
|
|
142
|
+
});
|
|
143
|
+
describe('numberField', function () {
|
|
144
|
+
it('returns a numberField type object', function () {
|
|
145
|
+
var setting = (0, _settings.numberField)('Number Field', {
|
|
146
|
+
max: 12
|
|
147
|
+
}, true);
|
|
148
|
+
expect(setting).toEqual({
|
|
149
|
+
label: 'Number Field',
|
|
150
|
+
type: 'numberField',
|
|
151
|
+
isConfigProperty: true,
|
|
152
|
+
max: 12
|
|
153
|
+
});
|
|
154
|
+
});
|
|
155
|
+
});
|
|
156
|
+
describe('numberFields', function () {
|
|
157
|
+
it('returns a numberFields type object', function () {
|
|
158
|
+
var setting = (0, _settings.numberFields)('Number Fields', {
|
|
159
|
+
one: {
|
|
160
|
+
label: 'One'
|
|
161
|
+
},
|
|
162
|
+
two: {
|
|
163
|
+
label: 'Two'
|
|
164
|
+
}
|
|
165
|
+
});
|
|
166
|
+
expect(setting).toEqual({
|
|
167
|
+
label: 'Number Fields',
|
|
168
|
+
type: 'numberFields',
|
|
169
|
+
fields: {
|
|
170
|
+
one: {
|
|
171
|
+
type: 'numberField',
|
|
172
|
+
label: 'One',
|
|
173
|
+
isConfigProperty: false
|
|
174
|
+
},
|
|
175
|
+
two: {
|
|
176
|
+
type: 'numberField',
|
|
177
|
+
label: 'Two',
|
|
178
|
+
isConfigProperty: false
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
});
|
|
182
|
+
});
|
|
183
|
+
});
|
|
184
|
+
//# sourceMappingURL=settings-panel.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings-panel.test.js","names":["_react","_interopRequireDefault","require","_react2","_panel","_settings","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","describe","onChange","configure","model","groups","beforeEach","jest","fn","orientationLabel","settingsOrientation","editChoiceLabel","choiceAreaLayout","_ref","type","label","choices","value","isConfigProperty","renderComponent","extras","undefined","render","createElement","Panel","_extends2","configuration","onChangeModel","onChangeConfiguration","it","expect","screen","getByText","toBeInTheDocument","toggles","getAllByRole","toBeGreaterThan","disabledGroups","queryByText","not","setting","toggle","toEqual","disabled","radio","dropdown","numberField","max","numberFields","one","two","fields"],"sources":["../../src/__tests__/settings-panel.test.js"],"sourcesContent":["import React from 'react';\nimport { render, screen } from '@testing-library/react';\nimport { Panel } from '../settings/panel';\nimport { dropdown, numberField, numberFields, radio, toggle } from '../settings';\n\ndescribe('Settings Panel', () => {\n let onChange;\n let configure;\n let model;\n let groups;\n\n beforeEach(() => {\n onChange = jest.fn();\n configure = {\n orientationLabel: 'Orientation',\n settingsOrientation: true,\n editChoiceLabel: false,\n };\n model = {\n choiceAreaLayout: 'vertical',\n };\n\n groups = ({ configure }) => ({\n 'Group 1': {\n choiceAreaLayout: configure.settingsOrientation && {\n type: 'radio',\n label: configure.orientationLabel,\n choices: [\n { label: 'opt1', value: 'opt1' },\n { label: 'opt2', value: 'opt2' },\n ],\n },\n editChoiceLabel: { type: 'toggle', label: 'Edit choice label', isConfigProperty: true },\n },\n });\n });\n\n const renderComponent = (extras = {}) => {\n return render(\n <Panel\n model={model}\n configuration={configure}\n onChangeModel={onChange}\n onChangeConfiguration={onChange}\n groups={groups({ configure })}\n {...extras}\n />,\n );\n };\n\n describe('rendering', () => {\n it('renders settings panel', () => {\n renderComponent();\n\n expect(screen.getByText('Group 1')).toBeInTheDocument();\n });\n\n it('renders toggle settings', () => {\n renderComponent();\n\n // Toggle components render with Switch role in MUI v5\n const toggles = screen.getAllByRole('switch');\n expect(toggles.length).toBeGreaterThan(0);\n });\n\n it('conditionally renders radio buttons based on configuration', () => {\n renderComponent();\n\n // Should render radio when settingsOrientation is true\n expect(screen.getByText('Orientation')).toBeInTheDocument();\n });\n\n it('does not render radio buttons when disabled in configuration', () => {\n const disabledGroups = groups({\n configure: {\n ...configure,\n settingsOrientation: false,\n },\n });\n\n render(\n <Panel\n model={model}\n configuration={{ ...configure, settingsOrientation: false }}\n onChangeModel={onChange}\n onChangeConfiguration={onChange}\n groups={disabledGroups}\n />,\n );\n\n // Should not render radio when settingsOrientation is false\n expect(screen.queryByText('Orientation')).not.toBeInTheDocument();\n });\n });\n});\n\n// Utility function tests - these are simple unit tests that don't need RTL\ndescribe('toggle', () => {\n it('returns a toggle type object', () => {\n const setting = toggle('Label');\n\n expect(setting).toEqual({\n label: 'Label',\n type: 'toggle',\n isConfigProperty: false,\n disabled: false,\n });\n });\n});\n\ndescribe('radio', () => {\n it('returns a radio type object', () => {\n const setting = radio('Radio', ['one', 'two']);\n\n expect(setting).toEqual({\n label: 'Radio',\n type: 'radio',\n isConfigProperty: false,\n choices: [\n {\n label: 'one',\n value: 'one',\n },\n {\n label: 'two',\n value: 'two',\n },\n ],\n });\n });\n});\n\ndescribe('dropdown', () => {\n it('returns a dropdown type object', () => {\n const setting = dropdown('Dropdown', ['one', 'two']);\n\n expect(setting).toEqual({\n label: 'Dropdown',\n type: 'dropdown',\n isConfigProperty: false,\n choices: ['one', 'two'],\n });\n });\n});\n\ndescribe('numberField', () => {\n it('returns a numberField type object', () => {\n const setting = numberField('Number Field', { max: 12 }, true);\n\n expect(setting).toEqual({\n label: 'Number Field',\n type: 'numberField',\n isConfigProperty: true,\n max: 12,\n });\n });\n});\n\ndescribe('numberFields', () => {\n it('returns a numberFields type object', () => {\n const setting = numberFields('Number Fields', {\n one: {\n label: 'One',\n },\n two: {\n label: 'Two',\n },\n });\n\n expect(setting).toEqual({\n label: 'Number Fields',\n type: 'numberFields',\n fields: {\n one: {\n type: 'numberField',\n label: 'One',\n isConfigProperty: false,\n },\n two: {\n type: 'numberField',\n label: 'Two',\n isConfigProperty: false,\n },\n },\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
|