From 28f6236e36c7385f2c232f7b9b80d551afa659ff Mon Sep 17 00:00:00 2001 From: Katy Taylor Date: Fri, 26 Jul 2024 14:22:16 +0100 Subject: [PATCH 1/2] Split out scenarios to improve tests --- app/javascript/shared/wellHelpers.spec.js | 84 +++++++++++++++++------ 1 file changed, 63 insertions(+), 21 deletions(-) diff --git a/app/javascript/shared/wellHelpers.spec.js b/app/javascript/shared/wellHelpers.spec.js index 38a63c9ef..1bf4f89fd 100644 --- a/app/javascript/shared/wellHelpers.spec.js +++ b/app/javascript/shared/wellHelpers.spec.js @@ -17,27 +17,69 @@ describe('wellHelpers', () => { }) describe('requestsForWell', () => { - const request1 = { uuid: '1' } - const request2 = { uuid: '2' } - - const well = { - uuid: '3', - position: { name: 'A1' }, - aliquots: [ - { - uuid: '4', - request: request1, - }, - { - uuid: '5', - request: null, - }, - ], - requests_as_source: [request1, request2], - } - - it('combines requests from both data sources and de-duplicates', () => { - expect(requestsForWell(well)).toEqual([request1, request2]) + const request1 = { uuid: 'req-1' } + const request2 = { uuid: 'req-2' } + + // This function is used in MultiStamp, which is used in two scenarios: + // 1: where the well is on a plate that had a submission on it, so has requests_as_source + // 2: where the well is on a plate downstream of the submission plate, so has requests on its aliquots + // So this function pulls both types of request out. + it('combines requests from both data sources', () => { + const well = { + uuid: 'well-1', + position: { name: 'A1' }, + aliquots: [ + { + uuid: 'ali-1', + request: request1, + } + ], + requests_as_source: [request2], + } + + expect(requestsForWell(well).sort()).toEqual([request2, request1]) + }) + + // Different aliquots in the same well can reference the same request: + // this happens on the LRC GEM-X 5p Aggregate plate in the scRNA Core pipeline. + // The same request could theoretically be present in both requests_as_source and aliquots, + // or twice in requests_as_source, + // although I don't know of a realistic scenario where this would happen. + it('de-duplicates across both data sources', () => { + const well = { + uuid: 'well-1', + position: { name: 'A1' }, + aliquots: [ + { + uuid: 'ali-1', + request: request1, + }, + { + uuid: 'ali-2', + request: request1, + } + ], + requests_as_source: [request1, request1], + } + + expect(requestsForWell(well)).toEqual([request1]) + }) + + // If an aliquot has no request, it is not included in the output. + it('removes falsy values', () => { + const well = { + uuid: 'well-1', + position: { name: 'A1' }, + aliquots: [ + { + uuid: 'ali-1', + request: null, + } + ], + requests_as_source: [request1], + } + + expect(requestsForWell(well)).toEqual([request1]) }) }) }) From 3a57e33b82d2665805a26d3abb189a1bc38b917b Mon Sep 17 00:00:00 2001 From: Katy Taylor Date: Fri, 26 Jul 2024 14:25:33 +0100 Subject: [PATCH 2/2] prettier --- app/javascript/shared/wellHelpers.spec.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/javascript/shared/wellHelpers.spec.js b/app/javascript/shared/wellHelpers.spec.js index 1bf4f89fd..33e163983 100644 --- a/app/javascript/shared/wellHelpers.spec.js +++ b/app/javascript/shared/wellHelpers.spec.js @@ -32,7 +32,7 @@ describe('wellHelpers', () => { { uuid: 'ali-1', request: request1, - } + }, ], requests_as_source: [request2], } @@ -57,7 +57,7 @@ describe('wellHelpers', () => { { uuid: 'ali-2', request: request1, - } + }, ], requests_as_source: [request1, request1], } @@ -74,7 +74,7 @@ describe('wellHelpers', () => { { uuid: 'ali-1', request: null, - } + }, ], requests_as_source: [request1], }