From 6d0114c73409fbdce725e359cb07bc60bf97f67d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bart=C5=82omiej=20G=C5=82ownia?= Date: Wed, 30 Aug 2023 19:14:25 +0200 Subject: [PATCH] feat: add deal ticket tests --- .../deal-ticket/deal-ticket-size-iceberg.tsx | 4 +- .../deal-ticket/deal-ticket.spec.tsx | 55 +++++++++++++++++++ .../components/deal-ticket/deal-ticket.tsx | 1 + 3 files changed, 58 insertions(+), 2 deletions(-) diff --git a/libs/deal-ticket/src/components/deal-ticket/deal-ticket-size-iceberg.tsx b/libs/deal-ticket/src/components/deal-ticket/deal-ticket-size-iceberg.tsx index 1b69cac2b..ede1043bc 100644 --- a/libs/deal-ticket/src/components/deal-ticket/deal-ticket-size-iceberg.tsx +++ b/libs/deal-ticket/src/components/deal-ticket/deal-ticket-size-iceberg.tsx @@ -32,7 +32,7 @@ export const DealTicketSizeIceberg = ({ const renderPeakSizeError = () => { if (peakSizeError) { return ( - + {peakSizeError} ); @@ -44,7 +44,7 @@ export const DealTicketSizeIceberg = ({ const renderMinimumSizeError = () => { if (minimumVisibleSizeError) { return ( - + {minimumVisibleSizeError} ); 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 618479782..8de33126a 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 @@ -533,6 +533,61 @@ describe('DealTicket', () => { expect(screen.queryByTestId(priceErrorMessage)).toBeNull(); }); + it('validates iceberg field', async () => { + const peakSizeErrorMessage = 'deal-ticket-peak-error-message'; + const minimumSizeErrorMessage = 'deal-ticket-minimum-error-message'; + const sizeInput = 'order-size'; + const peakSizeInput = 'order-peak-size'; + const minimumSizeInput = 'order-minimum-size'; + const submitButton = 'place-order'; + + render(generateJsx()); + await userEvent.selectOptions( + screen.getByTestId('order-tif'), + Schema.OrderTimeInForce.TIME_IN_FORCE_GFA + ); + await userEvent.click(screen.getByTestId('iceberg')); + await userEvent.click(screen.getByTestId(submitButton)); + + // validate empty fields + expect(screen.getByTestId(peakSizeErrorMessage)).toBeInTheDocument(); + expect(screen.getByTestId(minimumSizeErrorMessage)).toBeInTheDocument(); + + await userEvent.type(screen.getByTestId(peakSizeInput), '0.01'); + await userEvent.type(screen.getByTestId(minimumSizeInput), '0.01'); + + // validate value smaller than step + expect(screen.getByTestId(peakSizeErrorMessage)).toBeInTheDocument(); + expect(screen.getByTestId(minimumSizeErrorMessage)).toBeInTheDocument(); + + await userEvent.clear(screen.getByTestId(peakSizeInput)); + await userEvent.type(screen.getByTestId(peakSizeInput), '0.5'); + await userEvent.clear(screen.getByTestId(minimumSizeInput)); + await userEvent.type(screen.getByTestId(minimumSizeInput), '0.7'); + + await userEvent.clear(screen.getByTestId(sizeInput)); + await userEvent.type(screen.getByTestId(sizeInput), '0.1'); + + // validate value higher than size + expect(screen.getByTestId(peakSizeErrorMessage)).toBeInTheDocument(); + expect(screen.getByTestId(minimumSizeErrorMessage)).toBeInTheDocument(); + + await userEvent.clear(screen.getByTestId(sizeInput)); + await userEvent.type(screen.getByTestId(sizeInput), '1'); + // validate peak higher than minimum + expect(screen.queryByTestId(peakSizeErrorMessage)).toBeNull(); + expect(screen.getByTestId(minimumSizeErrorMessage)).toBeInTheDocument(); + + await userEvent.clear(screen.getByTestId(peakSizeInput)); + await userEvent.type(screen.getByTestId(peakSizeInput), '1'); + await userEvent.clear(screen.getByTestId(minimumSizeInput)); + await userEvent.type(screen.getByTestId(minimumSizeInput), '1'); + + // validate correct values + expect(screen.queryByTestId(peakSizeErrorMessage)).toBeNull(); + expect(screen.queryByTestId(minimumSizeErrorMessage)).toBeNull(); + }); + it('sets expiry time/date to now if expiry is changed to checked', async () => { const datePicker = 'date-picker-field'; const now = Math.round(Date.now() / 1000) * 1000; diff --git a/libs/deal-ticket/src/components/deal-ticket/deal-ticket.tsx b/libs/deal-ticket/src/components/deal-ticket/deal-ticket.tsx index 90c91e26c..7ec2eba85 100644 --- a/libs/deal-ticket/src/components/deal-ticket/deal-ticket.tsx +++ b/libs/deal-ticket/src/components/deal-ticket/deal-ticket.tsx @@ -400,6 +400,7 @@ export const DealTicket = ({ message: t('Size cannot be lower than ' + sizeStep), }, validate: validateAmount(sizeStep, 'Size'), + deps: ['peakSize', 'minimumVisibleSize'], }} render={({ field, fieldState }) => (