@@ -428,7 +428,7 @@ describe("GovernanceCanister", () => {
428
428
} ) ;
429
429
430
430
describe ( "GovernanceCanister.listNeurons" , ( ) => {
431
- it ( "list user neurons" , async ( ) => {
431
+ it ( "list user neurons - backwards compability no pagination " , async ( ) => {
432
432
const service = mock < ActorSubclass < GovernanceService > > ( ) ;
433
433
const certifiedService = mock < ActorSubclass < GovernanceService > > ( ) ;
434
434
const oldService = mock < ActorSubclass < GovernanceService > > ( ) ;
@@ -458,6 +458,95 @@ describe("GovernanceCanister", () => {
458
458
expect ( oldService . list_neurons ) . not . toBeCalled ( ) ;
459
459
} ) ;
460
460
461
+ it ( "list user neurons with pagination" , async ( ) => {
462
+ const service = mock < ActorSubclass < GovernanceService > > ( ) ;
463
+ const certifiedService = mock < ActorSubclass < GovernanceService > > ( ) ;
464
+ const oldService = mock < ActorSubclass < GovernanceService > > ( ) ;
465
+
466
+ certifiedService . list_neurons . mockResolvedValueOnce ( {
467
+ ...mockListNeuronsResponse ,
468
+ total_pages_available : [ 2n ] ,
469
+ } ) ;
470
+ certifiedService . list_neurons . mockResolvedValueOnce ( {
471
+ ...mockListNeuronsResponse ,
472
+ total_pages_available : [ 2n ] ,
473
+ } ) ;
474
+
475
+ const governance = GovernanceCanister . create ( {
476
+ certifiedServiceOverride : certifiedService ,
477
+ serviceOverride : service ,
478
+ oldListNeuronsServiceOverride : oldService ,
479
+ } ) ;
480
+
481
+ const neurons = await governance . listNeurons ( {
482
+ certified : true ,
483
+ includeEmptyNeurons : true ,
484
+ includePublicNeurons : true ,
485
+ } ) ;
486
+
487
+ // Get first page and page number
488
+ expect ( certifiedService . list_neurons ) . toHaveBeenNthCalledWith ( 1 , {
489
+ neuron_ids : new BigUint64Array ( ) ,
490
+ include_neurons_readable_by_caller : true ,
491
+ include_empty_neurons_readable_by_caller : [ true ] ,
492
+ include_public_neurons_in_full_neurons : [ true ] ,
493
+ page_number : [ ] ,
494
+ page_size : [ 500n ] ,
495
+ } ) ;
496
+
497
+ // Second call fetching the second page
498
+ expect ( certifiedService . list_neurons ) . toHaveBeenNthCalledWith ( 2 , {
499
+ neuron_ids : new BigUint64Array ( ) ,
500
+ include_neurons_readable_by_caller : true ,
501
+ include_empty_neurons_readable_by_caller : [ true ] ,
502
+ include_public_neurons_in_full_neurons : [ true ] ,
503
+ page_number : [ 1n ] ,
504
+ page_size : [ 500n ] ,
505
+ } ) ;
506
+
507
+ expect ( certifiedService . list_neurons ) . toBeCalledTimes ( 2 ) ;
508
+ expect ( neurons . length ) . toBe ( 2 ) ; // One neuron per page
509
+ expect ( service . list_neurons ) . not . toBeCalled ( ) ;
510
+ expect ( oldService . list_neurons ) . not . toBeCalled ( ) ;
511
+ } ) ;
512
+
513
+ it ( "list user neurons without pagination" , async ( ) => {
514
+ const service = mock < ActorSubclass < GovernanceService > > ( ) ;
515
+ const certifiedService = mock < ActorSubclass < GovernanceService > > ( ) ;
516
+ const oldService = mock < ActorSubclass < GovernanceService > > ( ) ;
517
+
518
+ certifiedService . list_neurons . mockResolvedValue ( {
519
+ ...mockListNeuronsResponse ,
520
+ total_pages_available : [ ] ,
521
+ } ) ;
522
+
523
+ const governance = GovernanceCanister . create ( {
524
+ certifiedServiceOverride : certifiedService ,
525
+ serviceOverride : service ,
526
+ oldListNeuronsServiceOverride : oldService ,
527
+ } ) ;
528
+
529
+ const neurons = await governance . listNeurons ( {
530
+ certified : true ,
531
+ includeEmptyNeurons : true ,
532
+ includePublicNeurons : true ,
533
+ } ) ;
534
+
535
+ expect ( certifiedService . list_neurons ) . toBeCalledWith ( {
536
+ neuron_ids : new BigUint64Array ( ) ,
537
+ include_neurons_readable_by_caller : true ,
538
+ include_empty_neurons_readable_by_caller : [ true ] ,
539
+ include_public_neurons_in_full_neurons : [ true ] ,
540
+ page_number : [ ] ,
541
+ page_size : [ 500n ] ,
542
+ } ) ;
543
+
544
+ expect ( certifiedService . list_neurons ) . toBeCalledTimes ( 1 ) ;
545
+ expect ( neurons . length ) . toBe ( 1 ) ;
546
+ expect ( service . list_neurons ) . not . toBeCalled ( ) ;
547
+ expect ( oldService . list_neurons ) . not . toBeCalled ( ) ;
548
+ } ) ;
549
+
461
550
it ( "list user neurons excluding empty neurons" , async ( ) => {
462
551
const service = mock < ActorSubclass < GovernanceService > > ( ) ;
463
552
const oldService = mock < ActorSubclass < GovernanceService > > ( ) ;
0 commit comments