From a90ab851a66b0379924025dc71df74aca1c29df7 Mon Sep 17 00:00:00 2001 From: Connor Barr Date: Sat, 28 Dec 2024 10:44:02 +0000 Subject: [PATCH] test: added another test case --- .../__tests__/use-twinned-swap-input.spec.ts | 20 ++++++++++++++++--- packages/web/hooks/use-twinned-swap-input.ts | 10 ++++++++++ 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/packages/web/hooks/__tests__/use-twinned-swap-input.spec.ts b/packages/web/hooks/__tests__/use-twinned-swap-input.spec.ts index 685a054fd2..cc4452b1e1 100644 --- a/packages/web/hooks/__tests__/use-twinned-swap-input.spec.ts +++ b/packages/web/hooks/__tests__/use-twinned-swap-input.spec.ts @@ -92,6 +92,7 @@ describe("useTwinnedSwapInput", () => { } act(() => { + result.current.setPrice("1"); setAmount(""); result.current.setQuoteType("in-given-out"); }); @@ -144,20 +145,33 @@ describe("useTwinnedSwapInput", () => { expectedToken: focused === "fiat" ? "100.12" : "100.123456", expectedFiat: focused === "fiat" ? "100.12" : "100.123456", }, + { + scenario: "a non-standard price", + input: "100", + price: "0.125", + expectedToken: focused === "fiat" ? "800" : "100", + expectedFiat: focused === "fiat" ? "100" : "12.5", + }, ])( "should handle $scenario", - ({ input, expectedToken, expectedFiat, fail }) => { + ({ input, expectedToken, expectedFiat, fail, price = "1" }) => { act(() => { + result.current.setPrice(price); setAmount(input); }); + + // Check primary inputs are set correctly expect(result.current.tokenAmount).toBe(expectedToken); expect(result.current.fiatAmount).toBe(expectedFiat); + + // Check market conditions are set correctly expect(result.current.quoteType).toBe( fail ? "in-given-out" : expectedQuoteType ); - if (!fail) { - expect(result.current[updatedMarketField]).toBe(expectedToken); + expect(result.current[updatedMarketField]).toBe( + focused === "fiat" ? expectedFiat : expectedToken + ); } } ); diff --git a/packages/web/hooks/use-twinned-swap-input.ts b/packages/web/hooks/use-twinned-swap-input.ts index 0f3b4fadce..c8c4153ca1 100644 --- a/packages/web/hooks/use-twinned-swap-input.ts +++ b/packages/web/hooks/use-twinned-swap-input.ts @@ -95,6 +95,11 @@ export const useTwinnedSwapInput = ({ return; } + if (price.isNegative()) { + console.error("INPUT WARNING: Price is negative"); + return; + } + const tokenValue = transformAmount(value, baseAssetDecimals, false); if ( @@ -159,6 +164,11 @@ export const useTwinnedSwapInput = ({ return; } + if (price.isNegative()) { + console.error("INPUT WARNING: Price is negative"); + return; + } + // Fiat amount is always 2 decimal places const fiatValue = transformAmount(value, 2, false);