From 3968f0f3927bc63a92f4a6e9befe72607eeaf23d Mon Sep 17 00:00:00 2001 From: xkyue Date: Wed, 15 Jul 2026 14:44:18 +0100 Subject: [PATCH 1/8] Add Is PI button switch for My DOIs table --- packages/datagateway-common/src/api/index.tsx | 1 + packages/datagateway-common/src/app.types.tsx | 4 +- .../public/res/default.json | 21 +++-- .../src/views/doiTypeSelector.component.tsx | 66 +++++++++++++--- .../table/dls/dlsDOITables.component.tsx | 79 +++++++++++++++---- 5 files changed, 136 insertions(+), 35 deletions(-) diff --git a/packages/datagateway-common/src/api/index.tsx b/packages/datagateway-common/src/api/index.tsx index f36e65147..26b408327 100644 --- a/packages/datagateway-common/src/api/index.tsx +++ b/packages/datagateway-common/src/api/index.tsx @@ -120,6 +120,7 @@ export const parseSearchToQuery = (queryParams: string): QueryParams => { if (typeof parsed.view === 'string') { parsedDOIType = { view: parsed.view }; if (typeof parsed.open === 'boolean') parsedDOIType.open = parsed.open; + if (typeof parsed.pi === 'boolean') parsedDOIType.pi = parsed.pi; } } catch (_e) { console.error('doiType query param provided in an incorrect format.'); diff --git a/packages/datagateway-common/src/app.types.tsx b/packages/datagateway-common/src/app.types.tsx index a92fe46ee..651031b24 100644 --- a/packages/datagateway-common/src/app.types.tsx +++ b/packages/datagateway-common/src/app.types.tsx @@ -494,7 +494,7 @@ export interface SortType { export type ViewsType = 'table' | 'card' | null; -export type DOIViewType = 'minter' | 'user' | 'session' | 'all'; +export type DOIViewType = 'user' | 'session' | 'all'; export interface QueryParams { sort: SortType; @@ -511,7 +511,7 @@ export interface QueryParams { endDate: Date | null; currentTab: string; restrict: boolean; - doiType: { view: DOIViewType; open?: boolean } | null; + doiType: { view: DOIViewType; open?: boolean; pi?: boolean } | null; } export enum ContributorType { diff --git a/packages/datagateway-dataview/public/res/default.json b/packages/datagateway-dataview/public/res/default.json index 285e39ebf..4be4d4675 100644 --- a/packages/datagateway-dataview/public/res/default.json +++ b/packages/datagateway-dataview/public/res/default.json @@ -281,25 +281,32 @@ "all_roles": "All" }, "my_doi_table": { - "type_button_group_aria_label": "Select DOIs where I", - "minter": "Minted the user-created DOI", - "user": "Am listed on the user-created DOI", - "session": "Am listed on the session DOI", + "type_button_group_aria_label": "Select DOIs type", + "user": "User-defined DOIs", + "session": "Session DOIs", "open_button_group_aria_label": "Select Session DOIs which are", "open_or_closed": "Open or Closed", "open": "Open", "closed": "Closed", - "all": "All" + "all": "All", + "pi_button_group_aria_label": "Select DOIs which roles are", + "pi_or_any": "All", + "pi": "Principal Investigator", + "any": "Others" }, "all_doi_table": { "type_button_group_aria_label": "Select DOI type", - "user": "User-created DOIs", + "user": "User-defined DOIs", "session": "Session DOIs", "open_button_group_aria_label": "Select Session DOIs which are", "open_or_closed": "Open or Closed", "open": "Open", "closed": "Closed", - "all": "All" + "all": "All", + "pi_button_group_aria_label": "Select DOIs which roles are", + "pi_or_any": "All", + "pi": "Principal Investigator", + "any": "Others" }, "loading": { "verifying": "Verifying URL", diff --git a/packages/datagateway-dataview/src/views/doiTypeSelector.component.tsx b/packages/datagateway-dataview/src/views/doiTypeSelector.component.tsx index 5f5b324a0..3bf30e2b9 100644 --- a/packages/datagateway-dataview/src/views/doiTypeSelector.component.tsx +++ b/packages/datagateway-dataview/src/views/doiTypeSelector.component.tsx @@ -38,10 +38,8 @@ const DOITypeSelector = (props: DOITypeSelectorProps): React.ReactElement => { pushQueryParams({ doiType: { view: newType, - open: - newType === 'minter' || newType === 'user' - ? undefined - : doiType?.open, + open: newType === 'user' ? undefined : doiType?.open, + pi: newType === 'all' ? undefined : doiType?.pi, }, }); }; @@ -55,10 +53,24 @@ const DOITypeSelector = (props: DOITypeSelectorProps): React.ReactElement => { doiType: { view: doiType?.view ?? 'all', open: newOpenOrClosed === 'undefined' ? undefined : newOpenOrClosed, + pi: doiType?.pi, }, }); }; + const handlePIorAny = ( + _event: React.MouseEvent, + newPIorAny: boolean | 'undefined' | null + ): void => { + if (newPIorAny !== null) + pushQueryParams({ + doiType: { + view: doiType?.view ?? 'all', + open: doiType?.open, + pi: newPIorAny === 'undefined' ? undefined : newPIorAny, + }, + }); + }; return ( @@ -83,11 +95,7 @@ const DOITypeSelector = (props: DOITypeSelectorProps): React.ReactElement => { ? t('my_doi_table.all') : t('all_doi_table.all')} - {type === 'myDOIs' && ( - - {t('my_doi_table.minter')} - - )} + {type === 'myDOIs' ? t('my_doi_table.user') @@ -139,6 +147,46 @@ const DOITypeSelector = (props: DOITypeSelectorProps): React.ReactElement => { )} + + {(doiType === null || + doiType.view === 'all' || + doiType.view === 'session' || + doiType.view === 'user') && ( + + + + {type === 'myDOIs' + ? t('my_doi_table.pi_button_group_aria_label') + : t('all_doi_table.pi_button_group_aria_label')} + + + + + + {type === 'myDOIs' + ? t('my_doi_table.pi_or_any') + : t('all_doi_table.pi_or_any')} + + + {type === 'myDOIs' + ? t('my_doi_table.pi') + : t('all_doi_table.pi')} + + + {type === 'myDOIs' + ? t('my_doi_table.any') + : t('all_doi_table.any')} + + + + + )} ); }; diff --git a/packages/datagateway-dataview/src/views/table/dls/dlsDOITables.component.tsx b/packages/datagateway-dataview/src/views/table/dls/dlsDOITables.component.tsx index 7926871ff..4d24b5757 100644 --- a/packages/datagateway-dataview/src/views/table/dls/dlsDOITables.component.tsx +++ b/packages/datagateway-dataview/src/views/table/dls/dlsDOITables.component.tsx @@ -176,23 +176,6 @@ export const DLSMyDOIsTable = (): React.ReactElement => { 'type.name': { eq: 'User-defined-concept' }, }), }); - else if (doiType.view === 'minter') - params.push( - { - filterType: 'where', - filterValue: JSON.stringify({ - 'users.orderKey': { - eq: '0', - }, - }), - }, - { - filterType: 'where', - filterValue: JSON.stringify({ - 'type.name': { eq: 'User-defined-concept' }, - }), - } - ); if (doiType?.open === true) params.push({ @@ -209,11 +192,42 @@ export const DLSMyDOIsTable = (): React.ReactElement => { }), }); + if (doiType?.pi === true) + params.push( + { + filterType: 'where', + filterValue: JSON.stringify({ + 'users.orderKey': { eq: '0' }, + }), + }, + { + filterType: 'where', + filterValue: JSON.stringify({ + 'users.user.name': { eq: username }, + }), + } + ); + else if (doiType?.pi === false) + params.push( + { + filterType: 'where', + filterValue: JSON.stringify({ + 'users.orderKey': { neq: '0' }, + }), + }, + { + filterType: 'where', + filterValue: JSON.stringify({ + 'users.user.name': { eq: username }, + }), + } + ); return ; }; export const DLSAllDOIsTable = (): React.ReactElement => { const location = useLocation(); + const username = readSciGatewayToken().username || ''; const { doiType } = React.useMemo( () => parseSearchToQuery(location.search), @@ -261,5 +275,36 @@ export const DLSAllDOIsTable = (): React.ReactElement => { }), }); + if (doiType?.pi === true) + params.push( + { + filterType: 'where', + filterValue: JSON.stringify({ + 'users.orderKey': { eq: '0' }, + }), + }, + { + filterType: 'where', + filterValue: JSON.stringify({ + 'users.user.name': { eq: username }, + }), + } + ); + else if (doiType?.pi === false) + params.push( + { + filterType: 'where', + filterValue: JSON.stringify({ + 'users.orderKey': { neq: '0' }, + }), + }, + { + filterType: 'where', + filterValue: JSON.stringify({ + 'users.user.name': { eq: username }, + }), + } + ); + return ; }; From 010c13e966403fc959808e1b304e02e5a9b8c31f Mon Sep 17 00:00:00 2001 From: xkyue Date: Thu, 16 Jul 2026 15:15:26 +0100 Subject: [PATCH 2/8] fixed tests due to removing minter failed --- .../views/doiTypeSelector.component.test.tsx | 40 ------------------- .../table/dls/dlsDOITables.component.test.tsx | 30 -------------- 2 files changed, 70 deletions(-) diff --git a/packages/datagateway-dataview/src/views/doiTypeSelector.component.test.tsx b/packages/datagateway-dataview/src/views/doiTypeSelector.component.test.tsx index f63e694f8..a33bef95d 100644 --- a/packages/datagateway-dataview/src/views/doiTypeSelector.component.test.tsx +++ b/packages/datagateway-dataview/src/views/doiTypeSelector.component.test.tsx @@ -57,12 +57,6 @@ describe('DOI Type Selector', () => { pressed: true, }) ).toBeInTheDocument(); - expect( - screen.getByRole('button', { - name: 'my_doi_table.minter', - pressed: false, - }) - ).toBeInTheDocument(); expect( screen.getByRole('button', { name: 'my_doi_table.user', @@ -94,12 +88,6 @@ describe('DOI Type Selector', () => { pressed: false, }) ).toBeInTheDocument(); - expect( - screen.getByRole('button', { - name: 'my_doi_table.minter', - pressed: false, - }) - ).toBeInTheDocument(); expect( screen.getByRole('button', { name: 'my_doi_table.user', @@ -147,11 +135,6 @@ describe('DOI Type Selector', () => { name: 'all_doi_table.type_button_group_aria_label', }) ).toBeInTheDocument(); - expect( - screen.queryByRole('button', { - name: /minter/, - }) - ).not.toBeInTheDocument(); expect( screen.getByRole('button', { name: 'all_doi_table.all', @@ -242,23 +225,6 @@ describe('DOI Type Selector', () => { }); }); - it('updates filters when user or minter button is clicked after open or closed is selected', async () => { - vi.mocked(parseSearchToQuery, { partial: true }).mockReturnValue({ - doiType: { view: 'all', open: false }, - }); - renderComponent('myDOIs'); - - await user.click( - screen.getByRole('button', { - name: 'my_doi_table.minter', - }) - ); - - expect(mockPushQueryParams).toHaveBeenCalledWith({ - doiType: { view: 'minter' }, - }); - }); - it('parses current doiType from query params correctly', async () => { vi.mocked(parseSearchToQuery, { partial: true }).mockReturnValue({ doiType: { view: 'user' }, @@ -272,12 +238,6 @@ describe('DOI Type Selector', () => { pressed: true, }) ).toBeInTheDocument(); - expect( - screen.getByRole('button', { - name: 'my_doi_table.minter', - pressed: false, - }) - ).toBeInTheDocument(); expect( screen.getByRole('button', { name: 'my_doi_table.session', diff --git a/packages/datagateway-dataview/src/views/table/dls/dlsDOITables.component.test.tsx b/packages/datagateway-dataview/src/views/table/dls/dlsDOITables.component.test.tsx index ba3f0c3fe..38092ad70 100644 --- a/packages/datagateway-dataview/src/views/table/dls/dlsDOITables.component.test.tsx +++ b/packages/datagateway-dataview/src/views/table/dls/dlsDOITables.component.test.tsx @@ -217,36 +217,6 @@ describe('DLS DOI table components', () => { ).toBeInTheDocument(); }); - it('supplies the correct filter params for minter doiType', async () => { - history.replace('?doiType={"view":"minter"}'); - renderComponent(); - - const filterParams = [ - { - filterType: 'where', - filterValue: JSON.stringify({ - 'users.user.name': { eq: 'testUser' }, - }), - }, - { - filterType: 'where', - filterValue: JSON.stringify({ - 'users.orderKey': { - eq: '0', - }, - }), - }, - { - filterType: 'where', - filterValue: JSON.stringify({ - 'type.name': { eq: 'User-defined-concept' }, - }), - }, - ]; - expect(useDataPublicationCount).toHaveBeenCalledWith(filterParams); - expect(useDataPublicationsInfinite).toHaveBeenCalledWith(filterParams); - }); - it('supplies the correct filter params for user doiType', async () => { history.replace('?doiType={"view":"user"}'); renderComponent(); From 9b29f662763446a626ab781141901dbe1687c73d Mon Sep 17 00:00:00 2001 From: xkyue Date: Thu, 23 Jul 2026 11:45:16 +0100 Subject: [PATCH 3/8] only have the PI button for myDOIs removed it for allDOIs --- .../public/res/default.json | 8 +-- .../src/views/doiTypeSelector.component.tsx | 69 +++++++++---------- 2 files changed, 33 insertions(+), 44 deletions(-) diff --git a/packages/datagateway-dataview/public/res/default.json b/packages/datagateway-dataview/public/res/default.json index 4be4d4675..ca532b1c7 100644 --- a/packages/datagateway-dataview/public/res/default.json +++ b/packages/datagateway-dataview/public/res/default.json @@ -281,7 +281,7 @@ "all_roles": "All" }, "my_doi_table": { - "type_button_group_aria_label": "Select DOIs type", + "type_button_group_aria_label": "Select DOI type", "user": "User-defined DOIs", "session": "Session DOIs", "open_button_group_aria_label": "Select Session DOIs which are", @@ -302,11 +302,7 @@ "open_or_closed": "Open or Closed", "open": "Open", "closed": "Closed", - "all": "All", - "pi_button_group_aria_label": "Select DOIs which roles are", - "pi_or_any": "All", - "pi": "Principal Investigator", - "any": "Others" + "all": "All" }, "loading": { "verifying": "Verifying URL", diff --git a/packages/datagateway-dataview/src/views/doiTypeSelector.component.tsx b/packages/datagateway-dataview/src/views/doiTypeSelector.component.tsx index 3bf30e2b9..0c75a98fb 100644 --- a/packages/datagateway-dataview/src/views/doiTypeSelector.component.tsx +++ b/packages/datagateway-dataview/src/views/doiTypeSelector.component.tsx @@ -148,45 +148,38 @@ const DOITypeSelector = (props: DOITypeSelectorProps): React.ReactElement => { )} - {(doiType === null || - doiType.view === 'all' || - doiType.view === 'session' || - doiType.view === 'user') && ( - - - - {type === 'myDOIs' - ? t('my_doi_table.pi_button_group_aria_label') - : t('all_doi_table.pi_button_group_aria_label')} - - - - - - {type === 'myDOIs' - ? t('my_doi_table.pi_or_any') - : t('all_doi_table.pi_or_any')} - - - {type === 'myDOIs' - ? t('my_doi_table.pi') - : t('all_doi_table.pi')} - - - {type === 'myDOIs' - ? t('my_doi_table.any') - : t('all_doi_table.any')} - - + {type === 'myDOIs' && + (doiType === null || + doiType.view === 'all' || + doiType.view === 'session' || + doiType.view === 'user') && ( + + + + {t('my_doi_table.pi_button_group_aria_label')} + + + + + + {t('my_doi_table.pi_or_any')} + + + {t('my_doi_table.pi')} + + + {t('my_doi_table.any')} + + + - - )} + )} ); }; From 00459439d5cc9d78250e4525f2d4246a10552b60 Mon Sep 17 00:00:00 2001 From: xkyue Date: Fri, 24 Jul 2026 14:46:44 +0100 Subject: [PATCH 4/8] Fixed the parts the end to end tests were failing --- .../datagateway-dataview/cypress/e2e/table/dls/allDois.cy.ts | 2 +- .../datagateway-dataview/cypress/e2e/table/dls/myDois.cy.ts | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/datagateway-dataview/cypress/e2e/table/dls/allDois.cy.ts b/packages/datagateway-dataview/cypress/e2e/table/dls/allDois.cy.ts index f093a4214..f1779718c 100644 --- a/packages/datagateway-dataview/cypress/e2e/table/dls/allDois.cy.ts +++ b/packages/datagateway-dataview/cypress/e2e/table/dls/allDois.cy.ts @@ -186,7 +186,7 @@ describe('DLS - All DOIs Table', () => { cy.get('[aria-rowcount="1"]').should('exist'); cy.contains('78: Across').should('exist'); - cy.contains('User-created DOIs').click(); + cy.contains('User-defined DOIs').click(); cy.get('[aria-rowcount="2"]').should('exist'); cy.contains('Test DOI Title 1').should('exist'); diff --git a/packages/datagateway-dataview/cypress/e2e/table/dls/myDois.cy.ts b/packages/datagateway-dataview/cypress/e2e/table/dls/myDois.cy.ts index a9885cff8..f180ccb27 100644 --- a/packages/datagateway-dataview/cypress/e2e/table/dls/myDois.cy.ts +++ b/packages/datagateway-dataview/cypress/e2e/table/dls/myDois.cy.ts @@ -99,7 +99,7 @@ describe('DLS - MyDOIs Table', () => { }); it('should be able to sort by all sort directions on single and multiple columns', () => { - cy.contains('Minted the user-created DOI').click(); + cy.contains('Principal Investigator').click(); //Revert the default sort cy.contains('[role="button"]', 'Publication Date') .as('dateSortButton') @@ -218,7 +218,7 @@ describe('DLS - MyDOIs Table', () => { cy.title().should('equal', 'DataGateway DataView'); cy.get('#datagateway-dataview').should('be.visible'); - cy.contains('Am listed on the session DOI').click(); + cy.contains('Session DOIs').click(); //Default sort cy.get('[aria-sort="descending"]').should('exist'); From cd19e25428c1940595ad1940c3f1f9d89aa91e3f Mon Sep 17 00:00:00 2001 From: xkyue Date: Mon, 27 Jul 2026 17:33:51 +0100 Subject: [PATCH 5/8] Fixed end to end test that failed due to removal of minter --- packages/datagateway-dataview/cypress/e2e/table/dls/myDois.cy.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/datagateway-dataview/cypress/e2e/table/dls/myDois.cy.ts b/packages/datagateway-dataview/cypress/e2e/table/dls/myDois.cy.ts index f180ccb27..02bbfd76a 100644 --- a/packages/datagateway-dataview/cypress/e2e/table/dls/myDois.cy.ts +++ b/packages/datagateway-dataview/cypress/e2e/table/dls/myDois.cy.ts @@ -100,6 +100,7 @@ describe('DLS - MyDOIs Table', () => { it('should be able to sort by all sort directions on single and multiple columns', () => { cy.contains('Principal Investigator').click(); + cy.contains('User-defined DOIs').click(); //Revert the default sort cy.contains('[role="button"]', 'Publication Date') .as('dateSortButton') From 6023c07cc4bac055b1020f4b32998586760b6af6 Mon Sep 17 00:00:00 2001 From: xkyue Date: Thu, 13 Aug 2026 11:18:16 +0100 Subject: [PATCH 6/8] added new test to test PI toggle button --- .../cypress/e2e/table/dls/myDois.cy.ts | 59 ++++++++++++---- .../cypress/support/commands.js | 67 ++++++++++--------- .../cypress/support/index.d.ts | 5 +- 3 files changed, 86 insertions(+), 45 deletions(-) diff --git a/packages/datagateway-dataview/cypress/e2e/table/dls/myDois.cy.ts b/packages/datagateway-dataview/cypress/e2e/table/dls/myDois.cy.ts index 02bbfd76a..8a2e9b9c9 100644 --- a/packages/datagateway-dataview/cypress/e2e/table/dls/myDois.cy.ts +++ b/packages/datagateway-dataview/cypress/e2e/table/dls/myDois.cy.ts @@ -18,7 +18,9 @@ describe('DLS - MyDOIs Table', () => { before(() => { cy.login({ username: 'root', password: 'pw', mechanism: 'simple' }); cy.seedSessionDataPublication().as('sessionDataPublication'); - + cy.seedSessionDataPublication({ id: 14 }).as( + 'sessionDataPublication14' + ); cy.login( { username: 'Chris481', @@ -36,6 +38,23 @@ describe('DLS - MyDOIs Table', () => { cy.seedUserGeneratedDataPublication('Test DOI Title 2').as( 'dataPublication2' ); + + cy.login( + { + username: 'Amy14', + password: 'pw', + mechanism: 'simple', + }, + 'Amy14' + ); + + // can seed the user defined DP in before rather than beforeEach as myDOI page is read-only + cy.seedUserGeneratedDataPublication( + 'Test DOI Title 3', + [{ username: 'Chris481' }], + [14], + [] + ).as('dataPublication3'); cy.dumpAliases(store); }); @@ -60,17 +79,26 @@ describe('DLS - MyDOIs Table', () => { cy.login({ username: 'root', password: 'pw', mechanism: 'simple' }); cy.get('@dataPublication1').then((dp1) => { cy.get('@dataPublication2').then((dp2) => { - cy.get('@sessionDataPublication').then( - (dp3) => { - cy.clearDataPublications([ - dp1.body.concept.data_publication_id, - dp1.body.version.data_publication_id, - dp2.body.concept.data_publication_id, - dp2.body.version.data_publication_id, - dp3.body.data_publication_id, - ]); - } - ); + cy.get('@dataPublication3').then((dp3) => { + cy.get('@sessionDataPublication').then( + (dp4) => { + cy.get('@sessionDataPublication14').then( + (dp5) => { + cy.clearDataPublications([ + dp1.body.concept.data_publication_id, + dp1.body.version.data_publication_id, + dp2.body.concept.data_publication_id, + dp2.body.version.data_publication_id, + dp3.body.concept.data_publication_id, + dp3.body.version.data_publication_id, + dp4.body.data_publication_id, + dp5.body.data_publication_id, + ]); + } + ); + } + ); + }); }); }); }); @@ -181,6 +209,13 @@ describe('DLS - MyDOIs Table', () => { cy.get('[aria-rowcount="0"]').should('exist'); }); + + it('should be able filter the Principal Investigator toggle button to show only sessions which they are not the PI', () => { + cy.contains('Others').click(); + cy.get('[aria-rowindex="1"] [aria-colindex="1"]').contains( + 'Test DOI Title 3' + ); + }); }); describe('Session DOIs', () => { diff --git a/packages/datagateway-dataview/cypress/support/commands.js b/packages/datagateway-dataview/cypress/support/commands.js index b5f801d1a..2ef6d8c64 100644 --- a/packages/datagateway-dataview/cypress/support/commands.js +++ b/packages/datagateway-dataview/cypress/support/commands.js @@ -123,42 +123,45 @@ Cypress.Commands.add('isScrolledTo', { prevSubject: true }, (element) => { }); }); -Cypress.Commands.add('seedUserGeneratedDataPublication', (title) => { - return cy.request('datagateway-dataview-settings.json').then((response) => { - const settings = response.body; - return cy - .request({ - method: 'POST', - url: `${settings.doiMinterUrl}/draft`, - headers: { - Authorization: `Bearer ${readSciGatewayToken().sessionId}`, - }, - body: { - metadata: { - title: title ?? 'Test DOI title', - description: 'Test DOI description', - creators: [], - related_items: [], - subjects: [], - resource_type: 'Collection', - }, - // these ids are specifically mintable by the Chris481 user - investigation_ids: [], - dataset_ids: [15], - datafile_ids: [74, 193], - }, - }) - .then((response) => { - return cy.request({ - method: 'PUT', - url: `${settings.doiMinterUrl}/draft/${response.body.concept.data_publication_id}/publish`, +Cypress.Commands.add( + 'seedUserGeneratedDataPublication', + (title, creators, dataset_ids, datafile_ids) => { + return cy.request('datagateway-dataview-settings.json').then((response) => { + const settings = response.body; + return cy + .request({ + method: 'POST', + url: `${settings.doiMinterUrl}/draft`, headers: { Authorization: `Bearer ${readSciGatewayToken().sessionId}`, }, + body: { + metadata: { + title: title ?? 'Test DOI title', + description: 'Test DOI description', + creators: creators ?? [], + related_items: [], + subjects: [], + resource_type: 'Collection', + }, + // these ids are specifically mintable by the Chris481 user + investigation_ids: [], + dataset_ids: dataset_ids ?? [15], + datafile_ids: datafile_ids ?? [74, 193], + }, + }) + .then((response) => { + return cy.request({ + method: 'PUT', + url: `${settings.doiMinterUrl}/draft/${response.body.concept.data_publication_id}/publish`, + headers: { + Authorization: `Bearer ${readSciGatewayToken().sessionId}`, + }, + }); }); - }); - }); -}); + }); + } +); Cypress.Commands.add('clearDataPublications', (ids) => { return cy.request('datagateway-dataview-settings.json').then((response) => { diff --git a/packages/datagateway-dataview/cypress/support/index.d.ts b/packages/datagateway-dataview/cypress/support/index.d.ts index 0811281f8..fdab507c9 100644 --- a/packages/datagateway-dataview/cypress/support/index.d.ts +++ b/packages/datagateway-dataview/cypress/support/index.d.ts @@ -11,7 +11,10 @@ declare namespace Cypress { clearDownloadCart(): Cypress.Chainable; seedDownloadCart(cartItems: string[]): Cypress.Chainable; seedUserGeneratedDataPublication( - title?: string + title?: string, + creators?: string[], + dataset_ids?: number[], + datafile_ids?: number[] ): Cypress.Chainable; clearDataPublications(ids: string[]): Cypress.Chainable; seedSessionDataPublication(params?: { From e31e6499311e6e70cdf3abe9cb6d48d6f82e69ed Mon Sep 17 00:00:00 2001 From: xkyue Date: Thu, 13 Aug 2026 11:48:44 +0100 Subject: [PATCH 7/8] Add Amy14 into the CI --- .github/workflows/ci-build.yml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/.github/workflows/ci-build.yml b/.github/workflows/ci-build.yml index c91ace90b..7e17242c2 100644 --- a/.github/workflows/ci-build.yml +++ b/.github/workflows/ci-build.yml @@ -295,6 +295,14 @@ jobs: - name: Removing authenticator prefix for simple auth run: | sed -i 's/mechanism = simple/!mechanism = simple/' /home/runner/install/authn.simple/run.properties + - name: Adding Amy14 user + run: | + sed -i '/user\.list/ s/$/ Amy14/' /home/runner/install/authn.simple/run.properties + - name: Adding Amy14 user password + run: | + echo "user.Amy14.password = pw" >> /home/runner/install/authn.simple/run.properties + run: | + sed -i 's/mechanism = simple/!mechanism = simple/' /home/runner/install/authn.simple/run.properties - name: Adding Chris481 user run: | sed -i '/user\.list/ s/$/ Chris481/' /home/runner/install/authn.simple/run.properties From dd3fb7ebf29585e1b0085b121c22c684bf451937 Mon Sep 17 00:00:00 2001 From: xkyue Date: Thu, 13 Aug 2026 13:20:18 +0100 Subject: [PATCH 8/8] Corrected the CI file --- .github/workflows/ci-build.yml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci-build.yml b/.github/workflows/ci-build.yml index 7e17242c2..fd9966dc1 100644 --- a/.github/workflows/ci-build.yml +++ b/.github/workflows/ci-build.yml @@ -132,6 +132,12 @@ jobs: - name: Removing authenticator prefix for simple auth run: | sed -i 's/mechanism = simple/!mechanism = simple/' /home/runner/install/authn.simple/run.properties + - name: Adding Amy14 user + run: | + sed -i '/user\.list/ s/$/ Amy14/' /home/runner/install/authn.simple/run.properties + - name: Adding Amy14 user password + run: | + echo "user.Amy14.password = pw" >> /home/runner/install/authn.simple/run.properties - name: Adding Chris481 user run: | sed -i '/user\.list/ s/$/ Chris481/' /home/runner/install/authn.simple/run.properties @@ -301,8 +307,6 @@ jobs: - name: Adding Amy14 user password run: | echo "user.Amy14.password = pw" >> /home/runner/install/authn.simple/run.properties - run: | - sed -i 's/mechanism = simple/!mechanism = simple/' /home/runner/install/authn.simple/run.properties - name: Adding Chris481 user run: | sed -i '/user\.list/ s/$/ Chris481/' /home/runner/install/authn.simple/run.properties