Skip to content

Commit 288e1d5

Browse files
committed
Add test for pf4 select with categories
1 parent 04e124a commit 288e1d5

File tree

1 file changed

+77
-0
lines changed

1 file changed

+77
-0
lines changed

packages/pf4-component-mapper/src/tests/select/select.test.js

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,83 @@ describe('<Select />', () => {
102102
expect(wrapper.find(Option).find('.pf-c-select__menu-item-description').text()).toEqual('some description');
103103
});
104104

105+
it('should render groups and dividers', async () => {
106+
const onSubmit = jest.fn();
107+
108+
const wrapper = mount(
109+
<FormRenderer
110+
onSubmit={(values) => onSubmit(values)}
111+
FormTemplate={FormTemplate}
112+
componentMapper={componentMapper}
113+
schema={{
114+
fields: [
115+
{
116+
component: 'select',
117+
name: 'select-with-categories',
118+
label: 'With categories',
119+
options: [
120+
{
121+
label: 'Category 1',
122+
options: [
123+
{ label: 'value 1', value: '111' },
124+
{ label: 'value 2', value: '222' },
125+
],
126+
},
127+
{ divider: true },
128+
{ label: 'independent 1', value: '1112333' },
129+
{ divider: true },
130+
{
131+
label: 'Category 2',
132+
options: [
133+
{ label: 'value 3', value: '333' },
134+
{ label: 'value 4', value: '444' },
135+
],
136+
},
137+
{ divider: true },
138+
{ label: 'independent 2', value: '11111' },
139+
],
140+
},
141+
],
142+
}}
143+
/>
144+
);
145+
146+
wrapper.find('.pf-c-select__toggle').simulate('click');
147+
148+
expect(wrapper.find('.pf-c-select__menu-group-title')).toHaveLength(2);
149+
150+
expect(wrapper.find('.pf-c-select__menu-group-title').first().text()).toEqual('Category 1');
151+
expect(wrapper.find('.pf-c-select__menu-group-title').last().text()).toEqual('Category 2');
152+
153+
expect(wrapper.find('.pf-c-divider')).toHaveLength(3);
154+
155+
expect(wrapper.find('.pf-c-select__menu-item')).toHaveLength(6);
156+
expect(wrapper.find('.pf-c-select__menu-item').map((opt) => opt.text())).toEqual([
157+
'value 1',
158+
'value 2',
159+
'independent 1',
160+
'value 3',
161+
'value 4',
162+
'independent 2',
163+
]);
164+
165+
await act(async () => {
166+
wrapper.find('button.pf-c-select__menu-item').first().simulate('click');
167+
});
168+
wrapper.update();
169+
170+
wrapper.find('.pf-c-select__toggle').simulate('click');
171+
172+
expect(wrapper.find('.pf-c-select__menu-item').first().find('.pf-c-select__menu-item-icon')).toHaveLength(1); // first option is checked
173+
174+
await act(async () => {
175+
wrapper.find('form').first().simulate('submit');
176+
});
177+
wrapper.update();
178+
179+
expect(onSubmit).toHaveBeenCalledWith({ 'select-with-categories': '111' });
180+
});
181+
105182
it('should return single simple value', async () => {
106183
const wrapper = mount(<Select {...initialProps} />);
107184
wrapper.find('.pf-c-select__toggle').simulate('click');

0 commit comments

Comments
 (0)