@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 @@
|
|
|
1
|
+
{"version":3,"file":"settings.test.js","names":["_react","_interopRequireDefault","require","_react2","_userEvent","_toggle","_displaySize","_settingsRadioLabel","_panel","describe","it","toggle","jest","fn","render","createElement","label","checked","expect","screen","getByText","toBeInTheDocument","defaultProps","size","width","height","onChange","beforeEach","clearAllMocks","getByLabelText","widthInput","heightInput","toHaveValue","_asyncToGenerator2","_regenerator","mark","_callee","user","wrap","_context","prev","next","userEvent","setup","_extends2","clear","type","fireEvent","blur","toHaveBeenCalledWith","objectContaining","stop","_callee2","_context2","_callee3","_context3","_callee4","_context4","_callee5","_context5","_render","rerender","_callee6","_context6","_callee7","_context7","_callee8","_context8","_callee9","_context9","_callee0","_context0","toHaveBeenCalled","_callee1","_context1","_render2","container","inputs","querySelectorAll","length","toBe","value","getByRole","radio","toBeChecked","not","_callee10","_context10","click","labelText","model","toggleSetting","numberValue","configuration","configValue","groups","onChangeModel","onChangeConfiguration","Panel","_render3","undefined","firstChild","children","_render4","_callee11","_render5","switchElement","_context11","querySelector","_callee12","_render6","_context12","isConfigProperty","modal","getByTestId","setting1","setting2","_render7","test","_render8","queryByText","_render9"],"sources":["../../src/__tests__/settings.test.jsx"],"sourcesContent":["import React from 'react';\nimport { fireEvent, render, screen } from '@testing-library/react';\nimport userEvent from '@testing-library/user-event';\nimport Toggle from '../settings/toggle';\nimport DisplaySize from '../settings/display-size';\nimport SettingsRadioLabel from '../settings/settings-radio-label';\nimport { Panel } from '../settings/panel';\n\ndescribe('Settings Components', () => {\n describe('Toggle', () => {\n it('renders toggle with label', () => {\n const toggle = jest.fn();\n render(<Toggle label=\"Enable Feature\" checked={false} toggle={toggle} />);\n\n expect(screen.getByText('Enable Feature')).toBeInTheDocument();\n });\n });\n\n describe('DisplaySize', () => {\n const defaultProps = {\n size: { width: 500, height: 400 },\n label: 'Display Size',\n onChange: jest.fn(),\n };\n\n beforeEach(() => {\n jest.clearAllMocks();\n });\n\n it('renders label and input fields', () => {\n render(<DisplaySize {...defaultProps} />);\n\n expect(screen.getByText('Display Size')).toBeInTheDocument();\n expect(screen.getByLabelText('Width')).toBeInTheDocument();\n expect(screen.getByLabelText('Height')).toBeInTheDocument();\n });\n\n it('displays width and height values', () => {\n render(<DisplaySize {...defaultProps} />);\n\n const widthInput = screen.getByLabelText('Width');\n const heightInput = screen.getByLabelText('Height');\n\n expect(widthInput).toHaveValue(500);\n expect(heightInput).toHaveValue(400);\n });\n\n it('calls onChange when width changes', async () => {\n const user = userEvent.setup();\n const onChange = jest.fn();\n render(<DisplaySize {...defaultProps} onChange={onChange} />);\n\n const widthInput = screen.getByLabelText('Width');\n await user.clear(widthInput);\n await user.type(widthInput, '600');\n fireEvent.blur(widthInput);\n\n expect(onChange).toHaveBeenCalledWith(expect.objectContaining({ width: 600 }));\n });\n\n it('calls onChange when height changes', async () => {\n const user = userEvent.setup();\n const onChange = jest.fn();\n render(<DisplaySize {...defaultProps} onChange={onChange} />);\n\n const heightInput = screen.getByLabelText('Height');\n await user.clear(heightInput);\n await user.type(heightInput, '500');\n fireEvent.blur(heightInput);\n\n expect(onChange).toHaveBeenCalledWith(expect.objectContaining({ height: 500 }));\n });\n\n it('maintains other dimension when one changes', async () => {\n const user = userEvent.setup();\n const onChange = jest.fn();\n render(<DisplaySize {...defaultProps} onChange={onChange} />);\n\n const widthInput = screen.getByLabelText('Width');\n await user.clear(widthInput);\n await user.type(widthInput, '700');\n fireEvent.blur(widthInput);\n\n expect(onChange).toHaveBeenCalledWith({\n width: 700,\n height: 400,\n });\n });\n\n it('enforces min value constraint', async () => {\n const user = userEvent.setup();\n const onChange = jest.fn();\n render(<DisplaySize {...defaultProps} onChange={onChange} />);\n\n const widthInput = screen.getByLabelText('Width');\n await user.clear(widthInput);\n await user.type(widthInput, '100');\n fireEvent.blur(widthInput);\n\n // Should clamp to minimum 150\n expect(widthInput).toHaveValue(150);\n });\n\n it('enforces max value constraint', async () => {\n const user = userEvent.setup();\n const onChange = jest.fn();\n render(<DisplaySize {...defaultProps} onChange={onChange} />);\n\n const widthInput = screen.getByLabelText('Width');\n await user.clear(widthInput);\n await user.type(widthInput, '2000');\n fireEvent.blur(widthInput);\n\n // Should clamp to maximum 1000\n expect(widthInput).toHaveValue(1000);\n });\n\n it('updates when size prop changes', () => {\n const { rerender } = render(<DisplaySize {...defaultProps} />);\n\n let widthInput = screen.getByLabelText('Width');\n expect(widthInput).toHaveValue(500);\n\n rerender(<DisplaySize {...defaultProps} size={{ width: 800, height: 600 }} />);\n\n widthInput = screen.getByLabelText('Width');\n expect(widthInput).toHaveValue(800);\n });\n\n it('handles boundary values at minimum', async () => {\n const user = userEvent.setup();\n const onChange = jest.fn();\n render(<DisplaySize {...defaultProps} onChange={onChange} />);\n\n const widthInput = screen.getByLabelText('Width');\n const heightInput = screen.getByLabelText('Height');\n\n await user.clear(widthInput);\n await user.type(widthInput, '150');\n fireEvent.blur(widthInput);\n\n await user.clear(heightInput);\n await user.type(heightInput, '150');\n fireEvent.blur(heightInput);\n\n expect(widthInput).toHaveValue(150);\n expect(heightInput).toHaveValue(150);\n });\n\n it('handles boundary values at maximum', async () => {\n const user = userEvent.setup();\n const onChange = jest.fn();\n render(<DisplaySize {...defaultProps} onChange={onChange} />);\n\n const widthInput = screen.getByLabelText('Width');\n const heightInput = screen.getByLabelText('Height');\n\n await user.clear(widthInput);\n await user.type(widthInput, '1000');\n fireEvent.blur(widthInput);\n\n await user.clear(heightInput);\n await user.type(heightInput, '1000');\n fireEvent.blur(heightInput);\n\n expect(widthInput).toHaveValue(1000);\n expect(heightInput).toHaveValue(1000);\n });\n\n it('handles decimal input values', async () => {\n const user = userEvent.setup();\n const onChange = jest.fn();\n render(<DisplaySize {...defaultProps} onChange={onChange} />);\n\n const widthInput = screen.getByLabelText('Width');\n await user.clear(widthInput);\n await user.type(widthInput, '500.5');\n fireEvent.blur(widthInput);\n\n expect(widthInput).toBeInTheDocument();\n });\n\n it('handles empty input and resets to min', async () => {\n const user = userEvent.setup();\n const onChange = jest.fn();\n render(<DisplaySize {...defaultProps} onChange={onChange} />);\n\n const widthInput = screen.getByLabelText('Width');\n await user.clear(widthInput);\n fireEvent.blur(widthInput);\n\n // Should reset to minimum value\n expect(widthInput).toHaveValue(150);\n });\n\n it('handles rapid width and height changes', async () => {\n const user = userEvent.setup();\n const onChange = jest.fn();\n render(<DisplaySize {...defaultProps} onChange={onChange} />);\n\n const widthInput = screen.getByLabelText('Width');\n\n await user.clear(widthInput);\n await user.type(widthInput, '6');\n await user.type(widthInput, '0');\n await user.type(widthInput, '0');\n fireEvent.blur(widthInput);\n\n expect(onChange).toHaveBeenCalled();\n });\n\n it('clamps height at both boundaries', async () => {\n const user = userEvent.setup();\n const onChange = jest.fn();\n render(<DisplaySize {...defaultProps} onChange={onChange} />);\n\n const heightInput = screen.getByLabelText('Height');\n\n // Test below min\n await user.clear(heightInput);\n await user.type(heightInput, '50');\n fireEvent.blur(heightInput);\n expect(heightInput).toHaveValue(150);\n\n // Test above max\n await user.clear(heightInput);\n await user.type(heightInput, '2500');\n fireEvent.blur(heightInput);\n expect(heightInput).toHaveValue(1000);\n });\n\n it('displays custom label text', () => {\n render(<DisplaySize size={{ width: 500, height: 400 }} label=\"Custom Size Settings\" onChange={jest.fn()} />);\n\n expect(screen.getByText('Custom Size Settings')).toBeInTheDocument();\n });\n\n it('renders with variant outlined', () => {\n const { container } = render(<DisplaySize {...defaultProps} />);\n\n const inputs = container.querySelectorAll('input');\n expect(inputs.length).toBe(2);\n });\n });\n\n describe('SettingsRadioLabel', () => {\n it('renders radio label', () => {\n const onChange = jest.fn();\n render(<SettingsRadioLabel 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('renders checked state', () => {\n const onChange = jest.fn();\n render(<SettingsRadioLabel label=\"Option 1\" value=\"option1\" checked={true} onChange={onChange} />);\n\n const radio = screen.getByRole('radio');\n expect(radio).toBeChecked();\n });\n\n it('renders unchecked state', () => {\n const onChange = jest.fn();\n render(<SettingsRadioLabel label=\"Option 1\" value=\"option1\" checked={false} onChange={onChange} />);\n\n const radio = screen.getByRole('radio');\n expect(radio).not.toBeChecked();\n });\n\n it('calls onChange when radio is clicked', async () => {\n const user = userEvent.setup();\n const onChange = jest.fn();\n render(<SettingsRadioLabel label=\"Option 1\" value=\"option1\" 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('displays label text correctly', () => {\n const onChange = jest.fn();\n const labelText = 'Custom Option Label';\n render(<SettingsRadioLabel label={labelText} value=\"custom\" checked={false} onChange={onChange} />);\n\n expect(screen.getByText(labelText)).toBeInTheDocument();\n });\n });\n\n describe('Panel', () => {\n const defaultProps = {\n model: { toggleSetting: true, numberValue: 5 },\n configuration: { configValue: 'test' },\n groups: {\n 'General Settings': {\n toggleSetting: {\n type: 'toggle',\n label: 'Enable Feature',\n },\n },\n },\n onChangeModel: jest.fn(),\n onChangeConfiguration: jest.fn(),\n };\n\n beforeEach(() => {\n jest.clearAllMocks();\n });\n\n it('renders panel with group label', () => {\n render(<Panel {...defaultProps} />);\n expect(screen.getByText('General Settings')).toBeInTheDocument();\n });\n\n it('renders empty when groups is undefined', () => {\n const { container } = render(<Panel {...defaultProps} groups={undefined} />);\n expect(container.firstChild.children.length).toBe(0);\n });\n\n it('renders empty when groups is empty', () => {\n const { container } = render(<Panel {...defaultProps} groups={{}} />);\n expect(container.firstChild.children.length).toBe(0);\n });\n\n it('calls onChangeModel when model changes', async () => {\n const user = userEvent.setup();\n const onChangeModel = jest.fn();\n const { container } = render(<Panel {...defaultProps} onChangeModel={onChangeModel} />);\n\n const switchElement = container.querySelector('input[type=\"checkbox\"]');\n await user.click(switchElement);\n\n expect(onChangeModel).toHaveBeenCalled();\n });\n\n it('calls onChangeConfiguration when configuration changes', async () => {\n const user = userEvent.setup();\n const onChangeConfiguration = jest.fn();\n const { container } = render(\n <Panel\n {...defaultProps}\n groups={{\n 'Config Group': {\n configValue: {\n type: 'toggle',\n label: 'Config Toggle',\n isConfigProperty: true,\n },\n },\n }}\n onChangeConfiguration={onChangeConfiguration}\n />,\n );\n\n const switchElement = container.querySelector('input[type=\"checkbox\"]');\n await user.click(switchElement);\n\n expect(onChangeConfiguration).toHaveBeenCalled();\n });\n\n it('renders with modal when provided', () => {\n const modal = <div data-testid=\"test-modal\">Modal Content</div>;\n render(<Panel {...defaultProps} modal={modal} />);\n\n expect(screen.getByTestId('test-modal')).toBeInTheDocument();\n expect(screen.getByText('Modal Content')).toBeInTheDocument();\n });\n\n it('renders multiple groups', () => {\n render(\n <Panel\n {...defaultProps}\n groups={{\n 'Group One': {\n setting1: {\n type: 'toggle',\n label: 'Setting One',\n },\n },\n 'Group Two': {\n setting2: {\n type: 'toggle',\n label: 'Setting Two',\n },\n },\n }}\n model={{ setting1: true, setting2: false }}\n />,\n );\n\n expect(screen.getByText('Group One')).toBeInTheDocument();\n expect(screen.getByText('Group Two')).toBeInTheDocument();\n });\n\n it('uses default callbacks when not provided', () => {\n const { container } = render(\n <Panel\n model={{ test: true }}\n groups={{\n 'Test Group': {\n test: { type: 'toggle', label: 'Test' },\n },\n }}\n />,\n );\n\n expect(container.firstChild).toBeInTheDocument();\n });\n\n it('filters out empty groups', () => {\n const { container } = render(\n <Panel\n {...defaultProps}\n groups={{\n 'Empty Group': {},\n 'General Settings': {\n toggleSetting: {\n type: 'toggle',\n label: 'Enable Feature',\n },\n },\n }}\n model={{ toggleSetting: true }}\n />,\n );\n\n expect(screen.getByText('General Settings')).toBeInTheDocument();\n expect(screen.queryByText('Empty Group')).not.toBeInTheDocument();\n });\n\n it('renders with null model', () => {\n const { container } = render(\n <Panel\n model={null}\n configuration={{}}\n groups={{\n 'General Settings': {\n toggleSetting: {\n type: 'toggle',\n label: 'Enable Feature',\n },\n },\n }}\n onChangeModel={jest.fn()}\n />,\n );\n\n expect(screen.getByText('General Settings')).toBeInTheDocument();\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,211 @@
|
|
|
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 _tabs = require("../tabs");
|
|
10
|
+
describe('Tabs Component', function () {
|
|
11
|
+
it('renders tabs with correct titles', function () {
|
|
12
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_tabs.Tabs, null, /*#__PURE__*/_react["default"].createElement("div", {
|
|
13
|
+
title: "Tab 1"
|
|
14
|
+
}, "Content 1"), /*#__PURE__*/_react["default"].createElement("div", {
|
|
15
|
+
title: "Tab 2"
|
|
16
|
+
}, "Content 2"), /*#__PURE__*/_react["default"].createElement("div", {
|
|
17
|
+
title: "Tab 3"
|
|
18
|
+
}, "Content 3")));
|
|
19
|
+
expect(_react2.screen.getByText('Tab 1')).toBeInTheDocument();
|
|
20
|
+
expect(_react2.screen.getByText('Tab 2')).toBeInTheDocument();
|
|
21
|
+
expect(_react2.screen.getByText('Tab 3')).toBeInTheDocument();
|
|
22
|
+
});
|
|
23
|
+
it('renders first tab content by default', function () {
|
|
24
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_tabs.Tabs, null, /*#__PURE__*/_react["default"].createElement("div", {
|
|
25
|
+
title: "Tab 1"
|
|
26
|
+
}, "Content 1"), /*#__PURE__*/_react["default"].createElement("div", {
|
|
27
|
+
title: "Tab 2"
|
|
28
|
+
}, "Content 2"), /*#__PURE__*/_react["default"].createElement("div", {
|
|
29
|
+
title: "Tab 3"
|
|
30
|
+
}, "Content 3")));
|
|
31
|
+
expect(_react2.screen.getByText('Content 1')).toBeInTheDocument();
|
|
32
|
+
expect(_react2.screen.queryByText('Content 2')).not.toBeInTheDocument();
|
|
33
|
+
expect(_react2.screen.queryByText('Content 3')).not.toBeInTheDocument();
|
|
34
|
+
});
|
|
35
|
+
it('switches to selected tab when clicked', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee() {
|
|
36
|
+
var user, tab2;
|
|
37
|
+
return _regenerator["default"].wrap(function (_context) {
|
|
38
|
+
while (1) switch (_context.prev = _context.next) {
|
|
39
|
+
case 0:
|
|
40
|
+
user = _userEvent["default"].setup();
|
|
41
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_tabs.Tabs, null, /*#__PURE__*/_react["default"].createElement("div", {
|
|
42
|
+
title: "Tab 1"
|
|
43
|
+
}, "Content 1"), /*#__PURE__*/_react["default"].createElement("div", {
|
|
44
|
+
title: "Tab 2"
|
|
45
|
+
}, "Content 2"), /*#__PURE__*/_react["default"].createElement("div", {
|
|
46
|
+
title: "Tab 3"
|
|
47
|
+
}, "Content 3")));
|
|
48
|
+
tab2 = _react2.screen.getByRole('tab', {
|
|
49
|
+
name: 'Tab 2'
|
|
50
|
+
});
|
|
51
|
+
_context.next = 1;
|
|
52
|
+
return user.click(tab2);
|
|
53
|
+
case 1:
|
|
54
|
+
expect(_react2.screen.queryByText('Content 1')).not.toBeInTheDocument();
|
|
55
|
+
expect(_react2.screen.getByText('Content 2')).toBeInTheDocument();
|
|
56
|
+
expect(_react2.screen.queryByText('Content 3')).not.toBeInTheDocument();
|
|
57
|
+
case 2:
|
|
58
|
+
case "end":
|
|
59
|
+
return _context.stop();
|
|
60
|
+
}
|
|
61
|
+
}, _callee);
|
|
62
|
+
})));
|
|
63
|
+
it('displays correct content when multiple tabs are clicked', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee2() {
|
|
64
|
+
var user;
|
|
65
|
+
return _regenerator["default"].wrap(function (_context2) {
|
|
66
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
67
|
+
case 0:
|
|
68
|
+
user = _userEvent["default"].setup();
|
|
69
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_tabs.Tabs, null, /*#__PURE__*/_react["default"].createElement("div", {
|
|
70
|
+
title: "Tab 1"
|
|
71
|
+
}, "Content 1"), /*#__PURE__*/_react["default"].createElement("div", {
|
|
72
|
+
title: "Tab 2"
|
|
73
|
+
}, "Content 2"), /*#__PURE__*/_react["default"].createElement("div", {
|
|
74
|
+
title: "Tab 3"
|
|
75
|
+
}, "Content 3")));
|
|
76
|
+
_context2.next = 1;
|
|
77
|
+
return user.click(_react2.screen.getByRole('tab', {
|
|
78
|
+
name: 'Tab 2'
|
|
79
|
+
}));
|
|
80
|
+
case 1:
|
|
81
|
+
expect(_react2.screen.getByText('Content 2')).toBeInTheDocument();
|
|
82
|
+
_context2.next = 2;
|
|
83
|
+
return user.click(_react2.screen.getByRole('tab', {
|
|
84
|
+
name: 'Tab 3'
|
|
85
|
+
}));
|
|
86
|
+
case 2:
|
|
87
|
+
expect(_react2.screen.getByText('Content 3')).toBeInTheDocument();
|
|
88
|
+
_context2.next = 3;
|
|
89
|
+
return user.click(_react2.screen.getByRole('tab', {
|
|
90
|
+
name: 'Tab 1'
|
|
91
|
+
}));
|
|
92
|
+
case 3:
|
|
93
|
+
expect(_react2.screen.getByText('Content 1')).toBeInTheDocument();
|
|
94
|
+
case 4:
|
|
95
|
+
case "end":
|
|
96
|
+
return _context2.stop();
|
|
97
|
+
}
|
|
98
|
+
}, _callee2);
|
|
99
|
+
})));
|
|
100
|
+
it('applies custom className to root element', function () {
|
|
101
|
+
var _render = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_tabs.Tabs, {
|
|
102
|
+
className: "custom-tabs-class"
|
|
103
|
+
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
104
|
+
title: "Tab 1"
|
|
105
|
+
}, "Content 1"))),
|
|
106
|
+
container = _render.container;
|
|
107
|
+
var rootDiv = container.querySelector('.custom-tabs-class');
|
|
108
|
+
expect(rootDiv).toBeInTheDocument();
|
|
109
|
+
});
|
|
110
|
+
it('handles tabs without title prop gracefully', function () {
|
|
111
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_tabs.Tabs, null, /*#__PURE__*/_react["default"].createElement("div", {
|
|
112
|
+
title: "Tab 1"
|
|
113
|
+
}, "Content 1"), /*#__PURE__*/_react["default"].createElement("div", null, "No Title Child"), /*#__PURE__*/_react["default"].createElement("div", {
|
|
114
|
+
title: "Tab 2"
|
|
115
|
+
}, "Content 2")));
|
|
116
|
+
var tabs = _react2.screen.getAllByRole('tab');
|
|
117
|
+
// Should only have 2 tabs since one doesn't have a title
|
|
118
|
+
expect(tabs).toHaveLength(2);
|
|
119
|
+
expect(_react2.screen.getByText('Tab 1')).toBeInTheDocument();
|
|
120
|
+
expect(_react2.screen.getByText('Tab 2')).toBeInTheDocument();
|
|
121
|
+
});
|
|
122
|
+
it('handles null children gracefully', function () {
|
|
123
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_tabs.Tabs, null, /*#__PURE__*/_react["default"].createElement("div", {
|
|
124
|
+
title: "Tab 1"
|
|
125
|
+
}, "Content 1"), null, /*#__PURE__*/_react["default"].createElement("div", {
|
|
126
|
+
title: "Tab 2"
|
|
127
|
+
}, "Content 2")));
|
|
128
|
+
var tabs = _react2.screen.getAllByRole('tab');
|
|
129
|
+
expect(tabs).toHaveLength(2);
|
|
130
|
+
});
|
|
131
|
+
it('handles complex content in tabs', function () {
|
|
132
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_tabs.Tabs, null, /*#__PURE__*/_react["default"].createElement("div", {
|
|
133
|
+
title: "Tab 1"
|
|
134
|
+
}, /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement("h2", null, "Tab 1 Header"), /*#__PURE__*/_react["default"].createElement("p", null, "Tab 1 description"), /*#__PURE__*/_react["default"].createElement("button", null, "Button in Tab 1"))), /*#__PURE__*/_react["default"].createElement("div", {
|
|
135
|
+
title: "Tab 2"
|
|
136
|
+
}, /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement("h2", null, "Tab 2 Header"), /*#__PURE__*/_react["default"].createElement("input", {
|
|
137
|
+
type: "text",
|
|
138
|
+
placeholder: "Input in Tab 2"
|
|
139
|
+
})))));
|
|
140
|
+
expect(_react2.screen.getByText('Tab 1 Header')).toBeInTheDocument();
|
|
141
|
+
expect(_react2.screen.getByRole('button', {
|
|
142
|
+
name: 'Button in Tab 1'
|
|
143
|
+
})).toBeInTheDocument();
|
|
144
|
+
var tab2 = _react2.screen.getByRole('tab', {
|
|
145
|
+
name: 'Tab 2'
|
|
146
|
+
});
|
|
147
|
+
expect(tab2).toBeInTheDocument();
|
|
148
|
+
});
|
|
149
|
+
it('renders all tabs in MuiTabs component', function () {
|
|
150
|
+
var _render2 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_tabs.Tabs, null, /*#__PURE__*/_react["default"].createElement("div", {
|
|
151
|
+
title: "Tab A"
|
|
152
|
+
}, "Content A"), /*#__PURE__*/_react["default"].createElement("div", {
|
|
153
|
+
title: "Tab B"
|
|
154
|
+
}, "Content B"), /*#__PURE__*/_react["default"].createElement("div", {
|
|
155
|
+
title: "Tab C"
|
|
156
|
+
}, "Content C"))),
|
|
157
|
+
container = _render2.container;
|
|
158
|
+
var tabsComponent = container.querySelector('[role="tablist"]');
|
|
159
|
+
expect(tabsComponent).toBeInTheDocument();
|
|
160
|
+
});
|
|
161
|
+
it('applies correct value prop to MuiTabs', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee3() {
|
|
162
|
+
var user, tab1, tab2;
|
|
163
|
+
return _regenerator["default"].wrap(function (_context3) {
|
|
164
|
+
while (1) switch (_context3.prev = _context3.next) {
|
|
165
|
+
case 0:
|
|
166
|
+
user = _userEvent["default"].setup();
|
|
167
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_tabs.Tabs, null, /*#__PURE__*/_react["default"].createElement("div", {
|
|
168
|
+
title: "Tab 1"
|
|
169
|
+
}, "Content 1"), /*#__PURE__*/_react["default"].createElement("div", {
|
|
170
|
+
title: "Tab 2"
|
|
171
|
+
}, "Content 2")));
|
|
172
|
+
|
|
173
|
+
// Initially first tab should be selected (value 0)
|
|
174
|
+
tab1 = _react2.screen.getByRole('tab', {
|
|
175
|
+
name: 'Tab 1'
|
|
176
|
+
});
|
|
177
|
+
expect(tab1).toHaveAttribute('aria-selected', 'true');
|
|
178
|
+
|
|
179
|
+
// Click second tab
|
|
180
|
+
_context3.next = 1;
|
|
181
|
+
return user.click(_react2.screen.getByRole('tab', {
|
|
182
|
+
name: 'Tab 2'
|
|
183
|
+
}));
|
|
184
|
+
case 1:
|
|
185
|
+
tab2 = _react2.screen.getByRole('tab', {
|
|
186
|
+
name: 'Tab 2'
|
|
187
|
+
});
|
|
188
|
+
expect(tab2).toHaveAttribute('aria-selected', 'true');
|
|
189
|
+
expect(tab1).toHaveAttribute('aria-selected', 'false');
|
|
190
|
+
case 2:
|
|
191
|
+
case "end":
|
|
192
|
+
return _context3.stop();
|
|
193
|
+
}
|
|
194
|
+
}, _callee3);
|
|
195
|
+
})));
|
|
196
|
+
it('renders with empty children array', function () {
|
|
197
|
+
var _render3 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_tabs.Tabs, null, [])),
|
|
198
|
+
container = _render3.container;
|
|
199
|
+
expect(container).toBeInTheDocument();
|
|
200
|
+
});
|
|
201
|
+
it('handles long tab titles', function () {
|
|
202
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_tabs.Tabs, null, /*#__PURE__*/_react["default"].createElement("div", {
|
|
203
|
+
title: "This is a very long tab title that should still render correctly"
|
|
204
|
+
}, "Content 1"), /*#__PURE__*/_react["default"].createElement("div", {
|
|
205
|
+
title: "Short"
|
|
206
|
+
}, "Content 2")));
|
|
207
|
+
expect(_react2.screen.getByText('This is a very long tab title that should still render correctly')).toBeInTheDocument();
|
|
208
|
+
expect(_react2.screen.getByText('Short')).toBeInTheDocument();
|
|
209
|
+
});
|
|
210
|
+
});
|
|
211
|
+
//# sourceMappingURL=tabs.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tabs.test.js","names":["_react","_interopRequireDefault","require","_react2","_userEvent","_tabs","describe","it","render","createElement","Tabs","title","expect","screen","getByText","toBeInTheDocument","queryByText","not","_asyncToGenerator2","_regenerator","mark","_callee","user","tab2","wrap","_context","prev","next","userEvent","setup","getByRole","name","click","stop","_callee2","_context2","_render","className","container","rootDiv","querySelector","tabs","getAllByRole","toHaveLength","type","placeholder","_render2","tabsComponent","_callee3","tab1","_context3","toHaveAttribute","_render3"],"sources":["../../src/__tests__/tabs.test.jsx"],"sourcesContent":["import React from 'react';\nimport { render, screen } from '@testing-library/react';\nimport userEvent from '@testing-library/user-event';\nimport { Tabs } from '../tabs';\n\ndescribe('Tabs Component', () => {\n it('renders tabs with correct titles', () => {\n render(\n <Tabs>\n <div title=\"Tab 1\">Content 1</div>\n <div title=\"Tab 2\">Content 2</div>\n <div title=\"Tab 3\">Content 3</div>\n </Tabs>,\n );\n\n expect(screen.getByText('Tab 1')).toBeInTheDocument();\n expect(screen.getByText('Tab 2')).toBeInTheDocument();\n expect(screen.getByText('Tab 3')).toBeInTheDocument();\n });\n\n it('renders first tab content by default', () => {\n render(\n <Tabs>\n <div title=\"Tab 1\">Content 1</div>\n <div title=\"Tab 2\">Content 2</div>\n <div title=\"Tab 3\">Content 3</div>\n </Tabs>,\n );\n\n expect(screen.getByText('Content 1')).toBeInTheDocument();\n expect(screen.queryByText('Content 2')).not.toBeInTheDocument();\n expect(screen.queryByText('Content 3')).not.toBeInTheDocument();\n });\n\n it('switches to selected tab when clicked', async () => {\n const user = userEvent.setup();\n render(\n <Tabs>\n <div title=\"Tab 1\">Content 1</div>\n <div title=\"Tab 2\">Content 2</div>\n <div title=\"Tab 3\">Content 3</div>\n </Tabs>,\n );\n\n const tab2 = screen.getByRole('tab', { name: 'Tab 2' });\n await user.click(tab2);\n\n expect(screen.queryByText('Content 1')).not.toBeInTheDocument();\n expect(screen.getByText('Content 2')).toBeInTheDocument();\n expect(screen.queryByText('Content 3')).not.toBeInTheDocument();\n });\n\n it('displays correct content when multiple tabs are clicked', async () => {\n const user = userEvent.setup();\n render(\n <Tabs>\n <div title=\"Tab 1\">Content 1</div>\n <div title=\"Tab 2\">Content 2</div>\n <div title=\"Tab 3\">Content 3</div>\n </Tabs>,\n );\n\n await user.click(screen.getByRole('tab', { name: 'Tab 2' }));\n expect(screen.getByText('Content 2')).toBeInTheDocument();\n\n await user.click(screen.getByRole('tab', { name: 'Tab 3' }));\n expect(screen.getByText('Content 3')).toBeInTheDocument();\n\n await user.click(screen.getByRole('tab', { name: 'Tab 1' }));\n expect(screen.getByText('Content 1')).toBeInTheDocument();\n });\n\n it('applies custom className to root element', () => {\n const { container } = render(\n <Tabs className=\"custom-tabs-class\">\n <div title=\"Tab 1\">Content 1</div>\n </Tabs>,\n );\n\n const rootDiv = container.querySelector('.custom-tabs-class');\n expect(rootDiv).toBeInTheDocument();\n });\n\n it('handles tabs without title prop gracefully', () => {\n render(\n <Tabs>\n <div title=\"Tab 1\">Content 1</div>\n <div>No Title Child</div>\n <div title=\"Tab 2\">Content 2</div>\n </Tabs>,\n );\n\n const tabs = screen.getAllByRole('tab');\n // Should only have 2 tabs since one doesn't have a title\n expect(tabs).toHaveLength(2);\n expect(screen.getByText('Tab 1')).toBeInTheDocument();\n expect(screen.getByText('Tab 2')).toBeInTheDocument();\n });\n\n it('handles null children gracefully', () => {\n render(\n <Tabs>\n <div title=\"Tab 1\">Content 1</div>\n {null}\n <div title=\"Tab 2\">Content 2</div>\n </Tabs>,\n );\n\n const tabs = screen.getAllByRole('tab');\n expect(tabs).toHaveLength(2);\n });\n\n it('handles complex content in tabs', () => {\n render(\n <Tabs>\n <div title=\"Tab 1\">\n <div>\n <h2>Tab 1 Header</h2>\n <p>Tab 1 description</p>\n <button>Button in Tab 1</button>\n </div>\n </div>\n <div title=\"Tab 2\">\n <div>\n <h2>Tab 2 Header</h2>\n <input type=\"text\" placeholder=\"Input in Tab 2\" />\n </div>\n </div>\n </Tabs>,\n );\n\n expect(screen.getByText('Tab 1 Header')).toBeInTheDocument();\n expect(screen.getByRole('button', { name: 'Button in Tab 1' })).toBeInTheDocument();\n\n const tab2 = screen.getByRole('tab', { name: 'Tab 2' });\n expect(tab2).toBeInTheDocument();\n });\n\n it('renders all tabs in MuiTabs component', () => {\n const { container } = render(\n <Tabs>\n <div title=\"Tab A\">Content A</div>\n <div title=\"Tab B\">Content B</div>\n <div title=\"Tab C\">Content C</div>\n </Tabs>,\n );\n\n const tabsComponent = container.querySelector('[role=\"tablist\"]');\n expect(tabsComponent).toBeInTheDocument();\n });\n\n it('applies correct value prop to MuiTabs', async () => {\n const user = userEvent.setup();\n render(\n <Tabs>\n <div title=\"Tab 1\">Content 1</div>\n <div title=\"Tab 2\">Content 2</div>\n </Tabs>,\n );\n\n // Initially first tab should be selected (value 0)\n const tab1 = screen.getByRole('tab', { name: 'Tab 1' });\n expect(tab1).toHaveAttribute('aria-selected', 'true');\n\n // Click second tab\n await user.click(screen.getByRole('tab', { name: 'Tab 2' }));\n const tab2 = screen.getByRole('tab', { name: 'Tab 2' });\n expect(tab2).toHaveAttribute('aria-selected', 'true');\n expect(tab1).toHaveAttribute('aria-selected', 'false');\n });\n\n it('renders with empty children array', () => {\n const { container } = render(<Tabs>{[]}</Tabs>);\n expect(container).toBeInTheDocument();\n });\n\n it('handles long tab titles', () => {\n render(\n <Tabs>\n <div title=\"This is a very long tab title that should still render correctly\">Content 1</div>\n <div title=\"Short\">Content 2</div>\n </Tabs>,\n );\n\n expect(screen.getByText('This is a very long tab title that should still render correctly')).toBeInTheDocument();\n expect(screen.getByText('Short')).toBeInTheDocument();\n });\n});\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,124 @@
|
|
|
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 _twoChoice = require("../two-choice");
|
|
10
|
+
describe('NChoice', function () {
|
|
11
|
+
var onChange = jest.fn();
|
|
12
|
+
beforeEach(function () {
|
|
13
|
+
onChange.mockClear();
|
|
14
|
+
});
|
|
15
|
+
it('renders radio buttons with vertical direction', function () {
|
|
16
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_twoChoice.NChoice, {
|
|
17
|
+
direction: "vertical",
|
|
18
|
+
header: "n-choice-vertical",
|
|
19
|
+
value: 'left',
|
|
20
|
+
onChange: onChange,
|
|
21
|
+
opts: [{
|
|
22
|
+
label: 'left',
|
|
23
|
+
value: 'left'
|
|
24
|
+
}, {
|
|
25
|
+
label: 'center',
|
|
26
|
+
value: 'center'
|
|
27
|
+
}, {
|
|
28
|
+
label: 'right',
|
|
29
|
+
value: 'right'
|
|
30
|
+
}]
|
|
31
|
+
}));
|
|
32
|
+
expect(_react2.screen.getByText('n-choice-vertical')).toBeInTheDocument();
|
|
33
|
+
expect(_react2.screen.getByLabelText('left')).toBeInTheDocument();
|
|
34
|
+
expect(_react2.screen.getByLabelText('center')).toBeInTheDocument();
|
|
35
|
+
expect(_react2.screen.getByLabelText('right')).toBeInTheDocument();
|
|
36
|
+
});
|
|
37
|
+
it('shows selected value as checked', function () {
|
|
38
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_twoChoice.NChoice, {
|
|
39
|
+
direction: "vertical",
|
|
40
|
+
header: "Options",
|
|
41
|
+
value: 'center',
|
|
42
|
+
onChange: onChange,
|
|
43
|
+
opts: [{
|
|
44
|
+
label: 'left',
|
|
45
|
+
value: 'left'
|
|
46
|
+
}, {
|
|
47
|
+
label: 'center',
|
|
48
|
+
value: 'center'
|
|
49
|
+
}, {
|
|
50
|
+
label: 'right',
|
|
51
|
+
value: 'right'
|
|
52
|
+
}]
|
|
53
|
+
}));
|
|
54
|
+
var centerRadio = _react2.screen.getByLabelText('center');
|
|
55
|
+
expect(centerRadio).toBeChecked();
|
|
56
|
+
expect(_react2.screen.getByLabelText('left')).not.toBeChecked();
|
|
57
|
+
expect(_react2.screen.getByLabelText('right')).not.toBeChecked();
|
|
58
|
+
});
|
|
59
|
+
it('calls onChange when user selects a different option', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee() {
|
|
60
|
+
var user;
|
|
61
|
+
return _regenerator["default"].wrap(function (_context) {
|
|
62
|
+
while (1) switch (_context.prev = _context.next) {
|
|
63
|
+
case 0:
|
|
64
|
+
user = _userEvent["default"].setup();
|
|
65
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_twoChoice.NChoice, {
|
|
66
|
+
direction: "vertical",
|
|
67
|
+
header: "Options",
|
|
68
|
+
value: 'left',
|
|
69
|
+
onChange: onChange,
|
|
70
|
+
opts: [{
|
|
71
|
+
label: 'left',
|
|
72
|
+
value: 'left'
|
|
73
|
+
}, {
|
|
74
|
+
label: 'center',
|
|
75
|
+
value: 'center'
|
|
76
|
+
}, {
|
|
77
|
+
label: 'right',
|
|
78
|
+
value: 'right'
|
|
79
|
+
}]
|
|
80
|
+
}));
|
|
81
|
+
_context.next = 1;
|
|
82
|
+
return user.click(_react2.screen.getByLabelText('center'));
|
|
83
|
+
case 1:
|
|
84
|
+
expect(onChange).toHaveBeenCalledWith('center');
|
|
85
|
+
case 2:
|
|
86
|
+
case "end":
|
|
87
|
+
return _context.stop();
|
|
88
|
+
}
|
|
89
|
+
}, _callee);
|
|
90
|
+
})));
|
|
91
|
+
it('renders with horizontal direction', function () {
|
|
92
|
+
var _render = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_twoChoice.NChoice, {
|
|
93
|
+
direction: "horizontal",
|
|
94
|
+
header: "Options",
|
|
95
|
+
value: 'left',
|
|
96
|
+
onChange: onChange,
|
|
97
|
+
opts: [{
|
|
98
|
+
label: 'left',
|
|
99
|
+
value: 'left'
|
|
100
|
+
}, {
|
|
101
|
+
label: 'right',
|
|
102
|
+
value: 'right'
|
|
103
|
+
}]
|
|
104
|
+
})),
|
|
105
|
+
container = _render.container;
|
|
106
|
+
|
|
107
|
+
// Check that all options are rendered
|
|
108
|
+
expect(_react2.screen.getByLabelText('left')).toBeInTheDocument();
|
|
109
|
+
expect(_react2.screen.getByLabelText('right')).toBeInTheDocument();
|
|
110
|
+
});
|
|
111
|
+
it('handles string options by converting them', function () {
|
|
112
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_twoChoice.NChoice, {
|
|
113
|
+
direction: "vertical",
|
|
114
|
+
header: "Options",
|
|
115
|
+
value: 'option1',
|
|
116
|
+
onChange: onChange,
|
|
117
|
+
opts: ['option1', 'option2', 'option3']
|
|
118
|
+
}));
|
|
119
|
+
expect(_react2.screen.getByLabelText('option1')).toBeInTheDocument();
|
|
120
|
+
expect(_react2.screen.getByLabelText('option2')).toBeInTheDocument();
|
|
121
|
+
expect(_react2.screen.getByLabelText('option3')).toBeInTheDocument();
|
|
122
|
+
});
|
|
123
|
+
});
|
|
124
|
+
//# sourceMappingURL=two-choice.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"two-choice.test.js","names":["_react","_interopRequireDefault","require","_react2","_userEvent","_twoChoice","describe","onChange","jest","fn","beforeEach","mockClear","it","render","createElement","NChoice","direction","header","value","opts","label","expect","screen","getByText","toBeInTheDocument","getByLabelText","centerRadio","toBeChecked","not","_asyncToGenerator2","_regenerator","mark","_callee","user","wrap","_context","prev","next","userEvent","setup","click","toHaveBeenCalledWith","stop","_render","container"],"sources":["../../src/__tests__/two-choice.test.js"],"sourcesContent":["import React from 'react';\nimport { render, screen } from '@testing-library/react';\nimport userEvent from '@testing-library/user-event';\nimport { NChoice } from '../two-choice';\n\ndescribe('NChoice', () => {\n const onChange = jest.fn();\n\n beforeEach(() => {\n onChange.mockClear();\n });\n\n it('renders radio buttons with vertical direction', () => {\n render(\n <NChoice\n direction=\"vertical\"\n header=\"n-choice-vertical\"\n value={'left'}\n onChange={onChange}\n opts={[\n { label: 'left', value: 'left' },\n { label: 'center', value: 'center' },\n { label: 'right', value: 'right' },\n ]}\n />,\n );\n\n expect(screen.getByText('n-choice-vertical')).toBeInTheDocument();\n expect(screen.getByLabelText('left')).toBeInTheDocument();\n expect(screen.getByLabelText('center')).toBeInTheDocument();\n expect(screen.getByLabelText('right')).toBeInTheDocument();\n });\n\n it('shows selected value as checked', () => {\n render(\n <NChoice\n direction=\"vertical\"\n header=\"Options\"\n value={'center'}\n onChange={onChange}\n opts={[\n { label: 'left', value: 'left' },\n { label: 'center', value: 'center' },\n { label: 'right', value: 'right' },\n ]}\n />,\n );\n\n const centerRadio = screen.getByLabelText('center');\n expect(centerRadio).toBeChecked();\n expect(screen.getByLabelText('left')).not.toBeChecked();\n expect(screen.getByLabelText('right')).not.toBeChecked();\n });\n\n it('calls onChange when user selects a different option', async () => {\n const user = userEvent.setup();\n render(\n <NChoice\n direction=\"vertical\"\n header=\"Options\"\n value={'left'}\n onChange={onChange}\n opts={[\n { label: 'left', value: 'left' },\n { label: 'center', value: 'center' },\n { label: 'right', value: 'right' },\n ]}\n />,\n );\n\n await user.click(screen.getByLabelText('center'));\n\n expect(onChange).toHaveBeenCalledWith('center');\n });\n\n it('renders with horizontal direction', () => {\n const { container } = render(\n <NChoice\n direction=\"horizontal\"\n header=\"Options\"\n value={'left'}\n onChange={onChange}\n opts={[\n { label: 'left', value: 'left' },\n { label: 'right', value: 'right' },\n ]}\n />,\n );\n\n // Check that all options are rendered\n expect(screen.getByLabelText('left')).toBeInTheDocument();\n expect(screen.getByLabelText('right')).toBeInTheDocument();\n });\n\n it('handles string options by converting them', () => {\n render(\n <NChoice\n direction=\"vertical\"\n header=\"Options\"\n value={'option1'}\n onChange={onChange}\n opts={['option1', 'option2', 'option3']}\n />,\n );\n\n expect(screen.getByLabelText('option1')).toBeInTheDocument();\n expect(screen.getByLabelText('option2')).toBeInTheDocument();\n expect(screen.getByLabelText('option3')).toBeInTheDocument();\n });\n});\n"],"mappings":"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","ignoreList":[]}
|