@@ -34,14 +34,14 @@ describe("Simple filter test", () => {
3434 test ( "Can update a filter" , ( ) => {
3535 createTableWithFilter ( model , "A1:A5" ) ;
3636 updateFilter ( model , "A1" , [ "2" , "A" ] ) ;
37- expect ( model . getters . getFilterHiddenValues ( { sheetId, col : 0 , row : 0 } ) ) . toEqual ( [ "2" , "A " ] ) ;
37+ expect ( model . getters . getFilterHiddenValues ( { sheetId, col : 0 , row : 0 } ) ) . toEqual ( [ "2" , "a " ] ) ;
3838 } ) ;
3939
4040 test ( "Can update a filter in readonly mode" , ( ) => {
4141 createTableWithFilter ( model , "A1:A5" ) ;
4242 model . updateMode ( "readonly" ) ;
4343 updateFilter ( model , "A1" , [ "2" , "A" ] ) ;
44- expect ( model . getters . getFilterHiddenValues ( { sheetId, col : 0 , row : 0 } ) ) . toEqual ( [ "2" , "A " ] ) ;
44+ expect ( model . getters . getFilterHiddenValues ( { sheetId, col : 0 , row : 0 } ) ) . toEqual ( [ "2" , "a " ] ) ;
4545 } ) ;
4646
4747 test ( "Update filter is correctly rejected when target is not inside a table" , ( ) => {
@@ -95,11 +95,11 @@ describe("Simple filter test", () => {
9595 sheetIdTo : sheet2Id ,
9696 sheetNameTo : "Copy of Sheet1" ,
9797 } ) ;
98- expect ( getFilterHiddenValues ( model , sheet2Id ) ) . toMatchObject ( [ { zone : "B1:B3" , value : [ "C " ] } ] ) ;
98+ expect ( getFilterHiddenValues ( model , sheet2Id ) ) . toMatchObject ( [ { zone : "B1:B3" , value : [ "c " ] } ] ) ;
9999 deleteColumns ( model , [ "A" ] , sheet2Id ) ;
100100
101- expect ( getFilterHiddenValues ( model , sheetId ) ) . toMatchObject ( [ { zone : "B1:B3" , value : [ "C " ] } ] ) ;
102- expect ( getFilterHiddenValues ( model , sheet2Id ) ) . toMatchObject ( [ { zone : "A1:A3" , value : [ "C " ] } ] ) ;
101+ expect ( getFilterHiddenValues ( model , sheetId ) ) . toMatchObject ( [ { zone : "B1:B3" , value : [ "c " ] } ] ) ;
102+ expect ( getFilterHiddenValues ( model , sheet2Id ) ) . toMatchObject ( [ { zone : "A1:A3" , value : [ "c " ] } ] ) ;
103103 } ) ;
104104} ) ;
105105
@@ -161,6 +161,15 @@ describe("Filter Evaluation", () => {
161161 expect ( model . getters . isRowHidden ( sheetId , 2 ) ) . toEqual ( true ) ;
162162 } ) ;
163163
164+ test ( "Filters ignore whitespaces" , ( ) => {
165+ setCellContent ( model , "A2" , "a" ) ;
166+ setCellContent ( model , "A3" , " a" ) ;
167+ setCellContent ( model , "A4" , "a " ) ;
168+ updateFilter ( model , "A2" , [ "a" ] ) ;
169+ expect ( model . getters . isRowHidden ( sheetId , 1 ) ) . toEqual ( true ) ;
170+ expect ( model . getters . isRowHidden ( sheetId , 2 ) ) . toEqual ( true ) ;
171+ expect ( model . getters . isRowHidden ( sheetId , 3 ) ) . toEqual ( true ) ;
172+ } ) ;
164173 test ( "Header is not filtered" , ( ) => {
165174 updateFilter ( model , "A1" , [ "A1" ] ) ;
166175 expect ( model . getters . isRowHidden ( sheetId , 0 ) ) . toEqual ( false ) ;
@@ -195,17 +204,17 @@ describe("Filter Evaluation", () => {
195204
196205 test ( "Updating a table zone keep the filtered values if the filter header did not move" , ( ) => {
197206 updateFilter ( model , "A1" , [ "A2" ] ) ;
198- expect ( getFilterHiddenValues ( model , sheetId ) ) . toMatchObject ( [ { zone : "A1:A5" , value : [ "A2 " ] } ] ) ;
207+ expect ( getFilterHiddenValues ( model , sheetId ) ) . toMatchObject ( [ { zone : "A1:A5" , value : [ "a2 " ] } ] ) ;
199208 expect ( model . getters . isRowHidden ( sheetId , 1 ) ) . toEqual ( true ) ;
200209
201210 updateTableZone ( model , "A1:A5" , "A1:A6" ) ;
202- expect ( getFilterHiddenValues ( model , sheetId ) ) . toMatchObject ( [ { zone : "A1:A6" , value : [ "A2 " ] } ] ) ;
211+ expect ( getFilterHiddenValues ( model , sheetId ) ) . toMatchObject ( [ { zone : "A1:A6" , value : [ "a2 " ] } ] ) ;
203212 expect ( model . getters . isRowHidden ( sheetId , 1 ) ) . toEqual ( true ) ;
204213 } ) ;
205214
206215 test ( "Updating a table zone drops the filtered values if the filter header moved" , ( ) => {
207216 updateFilter ( model , "A1" , [ "A3" ] ) ;
208- expect ( getFilterHiddenValues ( model , sheetId ) ) . toMatchObject ( [ { zone : "A1:A5" , value : [ "A3 " ] } ] ) ;
217+ expect ( getFilterHiddenValues ( model , sheetId ) ) . toMatchObject ( [ { zone : "A1:A5" , value : [ "a3 " ] } ] ) ;
209218 expect ( model . getters . isRowHidden ( sheetId , 2 ) ) . toEqual ( true ) ;
210219
211220 updateTableZone ( model , "A1:A5" , "A2:A5" ) ;
@@ -215,7 +224,7 @@ describe("Filter Evaluation", () => {
215224
216225 test ( "Updating a table zone updates the hidden rows" , ( ) => {
217226 updateFilter ( model , "A1" , [ "A2" ] ) ;
218- expect ( getFilterHiddenValues ( model , sheetId ) ) . toMatchObject ( [ { zone : "A1:A5" , value : [ "A2 " ] } ] ) ;
227+ expect ( getFilterHiddenValues ( model , sheetId ) ) . toMatchObject ( [ { zone : "A1:A5" , value : [ "a2 " ] } ] ) ;
219228 expect ( model . getters . isRowHidden ( sheetId , 1 ) ) . toEqual ( true ) ;
220229
221230 updateTableZone ( model , "A1:A5" , "E1:E3" ) ;
@@ -225,7 +234,7 @@ describe("Filter Evaluation", () => {
225234
226235 test ( "Removing the filters from a table updates the hidden rows" , ( ) => {
227236 updateFilter ( model , "A1" , [ "A2" ] ) ;
228- expect ( getFilterHiddenValues ( model , sheetId ) ) . toMatchObject ( [ { zone : "A1:A5" , value : [ "A2 " ] } ] ) ;
237+ expect ( getFilterHiddenValues ( model , sheetId ) ) . toMatchObject ( [ { zone : "A1:A5" , value : [ "a2 " ] } ] ) ;
229238 expect ( model . getters . isRowHidden ( sheetId , 1 ) ) . toEqual ( true ) ;
230239
231240 updateTableConfig ( model , "A1:A5" , { hasFilters : false } ) ;
@@ -377,6 +386,27 @@ describe("Filter criterion test", () => {
377386 }
378387 ) ;
379388
389+ test . each ( [ "beginsWithText" , "endsWithText" , "isEqualText" ] as const ) (
390+ "Can filter based on a text criterion %s ignoring lowercase/uppercase and whitespaces" ,
391+ ( type ) => {
392+ const grid = {
393+ A2 : "a" ,
394+ A3 : " a" ,
395+ A4 : "a " ,
396+ A5 : "A" ,
397+ A6 : "b" ,
398+ } ;
399+ setGrid ( model , grid ) ;
400+ createTableWithFilter ( model , "A1:A6" ) ;
401+ updateFilterCriterion ( model , "A1" , {
402+ type,
403+ values : [ "a" ] ,
404+ } ) ;
405+
406+ expect ( getFilteredRows ( ) ) . toEqual ( [ 5 ] ) ;
407+ }
408+ ) ;
409+
380410 test . each ( [
381411 [ "isEqual" , [ "1" ] , [ 2 , 3 ] ] ,
382412 [ "isNotEqual" , [ "1" ] , [ 1 ] ] ,
0 commit comments