@@ -373,6 +373,54 @@ describe('GlobalKVStore', () => {
373373 } )
374374 } )
375375
376+ it ( 'forwards tagQueryMode "all" to the resolver (default)' , async ( ) => {
377+ primeResolverEmpty ( mockResolver )
378+
379+ const tags = [ 'music' , 'rock' ]
380+ const result = await kvStore . get ( { tags, tagQueryMode : 'all' } )
381+
382+ expect ( Array . isArray ( result ) ) . toBe ( true )
383+ expect ( mockResolver . query ) . toHaveBeenCalledWith ( {
384+ service : 'ls_kvstore' ,
385+ query : expect . objectContaining ( {
386+ tags,
387+ tagQueryMode : 'all'
388+ } )
389+ } )
390+ } )
391+
392+ it ( 'forwards tagQueryMode "any" to the resolver' , async ( ) => {
393+ primeResolverEmpty ( mockResolver )
394+
395+ const tags = [ 'music' , 'jazz' ]
396+ const result = await kvStore . get ( { tags, tagQueryMode : 'any' } )
397+
398+ expect ( Array . isArray ( result ) ) . toBe ( true )
399+ expect ( mockResolver . query ) . toHaveBeenCalledWith ( {
400+ service : 'ls_kvstore' ,
401+ query : expect . objectContaining ( {
402+ tags,
403+ tagQueryMode : 'any'
404+ } )
405+ } )
406+ } )
407+
408+ it ( 'defaults to tagQueryMode "all" when not specified' , async ( ) => {
409+ primeResolverEmpty ( mockResolver )
410+
411+ const tags = [ 'category:news' ]
412+ const result = await kvStore . get ( { tags } )
413+
414+ expect ( Array . isArray ( result ) ) . toBe ( true )
415+ expect ( mockResolver . query ) . toHaveBeenCalledWith ( {
416+ service : 'ls_kvstore' ,
417+ query : expect . objectContaining ( { tags } )
418+ } )
419+ // Verify tagQueryMode is not explicitly set (will default to 'all' on server side)
420+ const call = ( mockResolver . query as jest . Mock ) . mock . calls [ 0 ] [ 0 ]
421+ expect ( call . query . tagQueryMode ) . toBeUndefined ( )
422+ } )
423+
376424 it ( 'includes token data when includeToken=true for key queries' , async ( ) => {
377425 primeResolverWithOneOutput ( mockResolver )
378426
0 commit comments