@@ -406,11 +406,12 @@ export function createPaginationTestSuite(
406406 const usersCollection = config . collections . onDemand . users
407407
408408 // Create query with multi-column orderBy and limit
409+ // Using age (number) and name (string) to avoid boolean comparison issues
409410 const query = createLiveQueryCollection ( ( q ) =>
410411 q
411412 . from ( { user : usersCollection } )
412- . orderBy ( ( { user } ) => user . isActive , `desc` )
413413 . orderBy ( ( { user } ) => user . age , `asc` )
414+ . orderBy ( ( { user } ) => user . name , `asc` )
414415 . limit ( 10 )
415416 )
416417
@@ -421,16 +422,14 @@ export function createPaginationTestSuite(
421422 const firstPage = Array . from ( query . state . values ( ) )
422423 expect ( firstPage ) . toHaveLength ( 10 )
423424
424- // Verify first page ordering
425+ // Verify first page ordering (age asc, then name asc)
425426 for ( let i = 1 ; i < firstPage . length ; i ++ ) {
426427 const prev = firstPage [ i - 1 ] !
427428 const curr = firstPage [ i ] !
428- if ( prev . isActive !== curr . isActive ) {
429- expect ( prev . isActive ? 1 : 0 ) . toBeGreaterThanOrEqual (
430- curr . isActive ? 1 : 0
431- )
432- } else {
429+ if ( prev . age !== curr . age ) {
433430 expect ( prev . age ) . toBeLessThanOrEqual ( curr . age )
431+ } else {
432+ expect ( prev . name . localeCompare ( curr . name ) ) . toBeLessThanOrEqual ( 0 )
434433 }
435434 }
436435
@@ -455,12 +454,10 @@ export function createPaginationTestSuite(
455454 for ( let i = 1 ; i < secondPage . length ; i ++ ) {
456455 const prev = secondPage [ i - 1 ] !
457456 const curr = secondPage [ i ] !
458- if ( prev . isActive !== curr . isActive ) {
459- expect ( prev . isActive ? 1 : 0 ) . toBeGreaterThanOrEqual (
460- curr . isActive ? 1 : 0
461- )
462- } else {
457+ if ( prev . age !== curr . age ) {
463458 expect ( prev . age ) . toBeLessThanOrEqual ( curr . age )
459+ } else {
460+ expect ( prev . name . localeCompare ( curr . name ) ) . toBeLessThanOrEqual ( 0 )
464461 }
465462 }
466463
@@ -483,8 +480,8 @@ export function createPaginationTestSuite(
483480 const query = createLiveQueryCollection ( ( q ) =>
484481 q
485482 . from ( { user : usersCollection } )
486- . orderBy ( ( { user } ) => user . isActive , `desc` )
487483 . orderBy ( ( { user } ) => user . age , `asc` )
484+ . orderBy ( ( { user } ) => user . name , `asc` )
488485 . limit ( 10 )
489486 . offset ( 20 )
490487 )
@@ -512,16 +509,14 @@ export function createPaginationTestSuite(
512509 expect ( laterPageIds . has ( id ) ) . toBe ( false )
513510 }
514511
515- // Verify ordering on earlier page
512+ // Verify ordering on earlier page (age asc, name asc)
516513 for ( let i = 1 ; i < earlierPage . length ; i ++ ) {
517514 const prev = earlierPage [ i - 1 ] !
518515 const curr = earlierPage [ i ] !
519- if ( prev . isActive !== curr . isActive ) {
520- expect ( prev . isActive ? 1 : 0 ) . toBeGreaterThanOrEqual (
521- curr . isActive ? 1 : 0
522- )
523- } else {
516+ if ( prev . age !== curr . age ) {
524517 expect ( prev . age ) . toBeLessThanOrEqual ( curr . age )
518+ } else {
519+ expect ( prev . name . localeCompare ( curr . name ) ) . toBeLessThanOrEqual ( 0 )
525520 }
526521 }
527522
@@ -582,13 +577,13 @@ export function createPaginationTestSuite(
582577 const config = await getConfig ( )
583578 const usersCollection = config . collections . onDemand . users
584579
585- // isActive has only 2 values (true/false) , so many duplicates in first column
580+ // Age has limited unique values in test data , so many duplicates in first column
586581 // This tests that the composite cursor correctly handles paging across duplicates
587582 const query = createLiveQueryCollection ( ( q ) =>
588583 q
589584 . from ( { user : usersCollection } )
590- . orderBy ( ( { user } ) => user . isActive , `desc` )
591585 . orderBy ( ( { user } ) => user . age , `asc` )
586+ . orderBy ( ( { user } ) => user . name , `asc` )
592587 . limit ( 20 )
593588 )
594589
@@ -612,12 +607,10 @@ export function createPaginationTestSuite(
612607 for ( let i = 1 ; i < secondPage . length ; i ++ ) {
613608 const prev = secondPage [ i - 1 ] !
614609 const curr = secondPage [ i ] !
615- if ( prev . isActive !== curr . isActive ) {
616- expect ( prev . isActive ? 1 : 0 ) . toBeGreaterThanOrEqual (
617- curr . isActive ? 1 : 0
618- )
619- } else {
610+ if ( prev . age !== curr . age ) {
620611 expect ( prev . age ) . toBeLessThanOrEqual ( curr . age )
612+ } else {
613+ expect ( prev . name . localeCompare ( curr . name ) ) . toBeLessThanOrEqual ( 0 )
621614 }
622615 }
623616
@@ -659,8 +652,8 @@ export function createPaginationTestSuite(
659652 const query = createLiveQueryCollection ( ( q ) =>
660653 q
661654 . from ( { user : usersCollection } )
662- . orderBy ( ( { user } ) => user . isActive , `desc` )
663655 . orderBy ( ( { user } ) => user . age , `asc` )
656+ . orderBy ( ( { user } ) => user . name , `asc` )
664657 . limit ( 5 )
665658 )
666659
@@ -703,17 +696,17 @@ export function createPaginationTestSuite(
703696 const firstItemSecondPage = secondPage [ 0 ] !
704697
705698 // The first item of page 2 should come after the last item of page 1
706- // in the sort order (isActive desc, age asc)
707- if ( lastItemFirstPage . isActive === firstItemSecondPage . isActive ) {
708- // Same isActive value, so age should be greater or equal
699+ // in the sort order (age asc, name asc)
700+ if ( lastItemFirstPage . age === firstItemSecondPage . age ) {
701+ // Same age value, so name should be greater or equal
702+ expect (
703+ firstItemSecondPage . name . localeCompare ( lastItemFirstPage . name )
704+ ) . toBeGreaterThanOrEqual ( 0 )
705+ } else {
706+ // Different age, page 2 first should have greater or equal age
709707 expect ( firstItemSecondPage . age ) . toBeGreaterThanOrEqual (
710708 lastItemFirstPage . age
711709 )
712- } else {
713- // Different isActive, page 1 last should be true, page 2 first should be false
714- // (since isActive is desc, true comes before false)
715- expect ( lastItemFirstPage . isActive ) . toBe ( true )
716- expect ( firstItemSecondPage . isActive ) . toBe ( false )
717710 }
718711
719712 await query . cleanup ( )
0 commit comments