From f09da7f9186a8edcb106d55a3c7818aff36d45d8 Mon Sep 17 00:00:00 2001 From: Simon Warta Date: Wed, 1 Jul 2020 15:57:38 +0200 Subject: [PATCH] Test and fix needsRefill --- packages/faucet/src/tokenmanager.spec.ts | 37 +++++++++++++++++++++++- packages/faucet/src/tokenmanager.ts | 5 +--- 2 files changed, 37 insertions(+), 5 deletions(-) diff --git a/packages/faucet/src/tokenmanager.spec.ts b/packages/faucet/src/tokenmanager.spec.ts index 3725a2f8..35ade7a7 100644 --- a/packages/faucet/src/tokenmanager.spec.ts +++ b/packages/faucet/src/tokenmanager.spec.ts @@ -1,5 +1,5 @@ import { TokenManager } from "./tokenmanager"; -import { TokenConfiguration } from "./types"; +import { MinimalAccount, TokenConfiguration } from "./types"; const dummyConfig: TokenConfiguration = { bankTokens: [ @@ -138,4 +138,39 @@ describe("TokenManager", () => { }); }); }); + + describe("needsRefill", () => { + const tm = new TokenManager(dummyConfig); + + it("works for sufficient/insufficient balance", () => { + const brokeAccount: MinimalAccount = { + address: "cosmos1rtfrpqt3yd7c8g73m9rsaen7fft0h52m3v9v5a", + balance: [ + { + denom: "utokenz", + amount: "3", + }, + ], + }; + const richAccount: MinimalAccount = { + address: "cosmos1rtfrpqt3yd7c8g73m9rsaen7fft0h52m3v9v5a", + balance: [ + { + denom: "utokenz", + amount: "3456789000000", // 3456789 TOKENZ + }, + ], + }; + expect(tm.needsRefill(brokeAccount, "TOKENZ")).toEqual(true); + expect(tm.needsRefill(richAccount, "TOKENZ")).toEqual(false); + }); + + it("works for missing balance", () => { + const emptyAccount: MinimalAccount = { + address: "cosmos1rtfrpqt3yd7c8g73m9rsaen7fft0h52m3v9v5a", + balance: [], + }; + expect(tm.needsRefill(emptyAccount, "TOKENZ")).toEqual(true); + }); + }); }); diff --git a/packages/faucet/src/tokenmanager.ts b/packages/faucet/src/tokenmanager.ts index 9d09ad76..26fb80e1 100644 --- a/packages/faucet/src/tokenmanager.ts +++ b/packages/faucet/src/tokenmanager.ts @@ -47,10 +47,7 @@ export class TokenManager { const balanceAmount = account.balance.find((b) => b.denom === meta.denom); - const balance = balanceAmount - ? Decimal.fromAtomics(balanceAmount.amount, meta.fractionalDigits) - : Decimal.fromAtomics("0", 0); - + const balance = Decimal.fromAtomics(balanceAmount ? balanceAmount.amount : "0", meta.fractionalDigits); const thresholdAmount = this.refillThreshold(tickerSymbol); const threshold = Decimal.fromAtomics(thresholdAmount.amount, meta.fractionalDigits);