fix(explorer): use position decimal places to format size in order summary for batch orders (#2892)
This commit is contained in:
parent
6d0ebc3a1b
commit
718959b920
@ -1,6 +1,7 @@
|
|||||||
import { useExplorerDeterministicOrderQuery } from '../order-details/__generated__/Order';
|
import { useExplorerDeterministicOrderQuery } from '../order-details/__generated__/Order';
|
||||||
import PriceInMarket from '../price-in-market/price-in-market';
|
import PriceInMarket from '../price-in-market/price-in-market';
|
||||||
import { sideText } from '../order-details/lib/order-labels';
|
import { sideText } from '../order-details/lib/order-labels';
|
||||||
|
import SizeInMarket from '../size-in-market/size-in-market';
|
||||||
|
|
||||||
// Note: Edited has no style currently
|
// Note: Edited has no style currently
|
||||||
export type OrderSummaryModifier = 'cancelled' | 'edited';
|
export type OrderSummaryModifier = 'cancelled' | 'edited';
|
||||||
@ -41,7 +42,8 @@ const OrderSummary = ({ id, modifier }: OrderSummaryProps) => {
|
|||||||
return (
|
return (
|
||||||
<div data-testid="order-summary" className={getClassName(modifier)}>
|
<div data-testid="order-summary" className={getClassName(modifier)}>
|
||||||
<span>{sideText[order.side]}</span>
|
<span>{sideText[order.side]}</span>
|
||||||
<span>{order.size}</span> <i>@</i>
|
<SizeInMarket marketId={order.market.id} size={order.size} />
|
||||||
|
<i>@</i>
|
||||||
<PriceInMarket marketId={order.market.id} price={order.price} />
|
<PriceInMarket marketId={order.market.id} price={order.price} />
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
@ -112,13 +112,14 @@ describe('Order TX Summary component', () => {
|
|||||||
const res = renderComponent(o, [mock]);
|
const res = renderComponent(o, [mock]);
|
||||||
expect(res.queryByTestId('order-summary')).toBeInTheDocument();
|
expect(res.queryByTestId('order-summary')).toBeInTheDocument();
|
||||||
expect(res.getByText('Buy')).toBeInTheDocument();
|
expect(res.getByText('Buy')).toBeInTheDocument();
|
||||||
expect(res.getByText('10')).toBeInTheDocument();
|
|
||||||
|
|
||||||
// Initially renders price alone
|
// Initially renders price and size unformatted
|
||||||
expect(res.getByText('333')).toBeInTheDocument();
|
expect(res.getByText('333')).toBeInTheDocument();
|
||||||
|
expect(res.getByText('10')).toBeInTheDocument();
|
||||||
|
|
||||||
// After fetch renders formatted price and asset quotename
|
// After fetch renders formatted price and asset quotename
|
||||||
expect(await res.findByText('3.33')).toBeInTheDocument();
|
expect(await res.findByText('3.33')).toBeInTheDocument();
|
||||||
expect(await res.findByText('TEST')).toBeInTheDocument();
|
expect(await res.findByText('TEST')).toBeInTheDocument();
|
||||||
|
expect(await res.getByText('0.10')).toBeInTheDocument();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -2,6 +2,7 @@ import type { components } from '../../../types/explorer';
|
|||||||
|
|
||||||
import PriceInMarket from '../price-in-market/price-in-market';
|
import PriceInMarket from '../price-in-market/price-in-market';
|
||||||
import { sideText } from '../order-details/lib/order-labels';
|
import { sideText } from '../order-details/lib/order-labels';
|
||||||
|
import SizeInMarket from '../size-in-market/size-in-market';
|
||||||
|
|
||||||
export type OrderSummaryProps = {
|
export type OrderSummaryProps = {
|
||||||
order: components['schemas']['v1OrderSubmission'];
|
order: components['schemas']['v1OrderSubmission'];
|
||||||
@ -29,7 +30,12 @@ const OrderTxSummary = ({ order }: OrderSummaryProps) => {
|
|||||||
return (
|
return (
|
||||||
<div data-testid="order-summary">
|
<div data-testid="order-summary">
|
||||||
<span>{sideText[order.side]}</span>
|
<span>{sideText[order.side]}</span>
|
||||||
<span>{order.size}</span> <i className="text-xs">@</i>
|
{order.size ? (
|
||||||
|
<SizeInMarket size={order.size} marketId={order.marketId} />
|
||||||
|
) : (
|
||||||
|
'-'
|
||||||
|
)}
|
||||||
|
<i className="text-xs">@</i>
|
||||||
<PriceInMarket
|
<PriceInMarket
|
||||||
marketId={order.marketId}
|
marketId={order.marketId}
|
||||||
price={order.price}
|
price={order.price}
|
||||||
|
@ -7,7 +7,7 @@ import type { DecimalSource } from './size-in-market';
|
|||||||
import { ExplorerMarketDocument } from '../links/market-link/__generated__/Market';
|
import { ExplorerMarketDocument } from '../links/market-link/__generated__/Market';
|
||||||
|
|
||||||
function renderComponent(
|
function renderComponent(
|
||||||
price: string,
|
size: string | undefined,
|
||||||
marketId: string,
|
marketId: string,
|
||||||
mocks: MockedResponse[],
|
mocks: MockedResponse[],
|
||||||
decimalSource: DecimalSource = 'MARKET'
|
decimalSource: DecimalSource = 'MARKET'
|
||||||
@ -17,7 +17,7 @@ function renderComponent(
|
|||||||
<MemoryRouter>
|
<MemoryRouter>
|
||||||
<SizeInMarket
|
<SizeInMarket
|
||||||
marketId={marketId}
|
marketId={marketId}
|
||||||
size={price}
|
size={size}
|
||||||
decimalSource={decimalSource}
|
decimalSource={decimalSource}
|
||||||
/>
|
/>
|
||||||
</MemoryRouter>
|
</MemoryRouter>
|
||||||
@ -57,6 +57,11 @@ const fullMock = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
describe('Size in Market component', () => {
|
describe('Size in Market component', () => {
|
||||||
|
it('Renders a dash size when there is no size', () => {
|
||||||
|
const res = render(renderComponent(undefined, '123', []));
|
||||||
|
expect(res.getByText('-')).toBeInTheDocument();
|
||||||
|
});
|
||||||
|
|
||||||
it('Renders the raw size when there is no market data', () => {
|
it('Renders the raw size when there is no market data', () => {
|
||||||
const res = render(renderComponent('100', '123', []));
|
const res = render(renderComponent('100', '123', []));
|
||||||
expect(res.getByText('100')).toBeInTheDocument();
|
expect(res.getByText('100')).toBeInTheDocument();
|
||||||
|
@ -5,7 +5,7 @@ export type DecimalSource = 'MARKET';
|
|||||||
|
|
||||||
export type PriceInMarketProps = {
|
export type PriceInMarketProps = {
|
||||||
marketId: string;
|
marketId: string;
|
||||||
size: string | number;
|
size?: string | number;
|
||||||
decimalSource?: DecimalSource;
|
decimalSource?: DecimalSource;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -22,6 +22,9 @@ const SizeInMarket = ({
|
|||||||
variables: { id: marketId },
|
variables: { id: marketId },
|
||||||
fetchPolicy: 'cache-first',
|
fetchPolicy: 'cache-first',
|
||||||
});
|
});
|
||||||
|
if (!size) {
|
||||||
|
return <span>-</span>;
|
||||||
|
}
|
||||||
|
|
||||||
let label = size;
|
let label = size;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user