Skip to content

Commit c8378b8

Browse files
committed
tests
1 parent 0d24d22 commit c8378b8

File tree

1 file changed

+90
-1
lines changed

1 file changed

+90
-1
lines changed

packages/nns/src/governance.canister.spec.ts

Lines changed: 90 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -428,7 +428,7 @@ describe("GovernanceCanister", () => {
428428
});
429429

430430
describe("GovernanceCanister.listNeurons", () => {
431-
it("list user neurons", async () => {
431+
it("list user neurons - backwards compability no pagination", async () => {
432432
const service = mock<ActorSubclass<GovernanceService>>();
433433
const certifiedService = mock<ActorSubclass<GovernanceService>>();
434434
const oldService = mock<ActorSubclass<GovernanceService>>();
@@ -458,6 +458,95 @@ describe("GovernanceCanister", () => {
458458
expect(oldService.list_neurons).not.toBeCalled();
459459
});
460460

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+
461550
it("list user neurons excluding empty neurons", async () => {
462551
const service = mock<ActorSubclass<GovernanceService>>();
463552
const oldService = mock<ActorSubclass<GovernanceService>>();

0 commit comments

Comments
 (0)