diff --git a/packages/orderbook/test/js_api/dotrainRainlang.test.ts b/packages/orderbook/test/js_api/dotrainRainlang.test.ts index cb3d0b28ae..348af9fac9 100644 --- a/packages/orderbook/test/js_api/dotrainRainlang.test.ts +++ b/packages/orderbook/test/js_api/dotrainRainlang.test.ts @@ -159,7 +159,6 @@ describe('Rain Orderbook JS API Package Bindgen Tests - Dotrain Rainlang', async }); describe('DotrainRainlang Constructor', () => { - it('should create rainlang and fetch all content successfully', async () => { const rainlangContent = `http://localhost:8231/settings.yaml fixed-limit http://localhost:8231/fixed-limit.rain @@ -457,7 +456,6 @@ _ _: 0 0; `; describe('DotrainRainlang getOrderbookYaml', () => { - it('should return OrderbookYaml instance from settings', async () => { const rainlangContent = `http://localhost:8231/settings.yaml test-order http://localhost:8231/order.rain`; diff --git a/packages/orderbook/test/js_api/gui.test.ts b/packages/orderbook/test/js_api/gui.test.ts index 4799f0aa90..5cc8fafc69 100644 --- a/packages/orderbook/test/js_api/gui.test.ts +++ b/packages/orderbook/test/js_api/gui.test.ts @@ -24,11 +24,21 @@ import { const SPEC_VERSION = OrderbookYaml.getCurrentSpecVersion().value; // Rainlang contract function selectors -const EXPRESSION_DEPLOYER_ADDRESS_SELECTOR = toFunctionSelector('function expressionDeployerAddress() external view returns (address)'); -const INTERPRETER_ADDRESS_SELECTOR = toFunctionSelector('function interpreterAddress() external view returns (address)'); -const STORE_ADDRESS_SELECTOR = toFunctionSelector('function storeAddress() external view returns (address)'); -const PARSER_ADDRESS_SELECTOR = toFunctionSelector('function parserAddress() external view returns (address)'); -const PARSE2_SELECTOR = toFunctionSelector('function parse2(bytes calldata data) external view returns (bytes calldata bytecode)'); +const EXPRESSION_DEPLOYER_ADDRESS_SELECTOR = toFunctionSelector( + 'function expressionDeployerAddress() external view returns (address)' +); +const INTERPRETER_ADDRESS_SELECTOR = toFunctionSelector( + 'function interpreterAddress() external view returns (address)' +); +const STORE_ADDRESS_SELECTOR = toFunctionSelector( + 'function storeAddress() external view returns (address)' +); +const PARSER_ADDRESS_SELECTOR = toFunctionSelector( + 'function parserAddress() external view returns (address)' +); +const PARSE2_SELECTOR = toFunctionSelector( + 'function parse2(bytes calldata data) external view returns (bytes calldata bytecode)' +); import { getLocal } from 'mockttp'; const guiConfig = ` diff --git a/packages/ui-components/src/__tests__/VaultBalanceChart.test.ts b/packages/ui-components/src/__tests__/VaultBalanceChart.test.ts index d8040c54e0..acad5f49e2 100644 --- a/packages/ui-components/src/__tests__/VaultBalanceChart.test.ts +++ b/packages/ui-components/src/__tests__/VaultBalanceChart.test.ts @@ -1,32 +1,54 @@ -// TODO: Issue #1989 -// import { render } from '@testing-library/svelte'; -import { test } from 'vitest'; -// import { expect, test, vi } from 'vitest'; -// import { QueryClient } from '@tanstack/svelte-query'; -// import VaultBalanceChart from '../lib/components/charts/VaultBalanceChart.svelte'; -// import type { RaindexVault } from '@rainlanguage/orderbook'; -// import { writable } from 'svelte/store'; -// import type { ComponentProps } from 'svelte'; +import { render, waitFor } from '@testing-library/svelte'; +import { expect, test, vi } from 'vitest'; +import { QueryClient } from '@tanstack/svelte-query'; +import VaultBalanceChart from '../lib/components/charts/VaultBalanceChart.svelte'; +import type { RaindexVault } from '@rainlanguage/orderbook'; +import { get, writable } from 'svelte/store'; +import type { ComponentProps } from 'svelte'; +import { props } from '../lib/__mocks__/MockComponent'; -// type VaultBalanceChartProps = ComponentProps; +type VaultBalanceChartProps = ComponentProps; +type MockChartProps = { + priceSymbol?: string; + query: { + subscribe: (run: (value: unknown) => void) => () => void; + }; +}; -// vi.mock('../lib/components/charts/TanstackLightweightChartLine.svelte', async () => { -// const MockLightweightChart = (await import('../lib/__mocks__/MockComponent.svelte')).default; -// return { default: MockLightweightChart }; -// }); +vi.mock('../lib/components/charts/TanstackLightweightChartLine.svelte', async () => { + const MockLightweightChart = (await import('../lib/__mocks__/MockComponent.svelte')).default; + return { default: MockLightweightChart }; +}); + +test('calls getBalanceChanges with correct arguments', async () => { + const queryClient = new QueryClient(); + const mockVault: RaindexVault = { + id: 'vault1', + token: { + symbol: 'TKN' + }, + getBalanceChanges: vi.fn().mockResolvedValue({ + value: [], + error: null + }) + } as unknown as RaindexVault; + let unsubscribe = () => {}; + render(VaultBalanceChart, { + props: { + vault: mockVault, + lightweightChartsTheme: writable({}) + } as VaultBalanceChartProps, + context: new Map([['$$_queryClient', queryClient]]) + }); + + await waitFor(() => { + const mockProps = get(props) as MockChartProps; + expect(mockProps.priceSymbol).toBe('TKN'); + unsubscribe = mockProps.query.subscribe(() => undefined); + }); -test('calls getVaultBalanceChanges with correct arguments', async () => { - // const queryClient = new QueryClient(); - // const mockVault: RaindexVault = { - // id: 'vault1', - // getBalanceChanges: vi.fn() - // } as unknown as RaindexVault; - // render(VaultBalanceChart, { - // props: { - // vault: mockVault, - // lightweightChartsTheme: writable({}) - // } as VaultBalanceChartProps, - // context: new Map([['$$_queryClient', queryClient]]) - // }); - // expect(mockVault.getBalanceChanges).toHaveBeenCalledWith(1); + await waitFor(() => { + expect(mockVault.getBalanceChanges).toHaveBeenCalledWith(1); + }); + unsubscribe(); }); diff --git a/packages/ui-components/src/__tests__/VaultDetail.test.ts b/packages/ui-components/src/__tests__/VaultDetail.test.ts index 6d76742743..04ea35e7c2 100644 --- a/packages/ui-components/src/__tests__/VaultDetail.test.ts +++ b/packages/ui-components/src/__tests__/VaultDetail.test.ts @@ -49,6 +49,11 @@ vi.mock('$lib/services/getExplorerLink', () => ({ getExplorerLink: vi.fn() })); +vi.mock('../lib/components/charts/VaultBalanceChart.svelte', async () => { + const MockComponent = (await import('../lib/__mocks__/MockComponent.svelte')).default; + return { default: MockComponent }; +}); + const mockErrToast = vi.fn(); const defaultProps: VaultDetailProps = { diff --git a/packages/ui-components/src/lib/components/charts/LightweightChart.svelte b/packages/ui-components/src/lib/components/charts/LightweightChart.svelte index cbfa1565c9..2bf8b41833 100644 --- a/packages/ui-components/src/lib/components/charts/LightweightChart.svelte +++ b/packages/ui-components/src/lib/components/charts/LightweightChart.svelte @@ -1,5 +1,6 @@ - - -{#if false} -
TODO: Issue #1989
-{/if} + timestampSecondsToUTCTimestamp(BigInt(d.timestamp))} + valueTransform={(d) => parseFloat(d.formattedNewBalance)} + emptyMessage="No deposits or withdrawals found" + {lightweightChartsTheme} +/> diff --git a/packages/ui-components/src/lib/components/detail/OrderDetail.svelte b/packages/ui-components/src/lib/components/detail/OrderDetail.svelte index c67824b2ae..cb0f623b5b 100644 --- a/packages/ui-components/src/lib/components/detail/OrderDetail.svelte +++ b/packages/ui-components/src/lib/components/detail/OrderDetail.svelte @@ -36,11 +36,13 @@ } from '@rainlanguage/orderbook'; import { useToasts } from '$lib/providers/toasts/useToasts'; import { useRaindexClient } from '$lib/hooks/useRaindexClient'; + import type { LightweightChartsTheme } from '../../utils/lightweightChartsThemes'; + import type { Readable } from 'svelte/store'; export let handleQuoteDebugModal: QuoteDebugModalHandler | undefined = undefined; export let handleDebugTradeModal: DebugTradeModalHandler | undefined = undefined; export let codeMirrorTheme; - export let lightweightChartsTheme; + export let lightweightChartsTheme: Readable | undefined = undefined; export let orderbookAddress: Address; export let orderHash: Hex; export let chainId: number; diff --git a/packages/ui-components/src/lib/components/detail/VaultDetail.svelte b/packages/ui-components/src/lib/components/detail/VaultDetail.svelte index e95296072d..301404dd55 100644 --- a/packages/ui-components/src/lib/components/detail/VaultDetail.svelte +++ b/packages/ui-components/src/lib/components/detail/VaultDetail.svelte @@ -1,8 +1,7 @@