From 2ce1d5b57dd053c354fd2aa27849643eaa027abb Mon Sep 17 00:00:00 2001 From: Benjamin Smith Date: Sun, 2 Feb 2025 00:22:49 +0100 Subject: [PATCH 1/2] Use toFixed --- packages/agent-sdk/src/evm/safe.ts | 4 ++-- packages/agent-sdk/tests/evm/safe.spec.ts | 26 ++++++++++++++++++++++- 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/packages/agent-sdk/src/evm/safe.ts b/packages/agent-sdk/src/evm/safe.ts index 821ad78..94044ee 100644 --- a/packages/agent-sdk/src/evm/safe.ts +++ b/packages/agent-sdk/src/evm/safe.ts @@ -128,7 +128,7 @@ export async function flatSafeBalances( } // TODO(bh2smith): Move this into Zerion SDK -function zerionToTokenBalance(userToken: UserToken): TokenBalance { +export function zerionToTokenBalance(userToken: UserToken): TokenBalance { const { meta, balances } = userToken; return { tokenAddress: meta.contractAddress || null, @@ -138,7 +138,7 @@ function zerionToTokenBalance(userToken: UserToken): TokenBalance { decimals: meta.decimals, logoUri: meta.tokenIcon || "", }, - balance: parseUnits(balances.balance.toString(), meta.decimals).toString(), // Convert number to string + balance: parseUnits(balances.balance.toFixed(), meta.decimals).toString(), // Convert number to string fiatBalance: balances.usdBalance.toFixed(2), fiatConversion: (balances.price || 0).toFixed(2), }; diff --git a/packages/agent-sdk/tests/evm/safe.spec.ts b/packages/agent-sdk/tests/evm/safe.spec.ts index 8488c45..ea1cdcf 100644 --- a/packages/agent-sdk/tests/evm/safe.spec.ts +++ b/packages/agent-sdk/tests/evm/safe.spec.ts @@ -1,5 +1,10 @@ import { zeroAddress } from "viem"; -import { getSafeBalances, flatSafeBalances } from "../../src"; +import { + getSafeBalances, + flatSafeBalances, + zerionToTokenBalance, +} from "../../src"; +import { UserToken } from "zerion-sdk"; describe("getSafeBalances", () => { const originalWarn = console.warn; @@ -17,6 +22,25 @@ describe("getSafeBalances", () => { await expect(getSafeBalances(999, zeroAddress)).resolves.toEqual([]); }); + it("should throw error for unsupported chain ID", async () => { + const x: UserToken = { + chain: { + chainName: "", + }, + balances: { + balance: 2.22047152096e-16, + usdBalance: 0, + }, + meta: { + name: "", + symbol: "", + decimals: 0, + isSpam: false, + }, + }; + await expect(zerionToTokenBalance(x)).resolves.toEqual([]); + }); + it.skip("should fetch balances for Arbitrum", async () => { const result = await getSafeBalances( 42161, From e2702479acc12c4e13a8ac43e00911f2c235a1be Mon Sep 17 00:00:00 2001 From: Benjamin Smith Date: Sun, 2 Feb 2025 00:27:35 +0100 Subject: [PATCH 2/2] Fix Test --- packages/agent-sdk/tests/evm/safe.spec.ts | 41 ++++++++++++++--------- 1 file changed, 26 insertions(+), 15 deletions(-) diff --git a/packages/agent-sdk/tests/evm/safe.spec.ts b/packages/agent-sdk/tests/evm/safe.spec.ts index ea1cdcf..2bc6525 100644 --- a/packages/agent-sdk/tests/evm/safe.spec.ts +++ b/packages/agent-sdk/tests/evm/safe.spec.ts @@ -4,7 +4,6 @@ import { flatSafeBalances, zerionToTokenBalance, } from "../../src"; -import { UserToken } from "zerion-sdk"; describe("getSafeBalances", () => { const originalWarn = console.warn; @@ -22,23 +21,35 @@ describe("getSafeBalances", () => { await expect(getSafeBalances(999, zeroAddress)).resolves.toEqual([]); }); - it("should throw error for unsupported chain ID", async () => { - const x: UserToken = { - chain: { - chainName: "", - }, - balances: { - balance: 2.22047152096e-16, - usdBalance: 0, - }, - meta: { + it("should throw error for unsupported chain ID", () => { + expect( + zerionToTokenBalance({ + chain: { + chainName: "", + }, + balances: { + balance: 2.22047152096e-16, + usdBalance: 0, + }, + meta: { + name: "", + symbol: "", + decimals: 0, + isSpam: false, + }, + }), + ).toEqual({ + balance: "0", + fiatBalance: "0.00", + fiatConversion: "0.00", + token: { + decimals: 0, + logoUri: "", name: "", symbol: "", - decimals: 0, - isSpam: false, }, - }; - await expect(zerionToTokenBalance(x)).resolves.toEqual([]); + tokenAddress: null, + }); }); it.skip("should fetch balances for Arbitrum", async () => {