From 748505ec2215880e10999442512949ec21acdaa0 Mon Sep 17 00:00:00 2001 From: Nicholas Lee Date: Tue, 1 Oct 2024 15:50:28 -0400 Subject: [PATCH] feat: add integration tests for specification wizard --- .../CreateSpecificationDialog.cy.tsx | 49 +++++++++++++++++++ ...MetaAnalysisSpecificationAlgorithmStep.tsx | 2 +- ...ateMetaAnalysisSpecificationDialogBase.tsx | 29 +++++++---- ...etaAnalysisSpecificationDialogConstants.ts | 9 ++-- ...MetaAnalysisSpecificationSelectionStep.tsx | 4 +- 5 files changed, 76 insertions(+), 17 deletions(-) diff --git a/compose/neurosynth-frontend/cypress/e2e/workflows/MetaAnalyses/CreateSpecificationDialog.cy.tsx b/compose/neurosynth-frontend/cypress/e2e/workflows/MetaAnalyses/CreateSpecificationDialog.cy.tsx index 7e42430c..a2edb04a 100644 --- a/compose/neurosynth-frontend/cypress/e2e/workflows/MetaAnalyses/CreateSpecificationDialog.cy.tsx +++ b/compose/neurosynth-frontend/cypress/e2e/workflows/MetaAnalyses/CreateSpecificationDialog.cy.tsx @@ -14,6 +14,9 @@ describe('CreateSpecificationDialog', () => { fixture: 'projects/projectCanCreateSpecification', }).as('projectFixture'); cy.intercept('GET', `**/api/studysets/*`, { fixture: 'studyset' }).as('studysetFixture'); + cy.intercept('GET', '**/api/annotations/*', { fixture: 'annotation' }).as( + 'annotationFixture' + ); }); it('should show the dialog', () => { @@ -23,5 +26,51 @@ describe('CreateSpecificationDialog', () => { cy.contains('button', 'Meta-Analyses').click(); cy.contains('button', 'Meta-Analysis Specification').click(); cy.get('.MuiDialog-container').should('be.visible'); + cy.contains('button', 'Back').should('be.disabled'); + }); + + it('should set the default specification values', () => { + cy.login('mocked', { sub: 'github|26612023' }) + .visit('/projects/abc123') + .wait('@projectFixture'); + cy.contains('button', 'Meta-Analyses').click(); + cy.contains('button', 'Meta-Analysis Specification').click(); + cy.get('.MuiDialog-container').should('be.visible'); + cy.contains('MKDADensity').should('exist'); + cy.contains('FDRCorrector').should('exist'); + }); + + it.only('should step through the wizard', () => { + cy.intercept('POST', '**/api/specifications', { + id: 'mockedSpecificationId', + }).as('createSpecificationFixture'); + cy.intercept('POST', '**/api/studysets', { + id: 'mockedStudySetId', + }); + cy.intercept('POST', '**/api/annotations', { + id: 'mockedAnnotationId', + }); + cy.intercept('POST', '**/api/meta-analyses', { + id: 'mockedMetaAnalysisId', + specification: {}, + }); + cy.intercept('GET', '**/api/specifications/*', { + fixture: 'specification', + }); + + cy.intercept('GET', '**/api/meta-analyses/mockedMetaAnalysisId*', { + fixture: 'metaAnalysis', + }).as('metaAnalysesFixture'); + + cy.login('mocked', { sub: 'github|26612023' }) + .visit('/projects/abc123') + .wait('@projectFixture'); + cy.contains('button', 'Meta-Analyses').click(); + cy.contains('button', 'Meta-Analysis Specification').click(); + cy.contains('Next').click(); + cy.contains('included').should('exist'); + cy.contains('button', 'Next').click(); + cy.contains('button', 'Next').click(); + cy.contains('button', 'Create Meta-Analysis Specification').click(); }); }); diff --git a/compose/neurosynth-frontend/src/pages/MetaAnalysis/components/CreateMetaAnalysisSpecificationAlgorithmStep.tsx b/compose/neurosynth-frontend/src/pages/MetaAnalysis/components/CreateMetaAnalysisSpecificationAlgorithmStep.tsx index b4af1853..4170d7c6 100644 --- a/compose/neurosynth-frontend/src/pages/MetaAnalysis/components/CreateMetaAnalysisSpecificationAlgorithmStep.tsx +++ b/compose/neurosynth-frontend/src/pages/MetaAnalysis/components/CreateMetaAnalysisSpecificationAlgorithmStep.tsx @@ -36,7 +36,7 @@ const CreateMetaAnalysisSpecificationAlgorithmStep: React.FC<{ algorithm={algorithmSpec} onSelectSpecification={(update) => setAlgorithmSpec(update)} /> - + = (props) => { @@ -35,10 +35,16 @@ const CreateMetaAnalysisSpecificationDialogBase: React.FC = (props) => referenceDataset: undefined, }); const [algorithm, setAlgorithm] = useState({ - estimator: algorithmOpt, - estimatorArgs: getDefaultValuesForTypeAndParameter(EAnalysisType.CBMA, algorithmOpt?.label), - corrector: correctorOpt, - correctorArgs: getDefaultValuesForTypeAndParameter('CORRECTOR', correctorOpt?.label), + estimator: algorithmDefaultOption, + estimatorArgs: getDefaultValuesForTypeAndParameter( + EAnalysisType.CBMA, + algorithmDefaultOption?.label + ), + corrector: correctorDefaultOption, + correctorArgs: getDefaultValuesForTypeAndParameter( + 'CORRECTOR', + correctorDefaultOption?.label + ), }); useEffect(() => { @@ -52,13 +58,16 @@ const CreateMetaAnalysisSpecificationDialogBase: React.FC = (props) => props.onCloseDialog(); setActiveStep(0); setAlgorithm({ - estimator: algorithmOpt, + estimator: algorithmDefaultOption, estimatorArgs: getDefaultValuesForTypeAndParameter( EAnalysisType.CBMA, - algorithmOpt?.label + algorithmDefaultOption?.label + ), + corrector: correctorDefaultOption, + correctorArgs: getDefaultValuesForTypeAndParameter( + 'CORRECTOR', + correctorDefaultOption?.label ), - corrector: correctorOpt, - correctorArgs: getDefaultValuesForTypeAndParameter('CORRECTOR', correctorOpt?.label), }); setSelection({ selectionKey: undefined, diff --git a/compose/neurosynth-frontend/src/pages/MetaAnalysis/components/CreateMetaAnalysisSpecificationDialogConstants.ts b/compose/neurosynth-frontend/src/pages/MetaAnalysis/components/CreateMetaAnalysisSpecificationDialogConstants.ts index b1d95a8e..6f1a3162 100644 --- a/compose/neurosynth-frontend/src/pages/MetaAnalysis/components/CreateMetaAnalysisSpecificationDialogConstants.ts +++ b/compose/neurosynth-frontend/src/pages/MetaAnalysis/components/CreateMetaAnalysisSpecificationDialogConstants.ts @@ -63,15 +63,16 @@ const correctorOptions: IAutocompleteObject[] = Object.keys( description: metaAnalysisSpecification.CORRECTOR[corrector]?.summary, })); -const correctorOpt = +const correctorDefaultOption = correctorOptions.find((corrector) => corrector.label === 'FDRCorrector') || null; -const algorithmOpt = metaAnalyticAlgorithms.find((algo) => algo.label === 'MKDADensity') || null; +const algorithmDefaultOption = + metaAnalyticAlgorithms.find((algo) => algo.label === 'MKDADensity') || null; export { getDefaultValuesForTypeAndParameter, metaAnalysisSpecification, metaAnalyticAlgorithms, correctorOptions, - correctorOpt, - algorithmOpt, + correctorDefaultOption, + algorithmDefaultOption, }; diff --git a/compose/neurosynth-frontend/src/pages/MetaAnalysis/components/CreateMetaAnalysisSpecificationSelectionStep.tsx b/compose/neurosynth-frontend/src/pages/MetaAnalysis/components/CreateMetaAnalysisSpecificationSelectionStep.tsx index cb911682..0aa2c468 100644 --- a/compose/neurosynth-frontend/src/pages/MetaAnalysis/components/CreateMetaAnalysisSpecificationSelectionStep.tsx +++ b/compose/neurosynth-frontend/src/pages/MetaAnalysis/components/CreateMetaAnalysisSpecificationSelectionStep.tsx @@ -98,7 +98,7 @@ const CreateMetaAnalysisSpecificationSelectionStep: React.FC<{ onClick={() => handleNavigate(ENavigationButton.PREV)} variant="outlined" > - back + Back handleNavigate(ENavigationButton.NEXT)} > - next + Next