@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,221 @@
|
|
|
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 _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
7
|
+
var _react = _interopRequireDefault(require("react"));
|
|
8
|
+
var _react2 = require("@testing-library/react");
|
|
9
|
+
var _userEvent = _interopRequireDefault(require("@testing-library/user-event"));
|
|
10
|
+
var _withStatefulModel = _interopRequireDefault(require("../with-stateful-model"));
|
|
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
|
+
var MockComponent = function MockComponent(_ref) {
|
|
14
|
+
var model = _ref.model,
|
|
15
|
+
onChange = _ref.onChange;
|
|
16
|
+
return /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement("div", {
|
|
17
|
+
"data-testid": "model-value"
|
|
18
|
+
}, JSON.stringify(model)), /*#__PURE__*/_react["default"].createElement("button", {
|
|
19
|
+
onClick: function onClick() {
|
|
20
|
+
return onChange(_objectSpread(_objectSpread({}, model), {}, {
|
|
21
|
+
updated: true
|
|
22
|
+
}));
|
|
23
|
+
}
|
|
24
|
+
}, "Update Model"));
|
|
25
|
+
};
|
|
26
|
+
describe('withStatefulModel', function () {
|
|
27
|
+
it('wraps component and passes model and onChange', function () {
|
|
28
|
+
var WrappedComponent = (0, _withStatefulModel["default"])(MockComponent);
|
|
29
|
+
var model = {
|
|
30
|
+
name: 'test'
|
|
31
|
+
};
|
|
32
|
+
var onChange = jest.fn();
|
|
33
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(WrappedComponent, {
|
|
34
|
+
model: model,
|
|
35
|
+
onChange: onChange
|
|
36
|
+
}));
|
|
37
|
+
expect(_react2.screen.getByTestId('model-value')).toBeInTheDocument();
|
|
38
|
+
expect(_react2.screen.getByText(JSON.stringify(model))).toBeInTheDocument();
|
|
39
|
+
});
|
|
40
|
+
it('manages local state with initial model prop', function () {
|
|
41
|
+
var WrappedComponent = (0, _withStatefulModel["default"])(MockComponent);
|
|
42
|
+
var model = {
|
|
43
|
+
id: 1,
|
|
44
|
+
name: 'test'
|
|
45
|
+
};
|
|
46
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(WrappedComponent, {
|
|
47
|
+
model: model,
|
|
48
|
+
onChange: jest.fn()
|
|
49
|
+
}));
|
|
50
|
+
expect(_react2.screen.getByText(JSON.stringify(model))).toBeInTheDocument();
|
|
51
|
+
});
|
|
52
|
+
it('calls onChange with updated model when component calls onChange', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee() {
|
|
53
|
+
var user, WrappedComponent, model, onChange, updateButton;
|
|
54
|
+
return _regenerator["default"].wrap(function (_context) {
|
|
55
|
+
while (1) switch (_context.prev = _context.next) {
|
|
56
|
+
case 0:
|
|
57
|
+
user = _userEvent["default"].setup();
|
|
58
|
+
WrappedComponent = (0, _withStatefulModel["default"])(MockComponent);
|
|
59
|
+
model = {
|
|
60
|
+
name: 'test'
|
|
61
|
+
};
|
|
62
|
+
onChange = jest.fn();
|
|
63
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(WrappedComponent, {
|
|
64
|
+
model: model,
|
|
65
|
+
onChange: onChange
|
|
66
|
+
}));
|
|
67
|
+
updateButton = _react2.screen.getByRole('button', {
|
|
68
|
+
name: /Update Model/i
|
|
69
|
+
});
|
|
70
|
+
_context.next = 1;
|
|
71
|
+
return user.click(updateButton);
|
|
72
|
+
case 1:
|
|
73
|
+
expect(onChange).toHaveBeenCalled();
|
|
74
|
+
expect(onChange).toHaveBeenCalledWith(expect.objectContaining({
|
|
75
|
+
updated: true
|
|
76
|
+
}));
|
|
77
|
+
case 2:
|
|
78
|
+
case "end":
|
|
79
|
+
return _context.stop();
|
|
80
|
+
}
|
|
81
|
+
}, _callee);
|
|
82
|
+
})));
|
|
83
|
+
it('updates internal state when model prop changes', function () {
|
|
84
|
+
var WrappedComponent = (0, _withStatefulModel["default"])(MockComponent);
|
|
85
|
+
var initialModel = {
|
|
86
|
+
name: 'initial'
|
|
87
|
+
};
|
|
88
|
+
var updatedModel = {
|
|
89
|
+
name: 'updated'
|
|
90
|
+
};
|
|
91
|
+
var onChange = jest.fn();
|
|
92
|
+
var _render = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(WrappedComponent, {
|
|
93
|
+
model: initialModel,
|
|
94
|
+
onChange: onChange
|
|
95
|
+
})),
|
|
96
|
+
rerender = _render.rerender;
|
|
97
|
+
expect(_react2.screen.getByText(JSON.stringify(initialModel))).toBeInTheDocument();
|
|
98
|
+
rerender(/*#__PURE__*/_react["default"].createElement(WrappedComponent, {
|
|
99
|
+
model: updatedModel,
|
|
100
|
+
onChange: onChange
|
|
101
|
+
}));
|
|
102
|
+
expect(_react2.screen.getByText(JSON.stringify(updatedModel))).toBeInTheDocument();
|
|
103
|
+
});
|
|
104
|
+
it('maintains state across multiple onChange calls', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee2() {
|
|
105
|
+
var user, WrappedComponent, model, onChange, updateButton;
|
|
106
|
+
return _regenerator["default"].wrap(function (_context2) {
|
|
107
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
108
|
+
case 0:
|
|
109
|
+
user = _userEvent["default"].setup();
|
|
110
|
+
WrappedComponent = (0, _withStatefulModel["default"])(MockComponent);
|
|
111
|
+
model = {
|
|
112
|
+
count: 0
|
|
113
|
+
};
|
|
114
|
+
onChange = jest.fn();
|
|
115
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(WrappedComponent, {
|
|
116
|
+
model: model,
|
|
117
|
+
onChange: onChange
|
|
118
|
+
}));
|
|
119
|
+
updateButton = _react2.screen.getByRole('button', {
|
|
120
|
+
name: /Update Model/i
|
|
121
|
+
});
|
|
122
|
+
_context2.next = 1;
|
|
123
|
+
return user.click(updateButton);
|
|
124
|
+
case 1:
|
|
125
|
+
expect(onChange).toHaveBeenCalledTimes(1);
|
|
126
|
+
_context2.next = 2;
|
|
127
|
+
return user.click(updateButton);
|
|
128
|
+
case 2:
|
|
129
|
+
expect(onChange).toHaveBeenCalledTimes(2);
|
|
130
|
+
case 3:
|
|
131
|
+
case "end":
|
|
132
|
+
return _context2.stop();
|
|
133
|
+
}
|
|
134
|
+
}, _callee2);
|
|
135
|
+
})));
|
|
136
|
+
it('passes updated model state to onChange callback', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee3() {
|
|
137
|
+
var user, WrappedComponent, model, onChange, updateButton, lastCall;
|
|
138
|
+
return _regenerator["default"].wrap(function (_context3) {
|
|
139
|
+
while (1) switch (_context3.prev = _context3.next) {
|
|
140
|
+
case 0:
|
|
141
|
+
user = _userEvent["default"].setup();
|
|
142
|
+
WrappedComponent = (0, _withStatefulModel["default"])(MockComponent);
|
|
143
|
+
model = {
|
|
144
|
+
value: 'original'
|
|
145
|
+
};
|
|
146
|
+
onChange = jest.fn();
|
|
147
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(WrappedComponent, {
|
|
148
|
+
model: model,
|
|
149
|
+
onChange: onChange
|
|
150
|
+
}));
|
|
151
|
+
updateButton = _react2.screen.getByRole('button', {
|
|
152
|
+
name: /Update Model/i
|
|
153
|
+
});
|
|
154
|
+
_context3.next = 1;
|
|
155
|
+
return user.click(updateButton);
|
|
156
|
+
case 1:
|
|
157
|
+
lastCall = onChange.mock.calls[onChange.mock.calls.length - 1];
|
|
158
|
+
expect(lastCall[0]).toHaveProperty('updated', true);
|
|
159
|
+
expect(lastCall[0]).toHaveProperty('value', 'original');
|
|
160
|
+
case 2:
|
|
161
|
+
case "end":
|
|
162
|
+
return _context3.stop();
|
|
163
|
+
}
|
|
164
|
+
}, _callee3);
|
|
165
|
+
})));
|
|
166
|
+
it('handles empty model object', function () {
|
|
167
|
+
var WrappedComponent = (0, _withStatefulModel["default"])(MockComponent);
|
|
168
|
+
var model = {};
|
|
169
|
+
var onChange = jest.fn();
|
|
170
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(WrappedComponent, {
|
|
171
|
+
model: model,
|
|
172
|
+
onChange: onChange
|
|
173
|
+
}));
|
|
174
|
+
expect(_react2.screen.getByText(JSON.stringify(model))).toBeInTheDocument();
|
|
175
|
+
});
|
|
176
|
+
it('handles model with nested properties', function () {
|
|
177
|
+
var WrappedComponent = (0, _withStatefulModel["default"])(MockComponent);
|
|
178
|
+
var model = {
|
|
179
|
+
user: {
|
|
180
|
+
name: 'John',
|
|
181
|
+
age: 30
|
|
182
|
+
},
|
|
183
|
+
settings: {
|
|
184
|
+
theme: 'dark'
|
|
185
|
+
}
|
|
186
|
+
};
|
|
187
|
+
var onChange = jest.fn();
|
|
188
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(WrappedComponent, {
|
|
189
|
+
model: model,
|
|
190
|
+
onChange: onChange
|
|
191
|
+
}));
|
|
192
|
+
expect(_react2.screen.getByText(JSON.stringify(model))).toBeInTheDocument();
|
|
193
|
+
});
|
|
194
|
+
it('requires model and onChange props', function () {
|
|
195
|
+
var WrappedComponent = (0, _withStatefulModel["default"])(MockComponent);
|
|
196
|
+
var consoleSpy = jest.spyOn(console, 'error').mockImplementation();
|
|
197
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(WrappedComponent, {
|
|
198
|
+
model: {
|
|
199
|
+
test: 'data'
|
|
200
|
+
},
|
|
201
|
+
onChange: jest.fn()
|
|
202
|
+
}));
|
|
203
|
+
expect(_react2.screen.getByTestId('model-value')).toBeInTheDocument();
|
|
204
|
+
consoleSpy.mockRestore();
|
|
205
|
+
});
|
|
206
|
+
it('renders wrapped component with correct props structure', function () {
|
|
207
|
+
var WrappedComponent = (0, _withStatefulModel["default"])(MockComponent);
|
|
208
|
+
var model = {
|
|
209
|
+
id: 1
|
|
210
|
+
};
|
|
211
|
+
var onChange = jest.fn();
|
|
212
|
+
var _render2 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(WrappedComponent, {
|
|
213
|
+
model: model,
|
|
214
|
+
onChange: onChange
|
|
215
|
+
})),
|
|
216
|
+
container = _render2.container;
|
|
217
|
+
expect(container.querySelector('[data-testid="model-value"]')).toBeInTheDocument();
|
|
218
|
+
expect(container.querySelector('button')).toBeInTheDocument();
|
|
219
|
+
});
|
|
220
|
+
});
|
|
221
|
+
//# sourceMappingURL=with-stateful-model.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"with-stateful-model.test.js","names":["_react","_interopRequireDefault","require","_react2","_userEvent","_withStatefulModel","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","MockComponent","_ref","model","onChange","createElement","JSON","stringify","onClick","updated","describe","it","WrappedComponent","withStatefulModel","name","jest","fn","render","expect","screen","getByTestId","toBeInTheDocument","getByText","id","_asyncToGenerator2","_regenerator","mark","_callee","user","updateButton","wrap","_context","prev","next","userEvent","setup","getByRole","click","toHaveBeenCalled","toHaveBeenCalledWith","objectContaining","stop","initialModel","updatedModel","_render","rerender","_callee2","_context2","count","toHaveBeenCalledTimes","_callee3","lastCall","_context3","value","mock","calls","toHaveProperty","age","settings","theme","consoleSpy","spyOn","console","mockImplementation","test","mockRestore","_render2","container","querySelector"],"sources":["../../src/__tests__/with-stateful-model.test.jsx"],"sourcesContent":["import React from 'react';\nimport { render, screen } from '@testing-library/react';\nimport userEvent from '@testing-library/user-event';\nimport withStatefulModel from '../with-stateful-model';\n\nconst MockComponent = ({ model, onChange }) => (\n <div>\n <div data-testid=\"model-value\">{JSON.stringify(model)}</div>\n <button onClick={() => onChange({ ...model, updated: true })}>Update Model</button>\n </div>\n);\n\ndescribe('withStatefulModel', () => {\n it('wraps component and passes model and onChange', () => {\n const WrappedComponent = withStatefulModel(MockComponent);\n const model = { name: 'test' };\n const onChange = jest.fn();\n\n render(<WrappedComponent model={model} onChange={onChange} />);\n\n expect(screen.getByTestId('model-value')).toBeInTheDocument();\n expect(screen.getByText(JSON.stringify(model))).toBeInTheDocument();\n });\n\n it('manages local state with initial model prop', () => {\n const WrappedComponent = withStatefulModel(MockComponent);\n const model = { id: 1, name: 'test' };\n\n render(<WrappedComponent model={model} onChange={jest.fn()} />);\n\n expect(screen.getByText(JSON.stringify(model))).toBeInTheDocument();\n });\n\n it('calls onChange with updated model when component calls onChange', async () => {\n const user = userEvent.setup();\n const WrappedComponent = withStatefulModel(MockComponent);\n const model = { name: 'test' };\n const onChange = jest.fn();\n\n render(<WrappedComponent model={model} onChange={onChange} />);\n\n const updateButton = screen.getByRole('button', { name: /Update Model/i });\n await user.click(updateButton);\n\n expect(onChange).toHaveBeenCalled();\n expect(onChange).toHaveBeenCalledWith(expect.objectContaining({ updated: true }));\n });\n\n it('updates internal state when model prop changes', () => {\n const WrappedComponent = withStatefulModel(MockComponent);\n const initialModel = { name: 'initial' };\n const updatedModel = { name: 'updated' };\n const onChange = jest.fn();\n\n const { rerender } = render(<WrappedComponent model={initialModel} onChange={onChange} />);\n\n expect(screen.getByText(JSON.stringify(initialModel))).toBeInTheDocument();\n\n rerender(<WrappedComponent model={updatedModel} onChange={onChange} />);\n\n expect(screen.getByText(JSON.stringify(updatedModel))).toBeInTheDocument();\n });\n\n it('maintains state across multiple onChange calls', async () => {\n const user = userEvent.setup();\n const WrappedComponent = withStatefulModel(MockComponent);\n const model = { count: 0 };\n const onChange = jest.fn();\n\n render(<WrappedComponent model={model} onChange={onChange} />);\n\n const updateButton = screen.getByRole('button', { name: /Update Model/i });\n\n await user.click(updateButton);\n expect(onChange).toHaveBeenCalledTimes(1);\n\n await user.click(updateButton);\n expect(onChange).toHaveBeenCalledTimes(2);\n });\n\n it('passes updated model state to onChange callback', async () => {\n const user = userEvent.setup();\n const WrappedComponent = withStatefulModel(MockComponent);\n const model = { value: 'original' };\n const onChange = jest.fn();\n\n render(<WrappedComponent model={model} onChange={onChange} />);\n\n const updateButton = screen.getByRole('button', { name: /Update Model/i });\n await user.click(updateButton);\n\n const lastCall = onChange.mock.calls[onChange.mock.calls.length - 1];\n expect(lastCall[0]).toHaveProperty('updated', true);\n expect(lastCall[0]).toHaveProperty('value', 'original');\n });\n\n it('handles empty model object', () => {\n const WrappedComponent = withStatefulModel(MockComponent);\n const model = {};\n const onChange = jest.fn();\n\n render(<WrappedComponent model={model} onChange={onChange} />);\n\n expect(screen.getByText(JSON.stringify(model))).toBeInTheDocument();\n });\n\n it('handles model with nested properties', () => {\n const WrappedComponent = withStatefulModel(MockComponent);\n const model = { user: { name: 'John', age: 30 }, settings: { theme: 'dark' } };\n const onChange = jest.fn();\n\n render(<WrappedComponent model={model} onChange={onChange} />);\n\n expect(screen.getByText(JSON.stringify(model))).toBeInTheDocument();\n });\n\n it('requires model and onChange props', () => {\n const WrappedComponent = withStatefulModel(MockComponent);\n\n const consoleSpy = jest.spyOn(console, 'error').mockImplementation();\n\n render(<WrappedComponent model={{ test: 'data' }} onChange={jest.fn()} />);\n\n expect(screen.getByTestId('model-value')).toBeInTheDocument();\n\n consoleSpy.mockRestore();\n });\n\n it('renders wrapped component with correct props structure', () => {\n const WrappedComponent = withStatefulModel(MockComponent);\n const model = { id: 1 };\n const onChange = jest.fn();\n\n const { container } = render(<WrappedComponent model={model} onChange={onChange} />);\n\n expect(container.querySelector('[data-testid=\"model-value\"]')).toBeInTheDocument();\n expect(container.querySelector('button')).toBeInTheDocument();\n });\n});\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,287 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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":[]}
|