@@ -5269,6 +5269,60 @@ describe('Parameterized', () => {
52695269 expect ( listener ) . toHaveBeenCalledTimes ( 1 ) ;
52705270 } ) ;
52715271
5272+ test ( 'addParamValuesListener ignores equal string[] params' , ( ) => {
5273+ store . setTable ( 't1' , { r1 : { c1 : 'a' } , r2 : { c1 : 'b' } , r3 : { c1 : 'c' } } ) ;
5274+ queries . setQueryDefinition (
5275+ 'q1' ,
5276+ 't1' ,
5277+ ( { select, where, param} ) => {
5278+ select ( 'c1' ) ;
5279+ where ( ( getTableCell ) =>
5280+ ( param ( 'p1' ) as string [ ] ) . includes ( getTableCell ( 'c1' ) as string ) ,
5281+ ) ;
5282+ } ,
5283+ { p1 : [ 'a' , 'b' ] } ,
5284+ ) ;
5285+
5286+ const listener = vi . fn ( ) ;
5287+ queries . addParamValuesListener ( 'q1' , listener ) ;
5288+
5289+ queries . setParamValues ( 'q1' , { p1 : [ 'a' , 'b' ] } ) ;
5290+ expect ( listener ) . toHaveBeenCalledTimes ( 0 ) ;
5291+
5292+ queries . setParamValues ( 'q1' , { p1 : [ 'a' ] } ) ;
5293+ expect ( listener ) . toHaveBeenCalledTimes ( 1 ) ;
5294+
5295+ queries . setParamValues ( 'q1' , { p1 : [ 'a' ] } ) ;
5296+ expect ( listener ) . toHaveBeenCalledTimes ( 1 ) ;
5297+ } ) ;
5298+
5299+ test ( 'addParamValuesListener ignores equal number[] params' , ( ) => {
5300+ store . setTable ( 't1' , { r1 : { c1 : 1 } , r2 : { c1 : 2 } , r3 : { c1 : 3 } } ) ;
5301+ queries . setQueryDefinition (
5302+ 'q1' ,
5303+ 't1' ,
5304+ ( { select, where, param} ) => {
5305+ select ( 'c1' ) ;
5306+ where ( ( getTableCell ) =>
5307+ ( param ( 'p1' ) as number [ ] ) . includes ( getTableCell ( 'c1' ) as number ) ,
5308+ ) ;
5309+ } ,
5310+ { p1 : [ 1 , 2 ] } ,
5311+ ) ;
5312+
5313+ const listener = vi . fn ( ) ;
5314+ queries . addParamValuesListener ( 'q1' , listener ) ;
5315+
5316+ queries . setParamValues ( 'q1' , { p1 : [ 1 , 2 ] } ) ;
5317+ expect ( listener ) . toHaveBeenCalledTimes ( 0 ) ;
5318+
5319+ queries . setParamValues ( 'q1' , { p1 : [ 2 , 3 ] } ) ;
5320+ expect ( listener ) . toHaveBeenCalledTimes ( 1 ) ;
5321+
5322+ queries . setParamValues ( 'q1' , { p1 : [ 2 , 3 ] } ) ;
5323+ expect ( listener ) . toHaveBeenCalledTimes ( 1 ) ;
5324+ } ) ;
5325+
52725326 test ( 'addParamValueListener for specific query and param' , ( ) => {
52735327 store . setTable ( 't1' , {
52745328 r1 : { c1 : 'a' , c2 : 'b' , c3 : 5 } ,
@@ -5371,5 +5425,32 @@ describe('Parameterized', () => {
53715425 queries . setParamValue ( 'q1' , 'p1' , 'd' ) ; // Same value again
53725426 expect ( listener ) . toHaveBeenCalledTimes ( 1 ) ;
53735427 } ) ;
5428+
5429+ test ( 'addParamValueListener ignores equal boolean[] params' , ( ) => {
5430+ store . setTable ( 't1' , { r1 : { c1 : true } , r2 : { c1 : false } } ) ;
5431+ queries . setQueryDefinition (
5432+ 'q1' ,
5433+ 't1' ,
5434+ ( { select, where, param} ) => {
5435+ select ( 'c1' ) ;
5436+ where ( ( getTableCell ) =>
5437+ ( param ( 'p1' ) as boolean [ ] ) . includes ( getTableCell ( 'c1' ) as boolean ) ,
5438+ ) ;
5439+ } ,
5440+ { p1 : [ true ] } ,
5441+ ) ;
5442+
5443+ const listener = vi . fn ( ) ;
5444+ queries . addParamValueListener ( 'q1' , 'p1' , listener ) ;
5445+
5446+ queries . setParamValue ( 'q1' , 'p1' , [ true ] ) ;
5447+ expect ( listener ) . toHaveBeenCalledTimes ( 0 ) ;
5448+
5449+ queries . setParamValue ( 'q1' , 'p1' , [ false ] ) ;
5450+ expect ( listener ) . toHaveBeenCalledTimes ( 1 ) ;
5451+
5452+ queries . setParamValue ( 'q1' , 'p1' , [ false ] ) ;
5453+ expect ( listener ) . toHaveBeenCalledTimes ( 1 ) ;
5454+ } ) ;
53745455 } ) ;
53755456} ) ;
0 commit comments