From dd5ec20ad584b0f249d435356f8b68fc1122c560 Mon Sep 17 00:00:00 2001 From: findolor Date: Fri, 20 Sep 2024 12:28:25 +0300 Subject: [PATCH 1/2] fix: add zero check to prevent division by zero --- tauri-app/src/lib/components/detail/TanstackOrderQuote.svelte | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tauri-app/src/lib/components/detail/TanstackOrderQuote.svelte b/tauri-app/src/lib/components/detail/TanstackOrderQuote.svelte index e1eee6fae..1a013cc56 100644 --- a/tauri-app/src/lib/components/detail/TanstackOrderQuote.svelte +++ b/tauri-app/src/lib/components/detail/TanstackOrderQuote.svelte @@ -103,7 +103,9 @@ {formatUnits(BigInt(item.data.ratio), 18)} ({formatUnits(10n ** 36n / BigInt(item.data.ratio), 18)})({BigInt(item.data.ratio) > 0n + ? formatUnits(10n ** 36n / BigInt(item.data.ratio), 18) + : '0'}) Date: Fri, 20 Sep 2024 12:34:35 +0300 Subject: [PATCH 2/2] test: update test --- .../detail/TanstackOrderQuote.test.ts | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/tauri-app/src/lib/components/detail/TanstackOrderQuote.test.ts b/tauri-app/src/lib/components/detail/TanstackOrderQuote.test.ts index c398f6a01..bddc242cd 100644 --- a/tauri-app/src/lib/components/detail/TanstackOrderQuote.test.ts +++ b/tauri-app/src/lib/components/detail/TanstackOrderQuote.test.ts @@ -177,3 +177,38 @@ test('displays error message when query fails', async () => { expect(errorCell).toBeInTheDocument(); }); }); + +test('displays zero for price when io ratio is zero', async () => { + mockIPC((cmd) => { + if (cmd === 'batch_order_quotes') { + return [ + { + success: true, + block_number: '0x123', + pair: { pair_name: 'ETH/USDT', input_index: 0, output_index: 1 }, + data: { maxOutput: '0x158323e942e36d8c', ratio: '0x0' }, + error: undefined, + } satisfies BatchOrderQuotesResponse, + ]; + } + }); + + const queryClient = new QueryClient(); + + render(TanstackOrderQuote, { + props: { + id: '0x123', + order: mockOrderDetailsExtended.order, + }, + context: new Map([['$$_queryClient', queryClient]]), + }); + + await waitFor(() => { + const orderQuoteComponent = screen.getByTestId('bodyRow'); + + expect(orderQuoteComponent).toHaveTextContent('ETH/USDT'); + expect(orderQuoteComponent).toHaveTextContent('1.550122181502135692'); // maxOutput + expect(orderQuoteComponent).toHaveTextContent('0'); // ratio + expect(orderQuoteComponent).toHaveTextContent('(0)'); // inverse price + }); +});