@@ -288,4 +288,170 @@ describe("veTable contextmenu", () => {
288288 type : "INSERT_ROW_BELOW" ,
289289 } ) ;
290290 } ) ;
291+
292+ it ( "contextmenu REMOVE_ROW" , async ( ) => {
293+ const mockFn = jest . fn ( ) ;
294+
295+ let tableData = cloneDeep ( TABLE_DATA ) ;
296+
297+ const WRAPPER = mount (
298+ {
299+ render ( ) {
300+ return (
301+ < div >
302+ < ve-table
303+ row-key-field-name = "rowKey"
304+ columns = { COLUMNS }
305+ table-data = { tableData }
306+ contextmenu-body-option = {
307+ this . contextmenuBodyOption
308+ }
309+ />
310+ </ div >
311+ ) ;
312+ } ,
313+ data ( ) {
314+ return {
315+ contextmenuBodyOption : {
316+ callback : ( { type, selection } ) => {
317+ mockFn ( { type, selection } ) ;
318+ } ,
319+ contextmenus : CONTEXTMENUS ,
320+ } ,
321+ } ;
322+ } ,
323+ } ,
324+ // need attach to documnet
325+ { attachTo : document . body } ,
326+ ) ;
327+
328+ const firstTrTdEl = WRAPPER . findAll ( ".ve-table-body-tr" )
329+ . at ( 2 )
330+ . findAll ( ".ve-table-body-td" )
331+ . at ( 2 ) ;
332+
333+ firstTrTdEl . trigger ( "click" ) ;
334+
335+ await later ( ) ;
336+
337+ expect ( firstTrTdEl . classes ( ) ) . toContain ( "ve-table-cell-selection" ) ;
338+
339+ const bodyEl = WRAPPER . find ( ".ve-table-body" ) ;
340+ bodyEl . trigger ( "contextmenu" ) ;
341+
342+ await later ( ) ;
343+
344+ const contextmenuPopper = document . querySelector (
345+ ".ve-contextmenu-popper" ,
346+ ) ;
347+
348+ const contextmenuNodes = contextmenuPopper . querySelectorAll (
349+ ".ve-contextmenu-node" ,
350+ ) ;
351+
352+ const event2 = new MouseEvent ( "click" , {
353+ view : window , // window
354+ bubbles : true ,
355+ cancelable : true ,
356+ } ) ;
357+
358+ contextmenuNodes [ 2 ] . dispatchEvent ( event2 ) ;
359+
360+ await later ( ) ;
361+
362+ expect ( tableData . length ) . toBe ( 4 ) ;
363+
364+ expect ( mockFn ) . toHaveBeenCalled ( ) ;
365+ expect ( mockFn ) . toHaveBeenCalledWith ( {
366+ selection : { colKey : "date" , rowKey : 2 } ,
367+ type : "REMOVE_ROW" ,
368+ } ) ;
369+ } ) ;
370+
371+ it ( "contextmenu HIDE_COLUMN" , async ( ) => {
372+ const mockFn = jest . fn ( ) ;
373+
374+ let tableData = cloneDeep ( TABLE_DATA ) ;
375+
376+ const WRAPPER = mount (
377+ {
378+ render ( ) {
379+ return (
380+ < div >
381+ < ve-table
382+ row-key-field-name = "rowKey"
383+ columns = { COLUMNS }
384+ table-data = { tableData }
385+ contextmenu-body-option = {
386+ this . contextmenuBodyOption
387+ }
388+ />
389+ </ div >
390+ ) ;
391+ } ,
392+ data ( ) {
393+ return {
394+ contextmenuBodyOption : {
395+ callback : ( { type, selection } ) => {
396+ mockFn ( { type, selection } ) ;
397+ } ,
398+ contextmenus : CONTEXTMENUS ,
399+ } ,
400+ } ;
401+ } ,
402+ } ,
403+ // need attach to documnet
404+ { attachTo : document . body } ,
405+ ) ;
406+
407+ const firstTrTdEl = WRAPPER . findAll ( ".ve-table-body-tr" )
408+ . at ( 2 )
409+ . findAll ( ".ve-table-body-td" )
410+ . at ( 2 ) ;
411+
412+ firstTrTdEl . trigger ( "click" ) ;
413+
414+ await later ( ) ;
415+
416+ expect ( firstTrTdEl . classes ( ) ) . toContain ( "ve-table-cell-selection" ) ;
417+
418+ const bodyEl = WRAPPER . find ( ".ve-table-body" ) ;
419+ bodyEl . trigger ( "contextmenu" ) ;
420+
421+ await later ( ) ;
422+
423+ const DateTh = WRAPPER . findAll (
424+ ".ve-table-header-tr .ve-table-header-th" ,
425+ ) . at ( 2 ) ;
426+ expect ( DateTh . text ( ) ) . toBe ( "Date" ) ;
427+
428+ const contextmenuPopper = document . querySelector (
429+ ".ve-contextmenu-popper" ,
430+ ) ;
431+
432+ const contextmenuNodes = contextmenuPopper . querySelectorAll (
433+ ".ve-contextmenu-node" ,
434+ ) ;
435+
436+ const event2 = new MouseEvent ( "click" , {
437+ view : window , // window
438+ bubbles : true ,
439+ cancelable : true ,
440+ } ) ;
441+
442+ contextmenuNodes [ 3 ] . dispatchEvent ( event2 ) ;
443+
444+ await later ( ) ;
445+
446+ const DateTh2 = WRAPPER . findAll (
447+ ".ve-table-header-tr .ve-table-header-th" ,
448+ ) . at ( 2 ) ;
449+ expect ( DateTh2 . text ( ) ) . toBe ( "Number" ) ;
450+
451+ expect ( mockFn ) . toHaveBeenCalled ( ) ;
452+ expect ( mockFn ) . toHaveBeenCalledWith ( {
453+ selection : { colKey : "date" , rowKey : 2 } ,
454+ type : "HIDE_COLUMN" ,
455+ } ) ;
456+ } ) ;
291457} ) ;
0 commit comments