Skip to content

Commit 5588814

Browse files
committed
Update tests for selectAll and selectNone
1 parent 51f7e98 commit 5588814

File tree

1 file changed

+99
-1
lines changed

1 file changed

+99
-1
lines changed

packages/common/src/tests/select/select.test.js

Lines changed: 99 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -344,11 +344,31 @@ describe('Select test', () => {
344344
wrapper.update();
345345

346346
expect(state.value).toEqual([
347+
{ label: 'Select all', selectAll: true },
347348
{ label: 'Dogs', value: 'd' },
348349
{ label: 'Cats', value: 'c' },
349350
{ label: 'Hamsters', value: 'h' }
350351
]);
351352
expect(inputValue).toEqual(['d', 'c', 'h']);
353+
354+
// remove hamsters
355+
await act(async () => {
356+
wrapper
357+
.find('#onChange')
358+
.props()
359+
.onClick([
360+
{ label: 'Select all', selectAll: true },
361+
{ label: 'Dogs', value: 'd' },
362+
{ label: 'Cats', value: 'c' }
363+
]);
364+
});
365+
wrapper.update();
366+
367+
expect(state.value).toEqual([
368+
{ label: 'Dogs', value: 'd' },
369+
{ label: 'Cats', value: 'c' }
370+
]);
371+
expect(inputValue).toEqual(['d', 'c']);
352372
});
353373

354374
it('selects none', async () => {
@@ -380,8 +400,86 @@ describe('Select test', () => {
380400
});
381401
wrapper.update();
382402

383-
expect(state.value).toEqual([]);
403+
expect(state.value).toEqual([{ label: 'Select none', selectNone: true }]);
384404
expect(inputValue).toEqual('');
405+
406+
// adds one
407+
await act(async () => {
408+
wrapper
409+
.find('#onChange')
410+
.props()
411+
.onClick([
412+
{ label: 'Select none', selectNone: true },
413+
{ label: 'Dogs', value: 'd' }
414+
]);
415+
});
416+
wrapper.update();
417+
418+
expect(state.value).toEqual([{ label: 'Dogs', value: 'd' }]);
419+
expect(inputValue).toEqual(['d']);
420+
});
421+
422+
it('with select all and select none at that same time', async () => {
423+
field = {
424+
...field,
425+
isMulti: true,
426+
options: [
427+
{ label: 'Select all', selectAll: true, value: 'select-all' },
428+
{ label: 'Select none', selectNone: true, value: 'select-none' },
429+
...field.options
430+
]
431+
};
432+
433+
await act(async () => {
434+
wrapper = mount(
435+
<FormRenderer
436+
{...rendererProps}
437+
schema={{
438+
fields: [
439+
{
440+
...field,
441+
component: componentTypes.SELECT,
442+
name: 'select'
443+
}
444+
]
445+
}}
446+
/>
447+
);
448+
});
449+
wrapper.update();
450+
451+
await act(async () => {
452+
wrapper
453+
.find('#onChange')
454+
.props()
455+
.onClick([{ label: 'Select all', selectAll: true, value: 'select-all' }]);
456+
});
457+
wrapper.update();
458+
459+
expect(state.value).toEqual([
460+
{ label: 'Select all', selectAll: true, value: 'select-all' },
461+
{ label: 'Dogs', value: 'd' },
462+
{ label: 'Cats', value: 'c' },
463+
{ label: 'Hamsters', value: 'h' }
464+
]);
465+
expect(inputValue).toEqual(['d', 'c', 'h']);
466+
467+
await act(async () => {
468+
wrapper
469+
.find('#onChange')
470+
.props()
471+
.onClick([
472+
{ label: 'Select all', selectAll: true },
473+
{ label: 'Dogs', value: 'd' },
474+
{ label: 'Cats', value: 'c' },
475+
{ label: 'Hamsters', value: 'h' },
476+
{ label: 'Select none', selectNone: true, value: 'select-none' }
477+
]);
478+
});
479+
wrapper.update();
480+
481+
expect(state.value).toEqual([{ label: 'Select none', selectNone: true, value: 'select-none' }]);
482+
expect(inputValue).toEqual([]);
385483
});
386484
});
387485

0 commit comments

Comments
 (0)