From 83fdb922331270e2c0bbc40b0fafd294c7bde964 Mon Sep 17 00:00:00 2001 From: David Dal Busco Date: Mon, 14 Oct 2024 21:02:47 +0200 Subject: [PATCH] test: get_default_subnets Signed-off-by: David Dal Busco --- packages/cmc/src/cmc.canister.spec.ts | 63 +++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) diff --git a/packages/cmc/src/cmc.canister.spec.ts b/packages/cmc/src/cmc.canister.spec.ts index 701848d2..0bcd8455 100644 --- a/packages/cmc/src/cmc.canister.spec.ts +++ b/packages/cmc/src/cmc.canister.spec.ts @@ -1,6 +1,7 @@ import { ActorSubclass, HttpAgent } from "@dfinity/agent"; import { Principal } from "@dfinity/principal"; import { arrayOfNumberToUint8Array } from "@dfinity/utils"; +import type { QueryParams } from "@dfinity/utils/src"; import { mock } from "jest-mock-extended"; import type { _SERVICE as CMCService, @@ -16,6 +17,7 @@ import { RefundedError, TransactionTooOldError, } from "./cmc.errors"; +import { mockPrincipalText } from "./cmc.mock"; describe("CyclesMintingCanister", () => { const mockAgent: HttpAgent = mock(); @@ -291,4 +293,65 @@ describe("CyclesMintingCanister", () => { expect(call).rejects.toThrowError(CMCError); }); }); + + describe("CMCCanister.getDefaultSubnets", () => { + const expectedSubnets = [ + Principal.fromText(mockPrincipalText), + Principal.fromText("aaaaa-aa"), + ]; + + it("should return a list of default subnets for a query", async () => { + const service = mock(); + service.get_default_subnets.mockResolvedValue(expectedSubnets); + + const cmc = await createCMC(service); + + const callerSpy = jest.spyOn( + cmc as unknown as { + caller: (params: QueryParams) => Promise; + }, + "caller", + ); + + const result = await cmc.getDefaultSubnets({ certified: false }); + + expect(result).toEqual(expectedSubnets); + expect(service.get_default_subnets).toHaveBeenCalledTimes(1); + + expect(callerSpy).toHaveBeenCalledWith({ certified: false }); + }); + + it("should return a list of default subnets for an update", async () => { + const service = mock(); + service.get_default_subnets.mockResolvedValue(expectedSubnets); + + const cmc = await createCMC(service); + + const callerSpy = jest.spyOn( + cmc as unknown as { + caller: (params: QueryParams) => Promise; + }, + "caller", + ); + + const result = await cmc.getDefaultSubnets({ certified: true }); + + expect(result).toEqual(expectedSubnets); + expect(service.get_default_subnets).toHaveBeenCalledTimes(1); + + expect(callerSpy).toHaveBeenCalledWith({ certified: true }); + }); + + it("should throw an error if the canister call ends in error", async () => { + const service = mock(); + service.get_default_subnets.mockRejectedValue(new Error("Test")); + + const cmc = await createCMC(service); + + await expect(cmc.getDefaultSubnets({ certified: true })).rejects.toThrow( + "Test", + ); + expect(service.get_default_subnets).toHaveBeenCalledTimes(1); + }); + }); });