@pie-lib/config-ui 13.1.0-beta.7 → 14.0.0-next.35
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/dist/_virtual/_rolldown/runtime.js +11 -0
- package/dist/alert-dialog.d.ts +44 -0
- package/dist/alert-dialog.js +47 -0
- package/dist/checkbox.d.ts +34 -0
- package/dist/checkbox.js +57 -0
- package/dist/choice-configuration/feedback-menu.d.ts +32 -0
- package/dist/choice-configuration/feedback-menu.js +85 -0
- package/dist/choice-configuration/index.d.ts +62 -0
- package/dist/choice-configuration/index.js +240 -0
- package/dist/choice-utils.d.ts +21 -0
- package/dist/choice-utils.js +15 -0
- package/dist/feedback-config/feedback-selector.d.ts +33 -0
- package/dist/feedback-config/feedback-selector.js +92 -0
- package/dist/feedback-config/group.d.ts +21 -0
- package/dist/feedback-config/group.js +33 -0
- package/dist/feedback-config/index.d.ts +48 -0
- package/dist/feedback-config/index.js +96 -0
- package/dist/form-section.d.ts +25 -0
- package/dist/form-section.js +25 -0
- package/dist/fraction-to-number.d.ts +7 -0
- package/dist/fraction-to-number.js +9 -0
- package/dist/help.d.ts +41 -0
- package/dist/help.js +62 -0
- package/dist/index.d.ts +31 -0
- package/dist/index.js +34 -0
- package/dist/input.d.ts +29 -0
- package/dist/input.js +65 -0
- package/dist/inputs.d.ts +63 -0
- package/dist/inputs.js +70 -0
- package/dist/langs.d.ts +41 -0
- package/dist/langs.js +76 -0
- package/dist/layout/config-layout.d.ts +10 -0
- package/dist/layout/config-layout.js +75 -0
- package/dist/layout/index.d.ts +11 -0
- package/dist/layout/index.js +10 -0
- package/dist/layout/layout-contents.d.ts +21 -0
- package/dist/layout/layout-contents.js +70 -0
- package/dist/layout/settings-box.d.ts +19 -0
- package/dist/layout/settings-box.js +32 -0
- package/dist/mui-box/index.d.ts +21 -0
- package/dist/mui-box/index.js +47 -0
- package/dist/node_modules/.bun/@babel_runtime@7.29.7/node_modules/@babel/runtime/helpers/esm/extends.js +12 -0
- package/dist/node_modules/.bun/@babel_runtime@7.29.7/node_modules/@babel/runtime/helpers/esm/inheritsLoose.js +7 -0
- package/dist/node_modules/.bun/@babel_runtime@7.29.7/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js +12 -0
- package/dist/node_modules/.bun/@babel_runtime@7.29.7/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js +8 -0
- package/dist/node_modules/.bun/react-measure@2.5.2_6dbf9a050bc9aadb/node_modules/react-measure/dist/index.esm.js +122 -0
- package/dist/node_modules/.bun/resize-observer-polyfill@1.5.1/node_modules/resize-observer-polyfill/dist/ResizeObserver.es.js +276 -0
- package/dist/number-text-field-custom.d.ts +51 -0
- package/dist/number-text-field-custom.js +192 -0
- package/dist/number-text-field.d.ts +47 -0
- package/dist/number-text-field.js +122 -0
- package/dist/radio-with-label.d.ts +25 -0
- package/dist/radio-with-label.js +27 -0
- package/dist/settings/display-size.d.ts +26 -0
- package/dist/settings/display-size.js +45 -0
- package/dist/settings/index.d.ts +45 -0
- package/dist/settings/index.js +63 -0
- package/dist/settings/panel.d.ts +27 -0
- package/dist/settings/panel.js +201 -0
- package/dist/settings/settings-radio-label.d.ts +25 -0
- package/dist/settings/settings-radio-label.js +29 -0
- package/dist/settings/toggle.d.ts +25 -0
- package/dist/settings/toggle.js +33 -0
- package/dist/tabs/index.d.ts +22 -0
- package/dist/tabs/index.js +39 -0
- package/dist/tags-input/index.d.ts +21 -0
- package/dist/tags-input/index.js +83 -0
- package/dist/two-choice.d.ts +43 -0
- package/dist/two-choice.js +79 -0
- package/dist/with-stateful-model.d.ts +42 -0
- package/dist/with-stateful-model.js +32 -0
- package/package.json +31 -19
- package/CHANGELOG.json +0 -32
- package/CHANGELOG.md +0 -2419
- package/lib/__tests__/alert-dialog.test.js +0 -262
- package/lib/__tests__/alert-dialog.test.js.map +0 -1
- package/lib/__tests__/checkbox.test.js +0 -227
- package/lib/__tests__/checkbox.test.js.map +0 -1
- package/lib/__tests__/choice-utils.test.js +0 -14
- package/lib/__tests__/choice-utils.test.js.map +0 -1
- package/lib/__tests__/form-section.test.js +0 -252
- package/lib/__tests__/form-section.test.js.map +0 -1
- package/lib/__tests__/help.test.js +0 -270
- package/lib/__tests__/help.test.js.map +0 -1
- package/lib/__tests__/input.test.js +0 -268
- package/lib/__tests__/input.test.js.map +0 -1
- package/lib/__tests__/langs.test.js +0 -541
- package/lib/__tests__/langs.test.js.map +0 -1
- package/lib/__tests__/number-text-field-custom.test.js +0 -362
- package/lib/__tests__/number-text-field-custom.test.js.map +0 -1
- package/lib/__tests__/number-text-field.test.js +0 -421
- package/lib/__tests__/number-text-field.test.js.map +0 -1
- package/lib/__tests__/radio-with-label.test.js +0 -233
- package/lib/__tests__/radio-with-label.test.js.map +0 -1
- package/lib/__tests__/settings-panel.test.js +0 -184
- package/lib/__tests__/settings-panel.test.js.map +0 -1
- package/lib/__tests__/settings.test.js +0 -653
- package/lib/__tests__/settings.test.js.map +0 -1
- package/lib/__tests__/tabs.test.js +0 -211
- package/lib/__tests__/tabs.test.js.map +0 -1
- package/lib/__tests__/two-choice.test.js +0 -124
- package/lib/__tests__/two-choice.test.js.map +0 -1
- package/lib/__tests__/with-stateful-model.test.js +0 -221
- package/lib/__tests__/with-stateful-model.test.js.map +0 -1
- package/lib/alert-dialog.js +0 -68
- package/lib/alert-dialog.js.map +0 -1
- package/lib/checkbox.js +0 -84
- package/lib/checkbox.js.map +0 -1
- package/lib/choice-configuration/__tests__/feedback-menu.test.js +0 -287
- package/lib/choice-configuration/__tests__/feedback-menu.test.js.map +0 -1
- package/lib/choice-configuration/__tests__/index.test.js +0 -253
- package/lib/choice-configuration/__tests__/index.test.js.map +0 -1
- package/lib/choice-configuration/feedback-menu.js +0 -129
- package/lib/choice-configuration/feedback-menu.js.map +0 -1
- package/lib/choice-configuration/index.js +0 -381
- package/lib/choice-configuration/index.js.map +0 -1
- package/lib/choice-utils.js +0 -42
- package/lib/choice-utils.js.map +0 -1
- package/lib/feedback-config/__tests__/feedback-config.test.js +0 -201
- package/lib/feedback-config/__tests__/feedback-config.test.js.map +0 -1
- package/lib/feedback-config/__tests__/feedback-selector.test.js +0 -177
- package/lib/feedback-config/__tests__/feedback-selector.test.js.map +0 -1
- package/lib/feedback-config/feedback-selector.js +0 -155
- package/lib/feedback-config/feedback-selector.js.map +0 -1
- package/lib/feedback-config/group.js +0 -61
- package/lib/feedback-config/group.js.map +0 -1
- package/lib/feedback-config/index.js +0 -146
- package/lib/feedback-config/index.js.map +0 -1
- package/lib/form-section.js +0 -44
- package/lib/form-section.js.map +0 -1
- package/lib/help.js +0 -106
- package/lib/help.js.map +0 -1
- package/lib/index.js +0 -186
- package/lib/index.js.map +0 -1
- package/lib/input.js +0 -106
- package/lib/input.js.map +0 -1
- package/lib/inputs.js +0 -105
- package/lib/inputs.js.map +0 -1
- package/lib/langs.js +0 -136
- package/lib/langs.js.map +0 -1
- package/lib/layout/__tests__/config.layout.test.js +0 -70
- package/lib/layout/__tests__/config.layout.test.js.map +0 -1
- package/lib/layout/__tests__/layout-content.test.js +0 -6
- package/lib/layout/__tests__/layout-content.test.js.map +0 -1
- package/lib/layout/config-layout.js +0 -137
- package/lib/layout/config-layout.js.map +0 -1
- package/lib/layout/index.js +0 -21
- package/lib/layout/index.js.map +0 -1
- package/lib/layout/layout-contents.js +0 -160
- package/lib/layout/layout-contents.js.map +0 -1
- package/lib/layout/settings-box.js +0 -57
- package/lib/layout/settings-box.js.map +0 -1
- package/lib/mui-box/index.js +0 -63
- package/lib/mui-box/index.js.map +0 -1
- package/lib/number-text-field-custom.js +0 -376
- package/lib/number-text-field-custom.js.map +0 -1
- package/lib/number-text-field.js +0 -229
- package/lib/number-text-field.js.map +0 -1
- package/lib/radio-with-label.js +0 -48
- package/lib/radio-with-label.js.map +0 -1
- package/lib/settings/display-size.js +0 -61
- package/lib/settings/display-size.js.map +0 -1
- package/lib/settings/index.js +0 -110
- package/lib/settings/index.js.map +0 -1
- package/lib/settings/panel.js +0 -392
- package/lib/settings/panel.js.map +0 -1
- package/lib/settings/settings-radio-label.js +0 -51
- package/lib/settings/settings-radio-label.js.map +0 -1
- package/lib/settings/toggle.js +0 -63
- package/lib/settings/toggle.js.map +0 -1
- package/lib/tabs/index.js +0 -75
- package/lib/tabs/index.js.map +0 -1
- package/lib/tags-input/__tests__/index.test.js +0 -183
- package/lib/tags-input/__tests__/index.test.js.map +0 -1
- package/lib/tags-input/index.js +0 -149
- package/lib/tags-input/index.js.map +0 -1
- package/lib/two-choice.js +0 -136
- package/lib/two-choice.js.map +0 -1
- package/lib/with-stateful-model.js +0 -61
- package/lib/with-stateful-model.js.map +0 -1
- package/src/__tests__/alert-dialog.test.jsx +0 -183
- package/src/__tests__/checkbox.test.jsx +0 -152
- package/src/__tests__/choice-utils.test.js +0 -12
- package/src/__tests__/form-section.test.jsx +0 -328
- package/src/__tests__/help.test.jsx +0 -184
- package/src/__tests__/input.test.jsx +0 -156
- package/src/__tests__/langs.test.jsx +0 -376
- package/src/__tests__/number-text-field-custom.test.jsx +0 -255
- package/src/__tests__/number-text-field.test.jsx +0 -263
- package/src/__tests__/radio-with-label.test.jsx +0 -155
- package/src/__tests__/settings-panel.test.js +0 -187
- package/src/__tests__/settings.test.jsx +0 -452
- package/src/__tests__/tabs.test.jsx +0 -188
- package/src/__tests__/two-choice.test.js +0 -110
- package/src/__tests__/with-stateful-model.test.jsx +0 -139
- package/src/alert-dialog.jsx +0 -75
- package/src/checkbox.jsx +0 -61
- package/src/choice-configuration/__tests__/feedback-menu.test.jsx +0 -151
- package/src/choice-configuration/__tests__/index.test.jsx +0 -234
- package/src/choice-configuration/feedback-menu.jsx +0 -96
- package/src/choice-configuration/index.jsx +0 -357
- package/src/choice-utils.js +0 -30
- package/src/feedback-config/__tests__/feedback-config.test.jsx +0 -141
- package/src/feedback-config/__tests__/feedback-selector.test.jsx +0 -97
- package/src/feedback-config/feedback-selector.jsx +0 -112
- package/src/feedback-config/group.jsx +0 -51
- package/src/feedback-config/index.jsx +0 -111
- package/src/form-section.jsx +0 -31
- package/src/help.jsx +0 -79
- package/src/index.js +0 -55
- package/src/input.jsx +0 -72
- package/src/inputs.jsx +0 -69
- package/src/langs.jsx +0 -111
- package/src/layout/__tests__/config.layout.test.jsx +0 -59
- package/src/layout/__tests__/layout-content.test.jsx +0 -3
- package/src/layout/config-layout.jsx +0 -103
- package/src/layout/index.js +0 -4
- package/src/layout/layout-contents.jsx +0 -117
- package/src/layout/settings-box.jsx +0 -32
- package/src/mui-box/index.jsx +0 -56
- package/src/number-text-field-custom.jsx +0 -333
- package/src/number-text-field.jsx +0 -215
- package/src/radio-with-label.jsx +0 -30
- package/src/settings/display-size.jsx +0 -53
- package/src/settings/index.js +0 -83
- package/src/settings/panel.jsx +0 -333
- package/src/settings/settings-radio-label.jsx +0 -32
- package/src/settings/toggle.jsx +0 -46
- package/src/tabs/index.jsx +0 -47
- package/src/tags-input/__tests__/index.test.jsx +0 -113
- package/src/tags-input/index.jsx +0 -116
- package/src/two-choice.jsx +0 -90
- package/src/with-stateful-model.jsx +0 -36
|
@@ -1,287 +0,0 @@
|
|
|
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 _feedbackMenu = _interopRequireDefault(require("../feedback-menu"));
|
|
10
|
-
describe('feedback-menu', function () {
|
|
11
|
-
var onChange = jest.fn();
|
|
12
|
-
beforeEach(function () {
|
|
13
|
-
onChange.mockClear();
|
|
14
|
-
});
|
|
15
|
-
describe('rendering', function () {
|
|
16
|
-
it('renders feedback menu with default options', function () {
|
|
17
|
-
var _render = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_feedbackMenu["default"], {
|
|
18
|
-
onChange: onChange,
|
|
19
|
-
classes: {}
|
|
20
|
-
})),
|
|
21
|
-
container = _render.container;
|
|
22
|
-
expect(container.firstChild).toBeInTheDocument();
|
|
23
|
-
});
|
|
24
|
-
it('renders menu with feedback type selector', function () {
|
|
25
|
-
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_feedbackMenu["default"], {
|
|
26
|
-
onChange: onChange,
|
|
27
|
-
value: {
|
|
28
|
-
type: 'default'
|
|
29
|
-
},
|
|
30
|
-
classes: {}
|
|
31
|
-
}));
|
|
32
|
-
// Menu button should be in the document
|
|
33
|
-
expect(_react2.screen.getByRole('button')).toBeInTheDocument();
|
|
34
|
-
});
|
|
35
|
-
it('renders with no feedback type', function () {
|
|
36
|
-
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_feedbackMenu["default"], {
|
|
37
|
-
onChange: onChange,
|
|
38
|
-
value: {
|
|
39
|
-
type: 'none'
|
|
40
|
-
},
|
|
41
|
-
classes: {}
|
|
42
|
-
}));
|
|
43
|
-
expect(_react2.screen.getByRole('button')).toBeInTheDocument();
|
|
44
|
-
});
|
|
45
|
-
it('renders with custom feedback type', function () {
|
|
46
|
-
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_feedbackMenu["default"], {
|
|
47
|
-
onChange: onChange,
|
|
48
|
-
value: {
|
|
49
|
-
type: 'custom'
|
|
50
|
-
},
|
|
51
|
-
classes: {}
|
|
52
|
-
}));
|
|
53
|
-
expect(_react2.screen.getByRole('button')).toBeInTheDocument();
|
|
54
|
-
});
|
|
55
|
-
it('renders feedback icon button', function () {
|
|
56
|
-
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_feedbackMenu["default"], {
|
|
57
|
-
onChange: onChange,
|
|
58
|
-
classes: {}
|
|
59
|
-
}));
|
|
60
|
-
var button = _react2.screen.getByRole('button');
|
|
61
|
-
expect(button).toBeInTheDocument();
|
|
62
|
-
});
|
|
63
|
-
});
|
|
64
|
-
describe('user interactions', function () {
|
|
65
|
-
it('opens menu when button is clicked', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee() {
|
|
66
|
-
var user, button;
|
|
67
|
-
return _regenerator["default"].wrap(function (_context) {
|
|
68
|
-
while (1) switch (_context.prev = _context.next) {
|
|
69
|
-
case 0:
|
|
70
|
-
user = _userEvent["default"].setup();
|
|
71
|
-
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_feedbackMenu["default"], {
|
|
72
|
-
onChange: onChange,
|
|
73
|
-
value: {
|
|
74
|
-
type: 'default'
|
|
75
|
-
},
|
|
76
|
-
classes: {}
|
|
77
|
-
}));
|
|
78
|
-
button = _react2.screen.getByRole('button');
|
|
79
|
-
_context.next = 1;
|
|
80
|
-
return user.click(button);
|
|
81
|
-
case 1:
|
|
82
|
-
// Menu items should appear
|
|
83
|
-
expect(_react2.screen.getByText('No Feedback')).toBeInTheDocument();
|
|
84
|
-
expect(_react2.screen.getByText('Default')).toBeInTheDocument();
|
|
85
|
-
expect(_react2.screen.getByText('Custom')).toBeInTheDocument();
|
|
86
|
-
case 2:
|
|
87
|
-
case "end":
|
|
88
|
-
return _context.stop();
|
|
89
|
-
}
|
|
90
|
-
}, _callee);
|
|
91
|
-
})));
|
|
92
|
-
it('calls onChange with "none" when No Feedback is selected', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee2() {
|
|
93
|
-
var user, button, noFeedbackOption;
|
|
94
|
-
return _regenerator["default"].wrap(function (_context2) {
|
|
95
|
-
while (1) switch (_context2.prev = _context2.next) {
|
|
96
|
-
case 0:
|
|
97
|
-
user = _userEvent["default"].setup();
|
|
98
|
-
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_feedbackMenu["default"], {
|
|
99
|
-
onChange: onChange,
|
|
100
|
-
value: {
|
|
101
|
-
type: 'default'
|
|
102
|
-
},
|
|
103
|
-
classes: {}
|
|
104
|
-
}));
|
|
105
|
-
button = _react2.screen.getByRole('button');
|
|
106
|
-
_context2.next = 1;
|
|
107
|
-
return user.click(button);
|
|
108
|
-
case 1:
|
|
109
|
-
noFeedbackOption = _react2.screen.getByText('No Feedback');
|
|
110
|
-
_context2.next = 2;
|
|
111
|
-
return user.click(noFeedbackOption);
|
|
112
|
-
case 2:
|
|
113
|
-
expect(onChange).toHaveBeenCalledWith('none');
|
|
114
|
-
case 3:
|
|
115
|
-
case "end":
|
|
116
|
-
return _context2.stop();
|
|
117
|
-
}
|
|
118
|
-
}, _callee2);
|
|
119
|
-
})));
|
|
120
|
-
it('calls onChange with "default" when Default is selected', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee3() {
|
|
121
|
-
var user, button, defaultOption;
|
|
122
|
-
return _regenerator["default"].wrap(function (_context3) {
|
|
123
|
-
while (1) switch (_context3.prev = _context3.next) {
|
|
124
|
-
case 0:
|
|
125
|
-
user = _userEvent["default"].setup();
|
|
126
|
-
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_feedbackMenu["default"], {
|
|
127
|
-
onChange: onChange,
|
|
128
|
-
value: {
|
|
129
|
-
type: 'none'
|
|
130
|
-
},
|
|
131
|
-
classes: {}
|
|
132
|
-
}));
|
|
133
|
-
button = _react2.screen.getByRole('button');
|
|
134
|
-
_context3.next = 1;
|
|
135
|
-
return user.click(button);
|
|
136
|
-
case 1:
|
|
137
|
-
defaultOption = _react2.screen.getByText('Default');
|
|
138
|
-
_context3.next = 2;
|
|
139
|
-
return user.click(defaultOption);
|
|
140
|
-
case 2:
|
|
141
|
-
expect(onChange).toHaveBeenCalledWith('default');
|
|
142
|
-
case 3:
|
|
143
|
-
case "end":
|
|
144
|
-
return _context3.stop();
|
|
145
|
-
}
|
|
146
|
-
}, _callee3);
|
|
147
|
-
})));
|
|
148
|
-
it('calls onChange with "custom" when Custom is selected', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee4() {
|
|
149
|
-
var user, button, customOption;
|
|
150
|
-
return _regenerator["default"].wrap(function (_context4) {
|
|
151
|
-
while (1) switch (_context4.prev = _context4.next) {
|
|
152
|
-
case 0:
|
|
153
|
-
user = _userEvent["default"].setup();
|
|
154
|
-
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_feedbackMenu["default"], {
|
|
155
|
-
onChange: onChange,
|
|
156
|
-
value: {
|
|
157
|
-
type: 'none'
|
|
158
|
-
},
|
|
159
|
-
classes: {}
|
|
160
|
-
}));
|
|
161
|
-
button = _react2.screen.getByRole('button');
|
|
162
|
-
_context4.next = 1;
|
|
163
|
-
return user.click(button);
|
|
164
|
-
case 1:
|
|
165
|
-
customOption = _react2.screen.getByText('Custom');
|
|
166
|
-
_context4.next = 2;
|
|
167
|
-
return user.click(customOption);
|
|
168
|
-
case 2:
|
|
169
|
-
expect(onChange).toHaveBeenCalledWith('custom');
|
|
170
|
-
case 3:
|
|
171
|
-
case "end":
|
|
172
|
-
return _context4.stop();
|
|
173
|
-
}
|
|
174
|
-
}, _callee4);
|
|
175
|
-
})));
|
|
176
|
-
it('closes menu after selection', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee5() {
|
|
177
|
-
var user, button, noFeedbackOption;
|
|
178
|
-
return _regenerator["default"].wrap(function (_context5) {
|
|
179
|
-
while (1) switch (_context5.prev = _context5.next) {
|
|
180
|
-
case 0:
|
|
181
|
-
user = _userEvent["default"].setup();
|
|
182
|
-
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_feedbackMenu["default"], {
|
|
183
|
-
onChange: onChange,
|
|
184
|
-
value: {
|
|
185
|
-
type: 'default'
|
|
186
|
-
},
|
|
187
|
-
classes: {}
|
|
188
|
-
}));
|
|
189
|
-
button = _react2.screen.getByRole('button');
|
|
190
|
-
_context5.next = 1;
|
|
191
|
-
return user.click(button);
|
|
192
|
-
case 1:
|
|
193
|
-
expect(_react2.screen.getByText('No Feedback')).toBeInTheDocument();
|
|
194
|
-
noFeedbackOption = _react2.screen.getByText('No Feedback');
|
|
195
|
-
_context5.next = 2;
|
|
196
|
-
return user.click(noFeedbackOption);
|
|
197
|
-
case 2:
|
|
198
|
-
// Menu should close after selection
|
|
199
|
-
expect(onChange).toHaveBeenCalledWith('none');
|
|
200
|
-
case 3:
|
|
201
|
-
case "end":
|
|
202
|
-
return _context5.stop();
|
|
203
|
-
}
|
|
204
|
-
}, _callee5);
|
|
205
|
-
})));
|
|
206
|
-
});
|
|
207
|
-
describe('feedback type indicators', function () {
|
|
208
|
-
it('shows correct icon color for default feedback', function () {
|
|
209
|
-
var _render2 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_feedbackMenu["default"], {
|
|
210
|
-
onChange: onChange,
|
|
211
|
-
value: {
|
|
212
|
-
type: 'default'
|
|
213
|
-
},
|
|
214
|
-
classes: {}
|
|
215
|
-
})),
|
|
216
|
-
container = _render2.container;
|
|
217
|
-
// Icon should be present with primary color
|
|
218
|
-
expect(container.querySelector('svg')).toBeInTheDocument();
|
|
219
|
-
});
|
|
220
|
-
it('shows correct icon color for custom feedback', function () {
|
|
221
|
-
var _render3 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_feedbackMenu["default"], {
|
|
222
|
-
onChange: onChange,
|
|
223
|
-
value: {
|
|
224
|
-
type: 'custom'
|
|
225
|
-
},
|
|
226
|
-
classes: {}
|
|
227
|
-
})),
|
|
228
|
-
container = _render3.container;
|
|
229
|
-
// Icon should be present with primary color
|
|
230
|
-
expect(container.querySelector('svg')).toBeInTheDocument();
|
|
231
|
-
});
|
|
232
|
-
it('shows correct icon color for disabled feedback', function () {
|
|
233
|
-
var _render4 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_feedbackMenu["default"], {
|
|
234
|
-
onChange: onChange,
|
|
235
|
-
value: {
|
|
236
|
-
type: 'none'
|
|
237
|
-
},
|
|
238
|
-
classes: {}
|
|
239
|
-
})),
|
|
240
|
-
container = _render4.container;
|
|
241
|
-
// Icon should be present with disabled color
|
|
242
|
-
expect(container.querySelector('svg')).toBeInTheDocument();
|
|
243
|
-
});
|
|
244
|
-
});
|
|
245
|
-
describe('aria labels', function () {
|
|
246
|
-
it('has aria-label on button for default feedback', function () {
|
|
247
|
-
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_feedbackMenu["default"], {
|
|
248
|
-
onChange: onChange,
|
|
249
|
-
value: {
|
|
250
|
-
type: 'default'
|
|
251
|
-
},
|
|
252
|
-
classes: {}
|
|
253
|
-
}));
|
|
254
|
-
var button = _react2.screen.getByRole('button', {
|
|
255
|
-
name: /Default Feedback/i
|
|
256
|
-
});
|
|
257
|
-
expect(button).toBeInTheDocument();
|
|
258
|
-
});
|
|
259
|
-
it('has aria-label on button for custom feedback', function () {
|
|
260
|
-
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_feedbackMenu["default"], {
|
|
261
|
-
onChange: onChange,
|
|
262
|
-
value: {
|
|
263
|
-
type: 'custom'
|
|
264
|
-
},
|
|
265
|
-
classes: {}
|
|
266
|
-
}));
|
|
267
|
-
var button = _react2.screen.getByRole('button', {
|
|
268
|
-
name: /Custom Feedback/i
|
|
269
|
-
});
|
|
270
|
-
expect(button).toBeInTheDocument();
|
|
271
|
-
});
|
|
272
|
-
it('has aria-label on button for disabled feedback', function () {
|
|
273
|
-
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_feedbackMenu["default"], {
|
|
274
|
-
onChange: onChange,
|
|
275
|
-
value: {
|
|
276
|
-
type: 'none'
|
|
277
|
-
},
|
|
278
|
-
classes: {}
|
|
279
|
-
}));
|
|
280
|
-
var button = _react2.screen.getByRole('button', {
|
|
281
|
-
name: /Feedback disabled/i
|
|
282
|
-
});
|
|
283
|
-
expect(button).toBeInTheDocument();
|
|
284
|
-
});
|
|
285
|
-
});
|
|
286
|
-
});
|
|
287
|
-
//# sourceMappingURL=feedback-menu.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"feedback-menu.test.js","names":["_react","_interopRequireDefault","require","_react2","_userEvent","_feedbackMenu","describe","onChange","jest","fn","beforeEach","mockClear","it","_render","render","createElement","classes","container","expect","firstChild","toBeInTheDocument","value","type","screen","getByRole","button","_asyncToGenerator2","_regenerator","mark","_callee","user","wrap","_context","prev","next","userEvent","setup","click","getByText","stop","_callee2","noFeedbackOption","_context2","toHaveBeenCalledWith","_callee3","defaultOption","_context3","_callee4","customOption","_context4","_callee5","_context5","_render2","querySelector","_render3","_render4","name"],"sources":["../../../src/choice-configuration/__tests__/feedback-menu.test.jsx"],"sourcesContent":["import React from 'react';\nimport { render, screen } from '@testing-library/react';\nimport userEvent from '@testing-library/user-event';\nimport FeedbackMenu from '../feedback-menu';\n\ndescribe('feedback-menu', () => {\n const onChange = jest.fn();\n\n beforeEach(() => {\n onChange.mockClear();\n });\n\n describe('rendering', () => {\n it('renders feedback menu with default options', () => {\n const { container } = render(<FeedbackMenu onChange={onChange} classes={{}} />);\n expect(container.firstChild).toBeInTheDocument();\n });\n\n it('renders menu with feedback type selector', () => {\n render(<FeedbackMenu onChange={onChange} value={{ type: 'default' }} classes={{}} />);\n // Menu button should be in the document\n expect(screen.getByRole('button')).toBeInTheDocument();\n });\n\n it('renders with no feedback type', () => {\n render(<FeedbackMenu onChange={onChange} value={{ type: 'none' }} classes={{}} />);\n expect(screen.getByRole('button')).toBeInTheDocument();\n });\n\n it('renders with custom feedback type', () => {\n render(<FeedbackMenu onChange={onChange} value={{ type: 'custom' }} classes={{}} />);\n expect(screen.getByRole('button')).toBeInTheDocument();\n });\n\n it('renders feedback icon button', () => {\n render(<FeedbackMenu onChange={onChange} classes={{}} />);\n const button = screen.getByRole('button');\n expect(button).toBeInTheDocument();\n });\n });\n\n describe('user interactions', () => {\n it('opens menu when button is clicked', async () => {\n const user = userEvent.setup();\n render(<FeedbackMenu onChange={onChange} value={{ type: 'default' }} classes={{}} />);\n\n const button = screen.getByRole('button');\n await user.click(button);\n\n // Menu items should appear\n expect(screen.getByText('No Feedback')).toBeInTheDocument();\n expect(screen.getByText('Default')).toBeInTheDocument();\n expect(screen.getByText('Custom')).toBeInTheDocument();\n });\n\n it('calls onChange with \"none\" when No Feedback is selected', async () => {\n const user = userEvent.setup();\n render(<FeedbackMenu onChange={onChange} value={{ type: 'default' }} classes={{}} />);\n\n const button = screen.getByRole('button');\n await user.click(button);\n\n const noFeedbackOption = screen.getByText('No Feedback');\n await user.click(noFeedbackOption);\n\n expect(onChange).toHaveBeenCalledWith('none');\n });\n\n it('calls onChange with \"default\" when Default is selected', async () => {\n const user = userEvent.setup();\n render(<FeedbackMenu onChange={onChange} value={{ type: 'none' }} classes={{}} />);\n\n const button = screen.getByRole('button');\n await user.click(button);\n\n const defaultOption = screen.getByText('Default');\n await user.click(defaultOption);\n\n expect(onChange).toHaveBeenCalledWith('default');\n });\n\n it('calls onChange with \"custom\" when Custom is selected', async () => {\n const user = userEvent.setup();\n render(<FeedbackMenu onChange={onChange} value={{ type: 'none' }} classes={{}} />);\n\n const button = screen.getByRole('button');\n await user.click(button);\n\n const customOption = screen.getByText('Custom');\n await user.click(customOption);\n\n expect(onChange).toHaveBeenCalledWith('custom');\n });\n\n it('closes menu after selection', async () => {\n const user = userEvent.setup();\n render(<FeedbackMenu onChange={onChange} value={{ type: 'default' }} classes={{}} />);\n\n const button = screen.getByRole('button');\n await user.click(button);\n\n expect(screen.getByText('No Feedback')).toBeInTheDocument();\n\n const noFeedbackOption = screen.getByText('No Feedback');\n await user.click(noFeedbackOption);\n\n // Menu should close after selection\n expect(onChange).toHaveBeenCalledWith('none');\n });\n });\n\n describe('feedback type indicators', () => {\n it('shows correct icon color for default feedback', () => {\n const { container } = render(<FeedbackMenu onChange={onChange} value={{ type: 'default' }} classes={{}} />);\n // Icon should be present with primary color\n expect(container.querySelector('svg')).toBeInTheDocument();\n });\n\n it('shows correct icon color for custom feedback', () => {\n const { container } = render(<FeedbackMenu onChange={onChange} value={{ type: 'custom' }} classes={{}} />);\n // Icon should be present with primary color\n expect(container.querySelector('svg')).toBeInTheDocument();\n });\n\n it('shows correct icon color for disabled feedback', () => {\n const { container } = render(<FeedbackMenu onChange={onChange} value={{ type: 'none' }} classes={{}} />);\n // Icon should be present with disabled color\n expect(container.querySelector('svg')).toBeInTheDocument();\n });\n });\n\n describe('aria labels', () => {\n it('has aria-label on button for default feedback', () => {\n render(<FeedbackMenu onChange={onChange} value={{ type: 'default' }} classes={{}} />);\n const button = screen.getByRole('button', { name: /Default Feedback/i });\n expect(button).toBeInTheDocument();\n });\n\n it('has aria-label on button for custom feedback', () => {\n render(<FeedbackMenu onChange={onChange} value={{ type: 'custom' }} classes={{}} />);\n const button = screen.getByRole('button', { name: /Custom Feedback/i });\n expect(button).toBeInTheDocument();\n });\n\n it('has aria-label on button for disabled feedback', () => {\n render(<FeedbackMenu onChange={onChange} value={{ type: 'none' }} classes={{}} />);\n const button = screen.getByRole('button', { name: /Feedback disabled/i });\n expect(button).toBeInTheDocument();\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,253 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
5
|
-
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
6
|
-
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
7
|
-
var _react = _interopRequireDefault(require("react"));
|
|
8
|
-
var _react2 = require("@testing-library/react");
|
|
9
|
-
var _userEvent = _interopRequireDefault(require("@testing-library/user-event"));
|
|
10
|
-
var _index = require("../index");
|
|
11
|
-
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; }
|
|
12
|
-
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; }
|
|
13
|
-
jest.mock('@pie-lib/editable-html-tip-tap', function () {
|
|
14
|
-
return {
|
|
15
|
-
__esModule: true,
|
|
16
|
-
"default": function _default(_ref) {
|
|
17
|
-
var markup = _ref.markup,
|
|
18
|
-
_onChange = _ref.onChange,
|
|
19
|
-
disabled = _ref.disabled;
|
|
20
|
-
return /*#__PURE__*/_react["default"].createElement("textarea", {
|
|
21
|
-
"data-testid": "editable-html",
|
|
22
|
-
defaultValue: markup || '',
|
|
23
|
-
onChange: function onChange(e) {
|
|
24
|
-
return _onChange(e.target.value);
|
|
25
|
-
},
|
|
26
|
-
disabled: disabled
|
|
27
|
-
});
|
|
28
|
-
}
|
|
29
|
-
};
|
|
30
|
-
});
|
|
31
|
-
var defaultFeedback = {
|
|
32
|
-
correct: 'Correct',
|
|
33
|
-
incorrect: 'Incorrect'
|
|
34
|
-
};
|
|
35
|
-
var data = {
|
|
36
|
-
correct: true,
|
|
37
|
-
value: 'foo',
|
|
38
|
-
label: 'Foo',
|
|
39
|
-
feedback: {
|
|
40
|
-
type: 'custom'
|
|
41
|
-
}
|
|
42
|
-
};
|
|
43
|
-
var classes = {
|
|
44
|
-
choiceConfiguration: 'choiceConfiguration'
|
|
45
|
-
};
|
|
46
|
-
describe('ChoiceConfiguration', function () {
|
|
47
|
-
var onChange = jest.fn();
|
|
48
|
-
beforeEach(function () {
|
|
49
|
-
onChange.mockClear();
|
|
50
|
-
});
|
|
51
|
-
describe('rendering', function () {
|
|
52
|
-
it('renders correctly with default props', function () {
|
|
53
|
-
var _render = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_index.ChoiceConfiguration, {
|
|
54
|
-
classes: classes,
|
|
55
|
-
defaultFeedback: defaultFeedback,
|
|
56
|
-
data: data,
|
|
57
|
-
onChange: onChange
|
|
58
|
-
})),
|
|
59
|
-
container = _render.container;
|
|
60
|
-
expect(container.firstChild).toBeInTheDocument();
|
|
61
|
-
});
|
|
62
|
-
it('renders with checked state', function () {
|
|
63
|
-
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_index.ChoiceConfiguration, {
|
|
64
|
-
classes: classes,
|
|
65
|
-
defaultFeedback: defaultFeedback,
|
|
66
|
-
data: data,
|
|
67
|
-
onChange: onChange,
|
|
68
|
-
mode: "checkbox"
|
|
69
|
-
}));
|
|
70
|
-
var checkbox = _react2.screen.getByRole('checkbox');
|
|
71
|
-
expect(checkbox).toBeChecked();
|
|
72
|
-
});
|
|
73
|
-
it('renders without feedback when allowFeedBack is false', function () {
|
|
74
|
-
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_index.ChoiceConfiguration, {
|
|
75
|
-
allowFeedBack: false,
|
|
76
|
-
classes: classes,
|
|
77
|
-
defaultFeedback: defaultFeedback,
|
|
78
|
-
data: data,
|
|
79
|
-
onChange: onChange
|
|
80
|
-
}));
|
|
81
|
-
expect(_react2.screen.queryByRole('button', {
|
|
82
|
-
name: /feedback/i
|
|
83
|
-
})).not.toBeInTheDocument();
|
|
84
|
-
});
|
|
85
|
-
it('renders without delete button when allowDelete is false', function () {
|
|
86
|
-
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_index.ChoiceConfiguration, {
|
|
87
|
-
allowDelete: false,
|
|
88
|
-
classes: classes,
|
|
89
|
-
defaultFeedback: defaultFeedback,
|
|
90
|
-
data: data,
|
|
91
|
-
onChange: onChange
|
|
92
|
-
}));
|
|
93
|
-
expect(_react2.screen.queryByRole('button', {
|
|
94
|
-
name: /delete/i
|
|
95
|
-
})).not.toBeInTheDocument();
|
|
96
|
-
});
|
|
97
|
-
});
|
|
98
|
-
describe('user interactions', function () {
|
|
99
|
-
it('calls onChange when label is edited', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee() {
|
|
100
|
-
var user, editableHtmlElements, editableHtml;
|
|
101
|
-
return _regenerator["default"].wrap(function (_context) {
|
|
102
|
-
while (1) switch (_context.prev = _context.next) {
|
|
103
|
-
case 0:
|
|
104
|
-
user = _userEvent["default"].setup();
|
|
105
|
-
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_index.ChoiceConfiguration, {
|
|
106
|
-
classes: classes,
|
|
107
|
-
defaultFeedback: defaultFeedback,
|
|
108
|
-
data: data,
|
|
109
|
-
onChange: onChange
|
|
110
|
-
}));
|
|
111
|
-
editableHtmlElements = _react2.screen.getAllByTestId('editable-html');
|
|
112
|
-
editableHtml = editableHtmlElements[0];
|
|
113
|
-
_context.next = 1;
|
|
114
|
-
return user.clear(editableHtml);
|
|
115
|
-
case 1:
|
|
116
|
-
_context.next = 2;
|
|
117
|
-
return user.type(editableHtml, 'new label');
|
|
118
|
-
case 2:
|
|
119
|
-
expect(onChange).toHaveBeenCalled();
|
|
120
|
-
expect(onChange).toHaveBeenCalledWith(expect.objectContaining({
|
|
121
|
-
label: expect.stringContaining('new label')
|
|
122
|
-
}));
|
|
123
|
-
case 3:
|
|
124
|
-
case "end":
|
|
125
|
-
return _context.stop();
|
|
126
|
-
}
|
|
127
|
-
}, _callee);
|
|
128
|
-
})));
|
|
129
|
-
it('calls onChange when checkbox is toggled', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee2() {
|
|
130
|
-
var user, checkbox;
|
|
131
|
-
return _regenerator["default"].wrap(function (_context2) {
|
|
132
|
-
while (1) switch (_context2.prev = _context2.next) {
|
|
133
|
-
case 0:
|
|
134
|
-
user = _userEvent["default"].setup();
|
|
135
|
-
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_index.ChoiceConfiguration, {
|
|
136
|
-
classes: classes,
|
|
137
|
-
defaultFeedback: defaultFeedback,
|
|
138
|
-
data: _objectSpread(_objectSpread({}, data), {}, {
|
|
139
|
-
correct: false
|
|
140
|
-
}),
|
|
141
|
-
onChange: onChange,
|
|
142
|
-
mode: "checkbox"
|
|
143
|
-
}));
|
|
144
|
-
checkbox = _react2.screen.getByRole('checkbox');
|
|
145
|
-
_context2.next = 1;
|
|
146
|
-
return user.click(checkbox);
|
|
147
|
-
case 1:
|
|
148
|
-
expect(onChange).toHaveBeenCalledWith(expect.objectContaining({
|
|
149
|
-
correct: true
|
|
150
|
-
}));
|
|
151
|
-
case 2:
|
|
152
|
-
case "end":
|
|
153
|
-
return _context2.stop();
|
|
154
|
-
}
|
|
155
|
-
}, _callee2);
|
|
156
|
-
})));
|
|
157
|
-
});
|
|
158
|
-
describe('prop variations', function () {
|
|
159
|
-
it('renders with radio mode instead of checkbox', function () {
|
|
160
|
-
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_index.ChoiceConfiguration, {
|
|
161
|
-
classes: classes,
|
|
162
|
-
defaultFeedback: defaultFeedback,
|
|
163
|
-
data: data,
|
|
164
|
-
onChange: onChange,
|
|
165
|
-
mode: "radio"
|
|
166
|
-
}));
|
|
167
|
-
var radio = _react2.screen.getByRole('radio');
|
|
168
|
-
expect(radio).toBeInTheDocument();
|
|
169
|
-
});
|
|
170
|
-
it('renders with disabled state', function () {
|
|
171
|
-
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_index.ChoiceConfiguration, {
|
|
172
|
-
classes: classes,
|
|
173
|
-
defaultFeedback: defaultFeedback,
|
|
174
|
-
data: data,
|
|
175
|
-
onChange: onChange,
|
|
176
|
-
disabled: true,
|
|
177
|
-
mode: "checkbox"
|
|
178
|
-
}));
|
|
179
|
-
var checkbox = _react2.screen.getByRole('checkbox');
|
|
180
|
-
expect(checkbox).toBeInTheDocument();
|
|
181
|
-
});
|
|
182
|
-
it('renders with custom feedback type', function () {
|
|
183
|
-
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_index.ChoiceConfiguration, {
|
|
184
|
-
classes: classes,
|
|
185
|
-
defaultFeedback: defaultFeedback,
|
|
186
|
-
data: _objectSpread(_objectSpread({}, data), {}, {
|
|
187
|
-
feedback: {
|
|
188
|
-
type: 'custom'
|
|
189
|
-
}
|
|
190
|
-
}),
|
|
191
|
-
onChange: onChange,
|
|
192
|
-
mode: "checkbox"
|
|
193
|
-
}));
|
|
194
|
-
var editableElements = _react2.screen.getAllByTestId('editable-html');
|
|
195
|
-
expect(editableElements.length).toBeGreaterThan(0);
|
|
196
|
-
});
|
|
197
|
-
it('renders with incorrect answer', function () {
|
|
198
|
-
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_index.ChoiceConfiguration, {
|
|
199
|
-
classes: classes,
|
|
200
|
-
defaultFeedback: defaultFeedback,
|
|
201
|
-
data: _objectSpread(_objectSpread({}, data), {}, {
|
|
202
|
-
correct: false
|
|
203
|
-
}),
|
|
204
|
-
onChange: onChange,
|
|
205
|
-
mode: "checkbox"
|
|
206
|
-
}));
|
|
207
|
-
var checkbox = _react2.screen.getByRole('checkbox');
|
|
208
|
-
expect(checkbox).not.toBeChecked();
|
|
209
|
-
});
|
|
210
|
-
});
|
|
211
|
-
describe('edge cases', function () {
|
|
212
|
-
it('handles data with empty label', function () {
|
|
213
|
-
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_index.ChoiceConfiguration, {
|
|
214
|
-
classes: classes,
|
|
215
|
-
defaultFeedback: defaultFeedback,
|
|
216
|
-
data: _objectSpread(_objectSpread({}, data), {}, {
|
|
217
|
-
label: ''
|
|
218
|
-
}),
|
|
219
|
-
onChange: onChange
|
|
220
|
-
}));
|
|
221
|
-
var editableElements = _react2.screen.getAllByTestId('editable-html');
|
|
222
|
-
expect(editableElements.length).toBeGreaterThan(0);
|
|
223
|
-
});
|
|
224
|
-
it('handles multiple feedback types', function () {
|
|
225
|
-
var _render2 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_index.ChoiceConfiguration, {
|
|
226
|
-
classes: classes,
|
|
227
|
-
defaultFeedback: defaultFeedback,
|
|
228
|
-
data: _objectSpread(_objectSpread({}, data), {}, {
|
|
229
|
-
feedback: {
|
|
230
|
-
type: 'default'
|
|
231
|
-
}
|
|
232
|
-
}),
|
|
233
|
-
onChange: onChange
|
|
234
|
-
})),
|
|
235
|
-
rerender = _render2.rerender;
|
|
236
|
-
var editableElements = _react2.screen.getAllByTestId('editable-html');
|
|
237
|
-
expect(editableElements.length).toBeGreaterThan(0);
|
|
238
|
-
rerender(/*#__PURE__*/_react["default"].createElement(_index.ChoiceConfiguration, {
|
|
239
|
-
classes: classes,
|
|
240
|
-
defaultFeedback: defaultFeedback,
|
|
241
|
-
data: _objectSpread(_objectSpread({}, data), {}, {
|
|
242
|
-
feedback: {
|
|
243
|
-
type: 'custom'
|
|
244
|
-
}
|
|
245
|
-
}),
|
|
246
|
-
onChange: onChange
|
|
247
|
-
}));
|
|
248
|
-
editableElements = _react2.screen.getAllByTestId('editable-html');
|
|
249
|
-
expect(editableElements.length).toBeGreaterThan(0);
|
|
250
|
-
});
|
|
251
|
-
});
|
|
252
|
-
});
|
|
253
|
-
//# sourceMappingURL=index.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.test.js","names":["_react","_interopRequireDefault","require","_react2","_userEvent","_index","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","jest","mock","__esModule","default","_ref","markup","onChange","disabled","createElement","defaultValue","target","value","defaultFeedback","correct","incorrect","data","label","feedback","type","classes","choiceConfiguration","describe","fn","beforeEach","mockClear","it","_render","render","ChoiceConfiguration","container","expect","firstChild","toBeInTheDocument","mode","checkbox","screen","getByRole","toBeChecked","allowFeedBack","queryByRole","name","not","allowDelete","_asyncToGenerator2","_regenerator","mark","_callee","user","editableHtmlElements","editableHtml","wrap","_context","prev","next","userEvent","setup","getAllByTestId","clear","toHaveBeenCalled","toHaveBeenCalledWith","objectContaining","stringContaining","stop","_callee2","_context2","click","radio","editableElements","toBeGreaterThan","_render2","rerender"],"sources":["../../../src/choice-configuration/__tests__/index.test.jsx"],"sourcesContent":["import React from 'react';\nimport { render, screen } from '@testing-library/react';\nimport userEvent from '@testing-library/user-event';\nimport { ChoiceConfiguration } from '../index';\n\njest.mock('@pie-lib/editable-html-tip-tap', () => ({\n __esModule: true,\n default: ({ markup, onChange, disabled }) => (\n <textarea\n data-testid=\"editable-html\"\n defaultValue={markup || ''}\n onChange={(e) => onChange(e.target.value)}\n disabled={disabled}\n />\n ),\n}));\n\nconst defaultFeedback = {\n correct: 'Correct',\n incorrect: 'Incorrect',\n};\n\nconst data = {\n correct: true,\n value: 'foo',\n label: 'Foo',\n feedback: {\n type: 'custom',\n },\n};\n\nconst classes = {\n choiceConfiguration: 'choiceConfiguration',\n};\n\ndescribe('ChoiceConfiguration', () => {\n const onChange = jest.fn();\n\n beforeEach(() => {\n onChange.mockClear();\n });\n\n describe('rendering', () => {\n it('renders correctly with default props', () => {\n const { container } = render(\n <ChoiceConfiguration classes={classes} defaultFeedback={defaultFeedback} data={data} onChange={onChange} />,\n );\n expect(container.firstChild).toBeInTheDocument();\n });\n\n it('renders with checked state', () => {\n render(\n <ChoiceConfiguration\n classes={classes}\n defaultFeedback={defaultFeedback}\n data={data}\n onChange={onChange}\n mode=\"checkbox\"\n />,\n );\n const checkbox = screen.getByRole('checkbox');\n expect(checkbox).toBeChecked();\n });\n\n it('renders without feedback when allowFeedBack is false', () => {\n render(\n <ChoiceConfiguration\n allowFeedBack={false}\n classes={classes}\n defaultFeedback={defaultFeedback}\n data={data}\n onChange={onChange}\n />,\n );\n expect(screen.queryByRole('button', { name: /feedback/i })).not.toBeInTheDocument();\n });\n\n it('renders without delete button when allowDelete is false', () => {\n render(\n <ChoiceConfiguration\n allowDelete={false}\n classes={classes}\n defaultFeedback={defaultFeedback}\n data={data}\n onChange={onChange}\n />,\n );\n expect(screen.queryByRole('button', { name: /delete/i })).not.toBeInTheDocument();\n });\n });\n\n describe('user interactions', () => {\n it('calls onChange when label is edited', async () => {\n const user = userEvent.setup();\n render(\n <ChoiceConfiguration classes={classes} defaultFeedback={defaultFeedback} data={data} onChange={onChange} />,\n );\n\n const editableHtmlElements = screen.getAllByTestId('editable-html');\n const editableHtml = editableHtmlElements[0];\n await user.clear(editableHtml);\n await user.type(editableHtml, 'new label');\n\n expect(onChange).toHaveBeenCalled();\n expect(onChange).toHaveBeenCalledWith(\n expect.objectContaining({\n label: expect.stringContaining('new label'),\n }),\n );\n });\n\n it('calls onChange when checkbox is toggled', async () => {\n const user = userEvent.setup();\n render(\n <ChoiceConfiguration\n classes={classes}\n defaultFeedback={defaultFeedback}\n data={{ ...data, correct: false }}\n onChange={onChange}\n mode=\"checkbox\"\n />,\n );\n\n const checkbox = screen.getByRole('checkbox');\n await user.click(checkbox);\n\n expect(onChange).toHaveBeenCalledWith(\n expect.objectContaining({\n correct: true,\n }),\n );\n });\n });\n\n describe('prop variations', () => {\n it('renders with radio mode instead of checkbox', () => {\n render(\n <ChoiceConfiguration\n classes={classes}\n defaultFeedback={defaultFeedback}\n data={data}\n onChange={onChange}\n mode=\"radio\"\n />,\n );\n const radio = screen.getByRole('radio');\n expect(radio).toBeInTheDocument();\n });\n\n it('renders with disabled state', () => {\n render(\n <ChoiceConfiguration\n classes={classes}\n defaultFeedback={defaultFeedback}\n data={data}\n onChange={onChange}\n disabled={true}\n mode=\"checkbox\"\n />,\n );\n const checkbox = screen.getByRole('checkbox');\n expect(checkbox).toBeInTheDocument();\n });\n\n it('renders with custom feedback type', () => {\n render(\n <ChoiceConfiguration\n classes={classes}\n defaultFeedback={defaultFeedback}\n data={{ ...data, feedback: { type: 'custom' } }}\n onChange={onChange}\n mode=\"checkbox\"\n />,\n );\n const editableElements = screen.getAllByTestId('editable-html');\n expect(editableElements.length).toBeGreaterThan(0);\n });\n\n it('renders with incorrect answer', () => {\n render(\n <ChoiceConfiguration\n classes={classes}\n defaultFeedback={defaultFeedback}\n data={{ ...data, correct: false }}\n onChange={onChange}\n mode=\"checkbox\"\n />,\n );\n const checkbox = screen.getByRole('checkbox');\n expect(checkbox).not.toBeChecked();\n });\n });\n\n describe('edge cases', () => {\n it('handles data with empty label', () => {\n render(\n <ChoiceConfiguration\n classes={classes}\n defaultFeedback={defaultFeedback}\n data={{ ...data, label: '' }}\n onChange={onChange}\n />,\n );\n const editableElements = screen.getAllByTestId('editable-html');\n expect(editableElements.length).toBeGreaterThan(0);\n });\n\n it('handles multiple feedback types', () => {\n const { rerender } = render(\n <ChoiceConfiguration\n classes={classes}\n defaultFeedback={defaultFeedback}\n data={{ ...data, feedback: { type: 'default' } }}\n onChange={onChange}\n />,\n );\n\n let editableElements = screen.getAllByTestId('editable-html');\n expect(editableElements.length).toBeGreaterThan(0);\n\n rerender(\n <ChoiceConfiguration\n classes={classes}\n defaultFeedback={defaultFeedback}\n data={{ ...data, feedback: { type: 'custom' } }}\n onChange={onChange}\n />,\n );\n\n editableElements = screen.getAllByTestId('editable-html');\n expect(editableElements.length).toBeGreaterThan(0);\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
|