@@ -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,16 @@ 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+ } ) ;
173+
164174 test ( "Header is not filtered" , ( ) => {
165175 updateFilter ( model , "A1" , [ "A1" ] ) ;
166176 expect ( model . getters . isRowHidden ( sheetId , 0 ) ) . toEqual ( false ) ;
@@ -195,17 +205,17 @@ describe("Filter Evaluation", () => {
195205
196206 test ( "Updating a table zone keep the filtered values if the filter header did not move" , ( ) => {
197207 updateFilter ( model , "A1" , [ "A2" ] ) ;
198- expect ( getFilterHiddenValues ( model , sheetId ) ) . toMatchObject ( [ { zone : "A1:A5" , value : [ "A2 " ] } ] ) ;
208+ expect ( getFilterHiddenValues ( model , sheetId ) ) . toMatchObject ( [ { zone : "A1:A5" , value : [ "a2 " ] } ] ) ;
199209 expect ( model . getters . isRowHidden ( sheetId , 1 ) ) . toEqual ( true ) ;
200210
201211 updateTableZone ( model , "A1:A5" , "A1:A6" ) ;
202- expect ( getFilterHiddenValues ( model , sheetId ) ) . toMatchObject ( [ { zone : "A1:A6" , value : [ "A2 " ] } ] ) ;
212+ expect ( getFilterHiddenValues ( model , sheetId ) ) . toMatchObject ( [ { zone : "A1:A6" , value : [ "a2 " ] } ] ) ;
203213 expect ( model . getters . isRowHidden ( sheetId , 1 ) ) . toEqual ( true ) ;
204214 } ) ;
205215
206216 test ( "Updating a table zone drops the filtered values if the filter header moved" , ( ) => {
207217 updateFilter ( model , "A1" , [ "A3" ] ) ;
208- expect ( getFilterHiddenValues ( model , sheetId ) ) . toMatchObject ( [ { zone : "A1:A5" , value : [ "A3 " ] } ] ) ;
218+ expect ( getFilterHiddenValues ( model , sheetId ) ) . toMatchObject ( [ { zone : "A1:A5" , value : [ "a3 " ] } ] ) ;
209219 expect ( model . getters . isRowHidden ( sheetId , 2 ) ) . toEqual ( true ) ;
210220
211221 updateTableZone ( model , "A1:A5" , "A2:A5" ) ;
@@ -215,7 +225,7 @@ describe("Filter Evaluation", () => {
215225
216226 test ( "Updating a table zone updates the hidden rows" , ( ) => {
217227 updateFilter ( model , "A1" , [ "A2" ] ) ;
218- expect ( getFilterHiddenValues ( model , sheetId ) ) . toMatchObject ( [ { zone : "A1:A5" , value : [ "A2 " ] } ] ) ;
228+ expect ( getFilterHiddenValues ( model , sheetId ) ) . toMatchObject ( [ { zone : "A1:A5" , value : [ "a2 " ] } ] ) ;
219229 expect ( model . getters . isRowHidden ( sheetId , 1 ) ) . toEqual ( true ) ;
220230
221231 updateTableZone ( model , "A1:A5" , "E1:E3" ) ;
@@ -225,7 +235,7 @@ describe("Filter Evaluation", () => {
225235
226236 test ( "Removing the filters from a table updates the hidden rows" , ( ) => {
227237 updateFilter ( model , "A1" , [ "A2" ] ) ;
228- expect ( getFilterHiddenValues ( model , sheetId ) ) . toMatchObject ( [ { zone : "A1:A5" , value : [ "A2 " ] } ] ) ;
238+ expect ( getFilterHiddenValues ( model , sheetId ) ) . toMatchObject ( [ { zone : "A1:A5" , value : [ "a2 " ] } ] ) ;
229239 expect ( model . getters . isRowHidden ( sheetId , 1 ) ) . toEqual ( true ) ;
230240
231241 updateTableConfig ( model , "A1:A5" , { hasFilters : false } ) ;
@@ -377,6 +387,27 @@ describe("Filter criterion test", () => {
377387 }
378388 ) ;
379389
390+ test . each ( [ "beginsWithText" , "endsWithText" , "isEqualText" ] as const ) (
391+ "Can filter based on a text criterion %s ignoring lowercase/uppercase and whitespaces" ,
392+ ( type ) => {
393+ const grid = {
394+ A2 : "a" ,
395+ A3 : " a" ,
396+ A4 : "a " ,
397+ A5 : "A" ,
398+ A6 : "b" ,
399+ } ;
400+ setGrid ( model , grid ) ;
401+ createTableWithFilter ( model , "A1:A6" ) ;
402+ updateFilterCriterion ( model , "A1" , {
403+ type,
404+ values : [ "a" ] ,
405+ } ) ;
406+
407+ expect ( getFilteredRows ( ) ) . toEqual ( [ 5 ] ) ;
408+ }
409+ ) ;
410+
380411 test . each ( [
381412 [ "isEqual" , [ "1" ] , [ 2 , 3 ] ] ,
382413 [ "isNotEqual" , [ "1" ] , [ 1 ] ] ,
0 commit comments