From 13cbe5e9cc4b0d8a00a672ae4595633d5b7feef3 Mon Sep 17 00:00:00 2001 From: sabrine33 Date: Wed, 18 Sep 2024 10:54:59 +0100 Subject: [PATCH 1/2] add a decoding consumables lot number to the Xenium Analyser operation --- src/pages/XeniumAnalyser.tsx | 35 ++++++++++++++++---- tests/unit/pages/lab/xeniumAnalyser.spec.tsx | 9 +++++ 2 files changed, 38 insertions(+), 6 deletions(-) diff --git a/src/pages/XeniumAnalyser.tsx b/src/pages/XeniumAnalyser.tsx index bb8aa64f..60444959 100644 --- a/src/pages/XeniumAnalyser.tsx +++ b/src/pages/XeniumAnalyser.tsx @@ -53,6 +53,7 @@ type LabwareSamples = { type AnalyserLabwareForm = { labware: LabwareFlaggedFieldsFragment; workNumber: string; + decodingConsumablesLot?: string; position?: CassettePosition; samples: Array; analyserScanData?: AnalyserScanDataFieldsFragment; @@ -178,7 +179,10 @@ const XeniumAnalyser = () => { .of( Yup.object().shape({ workNumber: Yup.string().required().label('SGP Number'), - position: Yup.string().required().label('Cassette Position'), + position: Yup.string().required(), + decodingConsumablesLot: Yup.string() + .optional() + .matches(/^\d{6}$/, 'Consumables lot number should be a 6 digit number'), samples: Yup.array() .of( Yup.object().shape({ @@ -237,6 +241,7 @@ const XeniumAnalyser = () => { labware, workNumber: values.workNumberAll, position: undefined, + decodingConsumablesLot: undefined, samples: [], analyserScanData: res.analyserScanData }); @@ -254,6 +259,7 @@ const XeniumAnalyser = () => { labware, workNumber: values.workNumberAll, position: undefined, + decodingConsumablesLot: undefined, samples: [] }); return { ...prev }; @@ -309,6 +315,7 @@ const XeniumAnalyser = () => { return { barcode: lw.labware.barcode, workNumber: lw.workNumber, + decodingConsumablesLot: lw.decodingConsumablesLot, position: lw.position?.toLowerCase() === 'left' ? CassettePosition.Left : CassettePosition.Right, samples: labwareSample ? labwareSample.samples.map((sample) => { @@ -434,11 +441,17 @@ const XeniumAnalyser = () => { label={'SGP Number'} name={'workNumberAll'} dataTestId={'workNumberAll'} - onWorkNumberChange={(workNumber) => { - setFieldValue('workNumberAll', workNumber); - values.labware.forEach((lw, index) => - setFieldValue(`labware.${index}.workNumber`, workNumber) - ); + onWorkNumberChange={async (workNumber) => { + await setValues((prev) => { + return { + ...prev, + workNumberAll: workNumber, + labware: prev.labware.map((lw) => ({ + ...lw, + workNumber + })) + }; + }); }} requiredField={false} /> @@ -449,6 +462,7 @@ const XeniumAnalyser = () => { Barcode SGP Number + Decoding consumables lot number Cassette Position Samples @@ -469,6 +483,15 @@ const XeniumAnalyser = () => { /> + +
+ +
+
{ diff --git a/tests/unit/pages/lab/xeniumAnalyser.spec.tsx b/tests/unit/pages/lab/xeniumAnalyser.spec.tsx index ca325d69..7dfa4dac 100644 --- a/tests/unit/pages/lab/xeniumAnalyser.spec.tsx +++ b/tests/unit/pages/lab/xeniumAnalyser.spec.tsx @@ -157,6 +157,15 @@ describe('Xenium analyser', () => { }); }); }); + describe('Decoding Consumables Lot Number', () => { + it('validates the number if specified', () => { + waitFor(async () => { + await userEvent.type(screen.getByTestId('labware.0.decodingConsumablesLot'), '12234567'); + await userEvent.tab(); + expect(screen.getByText('Consumables lot number should be a 6 digit number')).toBeVisible(); + }); + }); + }); describe('Save button enabling', () => { it('should enable Save button when all fields are filled in ', () => { waitFor(async () => { From 27cc770799b4bca8e32544e901aeff6084859297 Mon Sep 17 00:00:00 2001 From: David Robinson <14000840+khelwood@users.noreply.github.com> Date: Wed, 18 Sep 2024 12:01:08 +0100 Subject: [PATCH 2/2] minor grammar correction for consistency --- src/pages/XeniumAnalyser.tsx | 2 +- tests/unit/pages/lab/xeniumAnalyser.spec.tsx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/pages/XeniumAnalyser.tsx b/src/pages/XeniumAnalyser.tsx index 60444959..7140730b 100644 --- a/src/pages/XeniumAnalyser.tsx +++ b/src/pages/XeniumAnalyser.tsx @@ -182,7 +182,7 @@ const XeniumAnalyser = () => { position: Yup.string().required(), decodingConsumablesLot: Yup.string() .optional() - .matches(/^\d{6}$/, 'Consumables lot number should be a 6 digit number'), + .matches(/^\d{6}$/, 'Consumables lot number should be a 6-digit number'), samples: Yup.array() .of( Yup.object().shape({ diff --git a/tests/unit/pages/lab/xeniumAnalyser.spec.tsx b/tests/unit/pages/lab/xeniumAnalyser.spec.tsx index 7dfa4dac..c599ca6f 100644 --- a/tests/unit/pages/lab/xeniumAnalyser.spec.tsx +++ b/tests/unit/pages/lab/xeniumAnalyser.spec.tsx @@ -162,7 +162,7 @@ describe('Xenium analyser', () => { waitFor(async () => { await userEvent.type(screen.getByTestId('labware.0.decodingConsumablesLot'), '12234567'); await userEvent.tab(); - expect(screen.getByText('Consumables lot number should be a 6 digit number')).toBeVisible(); + expect(screen.getByText('Consumables lot number should be a 6-digit number')).toBeVisible(); }); }); });