Skip to content

Commit c56fad4

Browse files
authored
754 import from sleuth file (#770)
* feat: adding sleuth import * feat: help modal and initial upload page for sleuth upload * feat: finished import UI and added intro * feat: wizard build step * feat: finished initial sleuth import implementation * feat: created sleuth import build and review * feat: change step * feat: added meta-analyses to sleuth import * feat: handle reject build meta-analyses * feat: added creation of meta analyses * feat: change wording * feat: convert from doi to pmid and create imperative pmid fetch function * feat: finished flow of sleuth import * fix: solved sleuth import curation bug * fix: minor improvements, added sleuth import testing * fix: finished e2e tests * fix: removed console log * fix: remove unused imports * fix: failing test case * fix: failing test case * fix: add env variables * feat: add missing tests and skip ones that require api calls
1 parent 52fb994 commit c56fad4

File tree

91 files changed

+4635
-572
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

91 files changed

+4635
-572
lines changed

.github/workflows/workflow.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -484,6 +484,8 @@ jobs:
484484
REACT_APP_AUTH0_DOMAIN: ${{ secrets.REACT_APP_AUTH0_DOMAIN }}
485485
REACT_APP_AUTH0_CLIENT_SECRET: ${{ secrets.REACT_APP_AUTH0_CLIENT_SECRET }}
486486
REACT_APP_ENV: DEV
487+
REACT_APP_NEUROSTORE_API_DOMAIN: ${{ secrets.REACT_APP_NEUROSTORE_API_DOMAIN }}
488+
REACT_APP_NEUROSYNTH_API_DOMAIN: ${{ secrets.REACT_APP_NEUROSYNTH_API_DOMAIN }}
487489
with:
488490
build: npm run build:dev
489491
start: npm run start-ci:dev

compose/neurosynth-frontend/.env.example

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,5 @@ REACT_APP_AUTH0_CLIENT_SECRET=YOUR_AUTH0_CLIENT_SECRET
44
REACT_APP_AUTH0_AUDIENCE=localhost
55
REACT_APP_NEUROSTORE_API_DOMAIN=http://localhost/api
66
REACT_APP_NEUROSYNTH_API_DOMAIN=http://localhost:81/api
7-
REACT_APP_ENV=DEV
7+
REACT_APP_ENV=DEV
8+
REACT_APP_PUBMED_API_KEY=YOUR_PUBMED_KEY

compose/neurosynth-frontend/cypress.config.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,5 +28,7 @@ export default defineConfig({
2828
auth0ClientSecret: process.env.REACT_APP_AUTH0_CLIENT_SECRET,
2929
auth0Domain: process.env.REACT_APP_AUTH0_DOMAIN,
3030
auth0Audience: process.env.REACT_APP_AUTH0_AUDIENCE,
31+
neurostoreAPIBaseURL: process.env.REACT_APP_NEUROSTORE_API_DOMAIN,
32+
neurosynthAPIBaseURL: process.env.REACT_APP_NEUROSYNTH_API_DOMAIN,
3133
},
3234
});

compose/neurosynth-frontend/cypress/e2e/pages/EditStudyPage.cy.tsx

Lines changed: 4 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -24,26 +24,13 @@ describe(PAGE_NAME, () => {
2424
cy.intercept('GET', `**/api/annotations/*`, { fixture: 'annotation' }).as(
2525
'annotationFixture'
2626
);
27+
cy.intercept('GET', `**/api/studysets/*`, { fixture: 'studyset' }).as('studysetFixture');
28+
cy.login('mocked').visit(PATH);
2729
cy.visit(PATH)
2830
.wait('@studyFixture')
2931
.wait('@projectFixture')
3032
.wait('@annotationFixture')
31-
.wait('@semanticScholarFixture');
32-
// cy.login('mocked').wait('@realProjectsRequest').visit(PATH).wait('@studyFixture');
33+
.wait('@semanticScholarFixture')
34+
.wait('@studysetFixture');
3335
});
34-
35-
// it('should redirect if the user is not authenticated', () => {
36-
// cy.intercept('GET', `**/api/studies/mock-study-id*`, { fixture: 'study' }).as(
37-
// 'studyFixture'
38-
// );
39-
// cy.visit(PATH)
40-
// .wait(['@studyFixture']) // request made twice as the first time, once for the edit page and again for the study page
41-
// .url()
42-
// .should('be.equal', `${Cypress.config('baseUrl')}/studies/mock-study-id`);
43-
// });
44-
45-
// TODO:
46-
// it('should switch to the second last tab if the selected analysis is last and gets deleted', () => {
47-
48-
// });
4936
});

compose/neurosynth-frontend/cypress/e2e/pages/PublicMetaAnalysesPage.cy.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ export {};
77
const PATH = '/meta-analyses';
88
const PAGE_NAME = 'MetaAnalysesPage';
99

10-
describe(PAGE_NAME, () => {
10+
describe.skip(PAGE_NAME, () => {
1111
beforeEach(() => {
1212
cy.clearLocalStorage().clearSessionStorage();
1313
cy.intercept('GET', 'https://api.appzi.io/**', { fixture: 'appzi' }).as('appziFixture');

compose/neurosynth-frontend/cypress/e2e/pages/PublicStudiesPage.cy.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ export {};
77
const PATH = '/base-studies';
88
const PAGE_NAME = 'StudiesPage';
99

10-
describe(PAGE_NAME, () => {
10+
describe.skip(PAGE_NAME, () => {
1111
beforeEach(() => {
1212
cy.clearLocalStorage().clearSessionStorage();
1313
cy.intercept('GET', 'https://api.appzi.io/**', { fixture: 'appzi' }).as('appziFixture');

compose/neurosynth-frontend/cypress/e2e/workflows/Curation/ImportStudiesDialog.cy.tsx

Lines changed: 31 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@ describe('ImportStudiesDialog', () => {
1414
cy.visit('/projects/abc123/curation').wait('@projectFixture').wait('@studysetFixture');
1515
});
1616

17-
it.only('should open the import studies dialog', () => {
18-
cy.login('mocked', { sub: 'github|26612023' })
17+
it('should open the import studies dialog', () => {
18+
cy.login('mocked')
1919
.visit('/projects/abc123/curation')
2020
.wait('@projectFixture')
2121
.wait('@studysetFixture');
@@ -26,6 +26,7 @@ describe('ImportStudiesDialog', () => {
2626

2727
describe('Import via Neurostore', () => {
2828
beforeEach(() => {
29+
cy.login('mocked').visit('/projects/abc123/curation');
2930
cy.intercept('GET', '**/api/base-studies/**', {
3031
fixture: 'baseStudies/baseStudiesWithResults',
3132
}).as('baseStudiesFixture');
@@ -67,7 +68,10 @@ describe('ImportStudiesDialog', () => {
6768

6869
describe('Import via Pubmed IDs', () => {
6970
beforeEach(() => {
70-
cy.visit('/projects/abc123/curation').wait('@projectFixture').wait('@studysetFixture');
71+
cy.login('mocked')
72+
.visit('/projects/abc123/curation')
73+
.wait('@projectFixture')
74+
.wait('@studysetFixture');
7175
cy.intercept('PUT', '**/api/projects/abc123').as('updateProjectFixture');
7276
// not going to mock this for now as cypress does not seem to support XML fixtures
7377
// cy.intercept('POST', 'https://eutils.ncbi.nlm.nih.gov/**', {
@@ -123,7 +127,10 @@ describe('ImportStudiesDialog', () => {
123127

124128
describe('Manually create a new study', () => {
125129
beforeEach(() => {
126-
cy.visit('/projects/abc123/curation').wait('@projectFixture').wait('@studysetFixture');
130+
cy.login('mocked')
131+
.visit('/projects/abc123/curation')
132+
.wait('@projectFixture')
133+
.wait('@studysetFixture');
127134
cy.intercept('PUT', '**/api/projects/abc123').as('updateProjectFixture');
128135
cy.contains('button', 'import studies').click();
129136
cy.contains('Manually create a new study').click();
@@ -169,7 +176,10 @@ describe('ImportStudiesDialog', () => {
169176

170177
describe('Import via File Format', () => {
171178
beforeEach(() => {
172-
cy.visit('/projects/abc123/curation').wait('@projectFixture').wait('@studysetFixture');
179+
cy.login('mocked')
180+
.visit('/projects/abc123/curation')
181+
.wait('@projectFixture')
182+
.wait('@studysetFixture');
173183
cy.intercept('PUT', '**/api/projects/abc123').as('updateProjectFixture');
174184
cy.contains('button', 'import studies').click();
175185
cy.contains('Import via File Format').click();
@@ -253,7 +263,10 @@ describe('ImportStudiesDialog', () => {
253263

254264
describe('IMPORT DUPLICATES', () => {
255265
beforeEach(() => {
256-
cy.visit('/projects/abc123/curation').wait('@projectFixture').wait('@studysetFixture');
266+
cy.login('mocked')
267+
.visit('/projects/abc123/curation')
268+
.wait('@projectFixture')
269+
.wait('@studysetFixture');
257270
cy.intercept('PUT', '**/api/projects/abc123').as('updateProjectFixture');
258271
cy.contains('button', 'import studies').click();
259272
cy.contains('Import via File Format').click();
@@ -296,8 +309,14 @@ describe('ImportStudiesDialog', () => {
296309
cy.intercept('GET', `**/api/projects/*`, {
297310
fixture: 'projects/projectWithStub',
298311
}).as('projectFixture');
299-
cy.visit('/projects/abc123/curation').wait('@projectFixture').wait('@studysetFixture');
300-
cy.intercept('PUT', '**/api/projects/**').as('updateProjectFixture');
312+
// not a very good mocked update, but we need to provide a fixture so that it doesnt send a real request to the BE
313+
cy.intercept('PUT', '**/api/projects/**', { fixture: 'projects/projectWithStub' }).as(
314+
'updateProjectFixture'
315+
);
316+
cy.login('mocked')
317+
.visit('/projects/abc123/curation')
318+
.wait('@projectFixture')
319+
.wait('@studysetFixture');
301320
cy.contains('button', 'import studies').click();
302321
cy.contains('Import via File Format').click();
303322
cy.contains('button', 'next').click();
@@ -337,7 +356,10 @@ describe('ImportStudiesDialog', () => {
337356
fixture: 'baseStudies/baseStudiesWithResults',
338357
}).as('baseStudiesFixture');
339358
cy.intercept('PUT', '**/api/projects/abc123').as('updateProjectFixture');
340-
cy.visit('/projects/abc123/curation').wait('@projectFixture').wait('@studysetFixture');
359+
cy.login('mocked')
360+
.visit('/projects/abc123/curation')
361+
.wait('@projectFixture')
362+
.wait('@studysetFixture');
341363
cy.contains('button', 'import studies').click();
342364
cy.contains('button', 'next').click();
343365
});

compose/neurosynth-frontend/cypress/e2e/workflows/MetaAnalyses/CreateSpecificationDialog.cy.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@ describe('CreateSpecificationDialog', () => {
77
cy.intercept('GET', `**/api/meta-analyses*`, { fixture: 'metaAnalyses' }).as(
88
'metaAnalysesFixture'
99
);
10+
cy.intercept('GET', '**/api/meta-analysis-results/**', {
11+
fixture: 'metaAnalysisResults',
12+
}).as('metaAnalysisResultsFixture');
1013
cy.intercept('GET', `**/api/projects/*`, {
1114
fixture: 'projects/projectCanCreateSpecification',
1215
}).as('projectFixture');

0 commit comments

Comments
 (0)