From 83c97ac0ff264797eda5f5b7fc47c06ff3c73240 Mon Sep 17 00:00:00 2001 From: Madalina Raicu Date: Mon, 3 Apr 2023 18:49:54 +0100 Subject: [PATCH] fix: add reduce and post only tests --- .../deal-ticket/deal-ticket.spec.tsx | 56 ++++++++++++++++++- .../src/components/checkbox/checkbox.tsx | 1 + 2 files changed, 55 insertions(+), 2 deletions(-) diff --git a/libs/deal-ticket/src/components/deal-ticket/deal-ticket.spec.tsx b/libs/deal-ticket/src/components/deal-ticket/deal-ticket.spec.tsx index 8b1403c70..385fb33e5 100644 --- a/libs/deal-ticket/src/components/deal-ticket/deal-ticket.spec.tsx +++ b/libs/deal-ticket/src/components/deal-ticket/deal-ticket.spec.tsx @@ -107,7 +107,7 @@ describe('DealTicket', () => { ); }); - it('should use local storage state for initial values reduceOnly and postOnly', () => { + it('should set values for a non-persistent reduce only order and disable post only checkbox', () => { const expectedOrder = { marketId: market.id, type: Schema.OrderType.TYPE_LIMIT, @@ -115,7 +115,7 @@ describe('DealTicket', () => { size: '0.1', price: '300.22', timeInForce: Schema.OrderTimeInForce.TIME_IN_FORCE_IOC, - persist: true, + persist: false, reduceOnly: true, postOnly: false, }; @@ -149,6 +149,58 @@ describe('DealTicket', () => { expect(screen.getByTestId('order-price')).toHaveDisplayValue( expectedOrder.price ); + expect(screen.getByTestId('post-only')).toBeDisabled(); + expect(screen.getByTestId('reduce-only')).toBeEnabled(); + expect(screen.getByTestId('reduce-only')).toBeChecked(); + expect(screen.getByTestId('post-only')).not.toBeChecked(); + }); + + it('should set values for a persistent post only order and disable reduce only checkbox', () => { + const expectedOrder = { + marketId: market.id, + type: Schema.OrderType.TYPE_LIMIT, + side: Schema.Side.SIDE_SELL, + size: '0.1', + price: '300.22', + timeInForce: Schema.OrderTimeInForce.TIME_IN_FORCE_GTC, + persist: true, + reduceOnly: false, + postOnly: true, + }; + + useOrderStore.setState({ + orders: { + [expectedOrder.marketId]: expectedOrder, + }, + }); + + render(generateJsx()); + + // Assert correct defaults are used from store + expect( + screen + .getByTestId(`order-type-${Schema.OrderType.TYPE_LIMIT}`) + .querySelector('input') + ).toBeChecked(); + expect( + screen.queryByTestId('order-side-SIDE_SELL')?.querySelector('input') + ).toBeChecked(); + expect( + screen.queryByTestId('order-side-SIDE_BUY')?.querySelector('input') + ).not.toBeChecked(); + expect(screen.getByTestId('order-size')).toHaveDisplayValue( + expectedOrder.size + ); + expect(screen.getByTestId('order-tif')).toHaveValue( + expectedOrder.timeInForce + ); + expect(screen.getByTestId('order-price')).toHaveDisplayValue( + expectedOrder.price + ); + expect(screen.getByTestId('post-only')).toBeEnabled(); + expect(screen.getByTestId('reduce-only')).toBeDisabled(); + expect(screen.getByTestId('post-only')).toBeChecked(); + expect(screen.getByTestId('reduce-only')).not.toBeChecked(); }); it('handles TIF select box dependent on order type', async () => { diff --git a/libs/ui-toolkit/src/components/checkbox/checkbox.tsx b/libs/ui-toolkit/src/components/checkbox/checkbox.tsx index 267b503cb..78994b6b2 100644 --- a/libs/ui-toolkit/src/components/checkbox/checkbox.tsx +++ b/libs/ui-toolkit/src/components/checkbox/checkbox.tsx @@ -38,6 +38,7 @@ export const Checkbox = ({ checked={checked} onCheckedChange={onCheckedChange} disabled={disabled} + data-testid={name} > {checked === 'indeterminate' ? (