@@ -373,4 +373,89 @@ describe('Filtering in a view by selection columns', () => {
373373 cy . get ( '.custom-table table tr td div' ) . contains ( item ) . should ( 'not.exist' )
374374 } )
375375 } )
376+
377+ it ( 'Filter view remove row when it no longer matches filter' , ( ) => {
378+ cy . loadTable ( 'View filtering test table' )
379+
380+ // # create view with filter
381+ // ## create view and set title
382+ const title = 'Filter for check enabled'
383+ cy . get ( '[data-cy="customTableAction"] button' ) . click ( )
384+ cy . get ( '.v-popper__popper li button span' ) . contains ( 'Create view' ) . click ( { force : true } )
385+ cy . get ( '.modal-container #settings-section_title input' ) . type ( title )
386+
387+ // ## add filter
388+ cy . get ( 'button' ) . contains ( 'Add new filter group' ) . click ( )
389+ cy . get ( '.modal-container .filter-group .v-select.select' ) . eq ( 0 ) . click ( )
390+ cy . get ( 'ul.vs__dropdown-menu li span[title="check"]' ) . click ( )
391+ cy . get ( '.modal-container .filter-group .v-select.select' ) . eq ( 1 ) . click ( )
392+ cy . get ( 'ul.vs__dropdown-menu li span[title="Is equal"]' ) . click ( )
393+ cy . get ( '.modal-container .filter-group .v-select.select' ) . eq ( 2 ) . click ( )
394+ cy . get ( 'ul.vs__dropdown-menu li span[title="Checked"]' ) . click ( )
395+
396+ // ## save view
397+ cy . intercept ( { method : 'POST' , url : '**/apps/tables/view' } ) . as ( 'createView' )
398+ cy . intercept ( { method : 'PUT' , url : '**/apps/tables/view/*' } ) . as ( 'updateView' )
399+ cy . contains ( 'button' , 'Create View' ) . click ( )
400+ cy . wait ( '@createView' )
401+ cy . wait ( '@updateView' )
402+ cy . contains ( '.app-navigation-entry-link span' , title ) . should ( 'exist' )
403+
404+ // # insert a checked row
405+ cy . get ( 'button' ) . contains ( 'Create row' ) . click ( )
406+ cy . fillInValueTextLine ( 'title' , 'checked row' )
407+ cy . fillInValueSelectionCheck ( 'check' )
408+ cy . intercept ( { method : 'GET' , url : '**/apps/tables/view/*/row/*/present' } ) . as ( 'isRowInViewPresent' )
409+ cy . get ( 'button' ) . contains ( 'Save' ) . click ( )
410+
411+ // ## check server response for /view/{viewId}/row/{id}/present
412+ cy . wait ( '@isRowInViewPresent' ) . then ( ( { response : { body : { present } } } ) => {
413+ expect ( present ) . to . be . true
414+ } )
415+
416+ // ## check if row is visible
417+ cy . contains ( '[data-cy="ncTable"] [data-cy="customTableRow"]' , 'checked row' ) . should ( 'be.visible' )
418+
419+ // # insert a unchecked row
420+ cy . get ( 'button' ) . contains ( 'Create row' ) . click ( )
421+ cy . fillInValueTextLine ( 'title' , 'unchecked row' )
422+ cy . intercept ( { method : 'GET' , url : '**/apps/tables/view/*/row/*/present' } ) . as ( 'isRowInViewPresent' )
423+ cy . get ( 'button' ) . contains ( 'Save' ) . click ( )
424+
425+ // ## check server response for /view/{viewId}/row/{id}/present
426+ cy . wait ( '@isRowInViewPresent' ) . then ( ( { response : { body : { present } } } ) => {
427+ expect ( present ) . to . be . false
428+ } )
429+
430+ // ## check if row does not exist
431+ cy . contains ( '[data-cy="ncTable"] [data-cy="customTableRow"]' , 'unchecked row' ) . should ( 'not.exist' )
432+
433+ // # edit checked row
434+ // ## uncheck
435+ cy . contains ( '[data-cy="ncTable"] [data-cy="customTableRow"]' , 'checked row' ) . closest ( '[data-cy="customTableRow"]' ) . find ( '[data-cy="editRowBtn"]' ) . click ( )
436+ cy . get ( '[data-cy="editRowModal"] .checkbox-radio-switch' ) . click ( )
437+ cy . intercept ( { method : 'GET' , url : '**/apps/tables/view/*/row/*/present' } ) . as ( 'isRowInViewPresent' )
438+ cy . get ( '[data-cy="editRowSaveButton"]' ) . click ( )
439+
440+ // ## check server response for /view/{viewId}/row/{id}/present
441+ cy . wait ( '@isRowInViewPresent' ) . then ( ( { response : { body : { present } } } ) => {
442+ expect ( present ) . to . be . false
443+ } )
444+
445+ // ## check if row does not exist
446+ cy . contains ( '[data-cy="ncTable"] [data-cy="customTableRow"]' , 'checked row' ) . should ( 'not.exist' )
447+
448+ // # inline edit row
449+ // ## uncheck row
450+ cy . intercept ( { method : 'GET' , url : '**/apps/tables/view/*/row/*/present' } ) . as ( 'isRowInViewPresent' )
451+ cy . contains ( '[data-cy="ncTable"] [data-cy="customTableRow"]' , 'first row' ) . closest ( '[data-cy="customTableRow"]' ) . find ( '.inline-editing-container .checkbox-radio-switch' ) . click ( )
452+
453+ // ## check server response for /view/{viewId}/row/{id}/present
454+ cy . wait ( '@isRowInViewPresent' ) . then ( ( { response : { body : { present } } } ) => {
455+ expect ( present ) . to . be . false
456+ } )
457+
458+ // ## check if row does not exist
459+ cy . contains ( '[data-cy="ncTable"] [data-cy="customTableRow"]' , 'first row' ) . should ( 'not.exist' )
460+ } )
376461} )
0 commit comments