@@ -315,5 +315,47 @@ describe('editable-select test', () => {
315315 expect ( wrapper . vm . value ) . toBe ( '2' ) ;
316316 } ) ;
317317
318- it . todo ( 'props allow-clear work well.' ) ;
318+ test ( 'allow-clear' , async ( ) => {
319+ const wrapper = mount ( {
320+ components : {
321+ 'editable-select' : EditableSelect ,
322+ } ,
323+ template : `<editable-select v-model="value" :options="options"></editable-select>` ,
324+ setup ( ) {
325+ const value = ref ( '' ) ;
326+ const options = createData ( ) ;
327+ return {
328+ value,
329+ options,
330+ } ;
331+ } ,
332+ } ) ;
333+
334+ const input = wrapper . find ( 'input' ) ;
335+ await input . trigger ( 'click' ) ;
336+
337+ const flexibleOverlay = wrapper . getComponent ( { name : 'DFlexibleOverlay' } ) ;
338+
339+ const options = flexibleOverlay . findAll ( `.devui-dropdown-item` ) ;
340+
341+ await options [ 0 ] . trigger ( 'click' ) ;
342+
343+ expect ( wrapper . find ( 'input' ) . element . value ) . toBe ( 'label0' ) ;
344+ expect ( wrapper . vm . value ) . toBe ( '0' ) ;
345+
346+ const removeIcon = wrapper . find ( '.icon-remove' ) ;
347+ await removeIcon . trigger ( 'click' ) ;
348+
349+ expect ( wrapper . find ( 'input' ) . element . value ) . toBe ( '' ) ;
350+ expect ( wrapper . vm . value ) . toBe ( '' ) ;
351+
352+ await options [ 1 ] . trigger ( 'click' ) ;
353+ expect ( wrapper . find ( 'input' ) . element . value ) . toBe ( 'label1' ) ;
354+ expect ( wrapper . vm . value ) . toBe ( '1' ) ;
355+
356+ await removeIcon . trigger ( 'click' ) ;
357+
358+ expect ( wrapper . find ( 'input' ) . element . value ) . toBe ( '' ) ;
359+ expect ( wrapper . vm . value ) . toBe ( '' ) ;
360+ } ) ;
319361} ) ;
0 commit comments