@@ -179,6 +179,74 @@ describe('<Select />', () => {
179
179
expect ( onSubmit ) . toHaveBeenCalledWith ( { 'select-with-categories' : '111' } ) ;
180
180
} ) ;
181
181
182
+ it ( 'filters with nested options' , async ( ) => {
183
+ const wrapper = mount (
184
+ < FormRenderer
185
+ onSubmit = { jest . fn ( ) }
186
+ FormTemplate = { FormTemplate }
187
+ componentMapper = { componentMapper }
188
+ schema = { {
189
+ fields : [
190
+ {
191
+ component : 'select' ,
192
+ name : 'select-with-categories' ,
193
+ label : 'With categories' ,
194
+ isSearchable : true ,
195
+ options : [
196
+ {
197
+ label : 'Category 1' ,
198
+ options : [
199
+ { label : 'value 1' , value : '111' } ,
200
+ { label : 'value 2' , value : '222' } ,
201
+ ] ,
202
+ } ,
203
+ { divider : true } ,
204
+ { label : 'independent 1' , value : '1112333' } ,
205
+ { divider : true } ,
206
+ {
207
+ label : 'Category 2' ,
208
+ options : [
209
+ { label : 'value 3' , value : '333' } ,
210
+ { label : 'value 4' , value : '444' } ,
211
+ ] ,
212
+ } ,
213
+ { divider : true } ,
214
+ { label : 'independent 2' , value : '11111' } ,
215
+ ] ,
216
+ } ,
217
+ ] ,
218
+ } }
219
+ />
220
+ ) ;
221
+
222
+ wrapper . find ( '.pf-c-select__toggle' ) . simulate ( 'click' ) ;
223
+
224
+ await act ( async ( ) => {
225
+ const search = wrapper . find ( 'input' ) ;
226
+ search . instance ( ) . value = 'value' ;
227
+ search . simulate ( 'change' ) ;
228
+ } ) ;
229
+ wrapper . update ( ) ;
230
+
231
+ expect ( wrapper . find ( '.pf-c-select__menu-group-title' ) ) . toHaveLength ( 2 ) ;
232
+ expect ( wrapper . find ( '.pf-c-divider' ) ) . toHaveLength ( 0 ) ;
233
+
234
+ expect ( wrapper . find ( '.pf-c-select__menu-item' ) ) . toHaveLength ( 4 ) ;
235
+ expect ( wrapper . find ( '.pf-c-select__menu-item' ) . map ( ( opt ) => opt . text ( ) ) ) . toEqual ( [ 'value 1' , 'value 2' , 'value 3' , 'value 4' ] ) ;
236
+
237
+ await act ( async ( ) => {
238
+ const search = wrapper . find ( 'input' ) ;
239
+ search . instance ( ) . value = 'independent' ;
240
+ search . simulate ( 'change' ) ;
241
+ } ) ;
242
+ wrapper . update ( ) ;
243
+
244
+ expect ( wrapper . find ( '.pf-c-select__menu-group-title' ) ) . toHaveLength ( 0 ) ;
245
+ expect ( wrapper . find ( '.pf-c-divider' ) ) . toHaveLength ( 0 ) ;
246
+
247
+ expect ( wrapper . find ( '.pf-c-select__menu-item' ) ) . toHaveLength ( 2 ) ;
248
+ expect ( wrapper . find ( '.pf-c-select__menu-item' ) . map ( ( opt ) => opt . text ( ) ) ) . toEqual ( [ 'independent 1' , 'independent 2' ] ) ;
249
+ } ) ;
182
250
it ( 'should return single simple value' , async ( ) => {
183
251
const wrapper = mount ( < Select { ...initialProps } /> ) ;
184
252
wrapper . find ( '.pf-c-select__toggle' ) . simulate ( 'click' ) ;
0 commit comments