Skip to content

Commit 9b9e32e

Browse files
committed
test: [PROD-14255] add cypress test for the dataset rename feature
1 parent c45a394 commit 9b9e32e

File tree

5 files changed

+114
-0
lines changed

5 files changed

+114
-0
lines changed

cypress/commons/actions/generic/DatasetManager.js

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,26 @@ export const getDatasetOverviewPlaceholderRetryButton = () => cy.get(SELECTORS.o
9898
export const getDatasetOverviewPlaceholderRollbackButton = () => cy.get(SELECTORS.overview.placeholder.rollbackButton);
9999
export const getDatasetOverviewPlaceholderApiLink = () => cy.get(SELECTORS.overview.placeholder.apiLink);
100100

101+
export const getDatasetNameEditableTextField = () => cy.get(SELECTORS.overview.datasetNameTextField);
102+
export const getRenameDatasetButton = () => cy.get(SELECTORS.overview.renameScenario);
103+
104+
// Parameters
105+
// - newDatasetName (string)
106+
// - options (object) is an optional parameter. If provided, it can have the following properties:
107+
// - id (optional): id of the dataset to update (if not provided, it will be guessed from the request URL)
108+
// - validateRequest (optional): validation function to run on the dataset update request
109+
export const renameDataset = (newDatasetName, options) => {
110+
const renameDatasetAlias = api.interceptUpdateDataset({
111+
id: options?.id,
112+
validateRequest: options?.validateRequest,
113+
});
114+
115+
getRenameDatasetButton().click();
116+
getDatasetNameEditableTextField().type('{selectAll}{backspace}' + newDatasetName + '{enter}');
117+
118+
api.waitAlias(renameDatasetAlias);
119+
};
120+
101121
export const getCategoryAccordionSummary = (categoryId) =>
102122
cy.get(SELECTORS.overview.categories.accordionSummary.replace('$CATEGORY_ID', categoryId));
103123
export const getCategoryAccordionDetails = (categoryId) =>

cypress/commons/constants/generic/IdConstants.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -241,6 +241,8 @@ export const GENERIC_SELECTORS = {
241241
},
242242
overview: {
243243
datasetName: '[data-cy=dataset-name]',
244+
datasetNameTextField: '[data-cy=dataset-name-editable-text-field]',
245+
renameScenario: '[data-cy=rename-dataset-button]',
244246
placeholder: {
245247
container: '[data-cy=dataset-overview-placeholder]',
246248
title: '[data-cy=dataset-overview-title]',
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
// Copyright (c) Cosmo Tech.
2+
// Licensed under the MIT license.
3+
import { DatasetManager, Login } from '../../commons/actions';
4+
import { stub } from '../../commons/services/stubbing';
5+
import { SOLUTION, WORKSPACE, ORGANIZATION_WITH_DEFAULT_ROLE_USER } from '../../fixtures/stubbing/DatasetManager';
6+
import { EDITABLE_DATASET, NON_EDITABLE_DATASET } from '../../fixtures/stubbing/RenameDataset';
7+
8+
describe('rename datasets in Dataset Manager view', () => {
9+
before(() => {
10+
const linkedWorkspace = { ...WORKSPACE, linkedDatasetIdList: [EDITABLE_DATASET.id, NON_EDITABLE_DATASET.id] };
11+
stub.start();
12+
stub.setOrganizations([ORGANIZATION_WITH_DEFAULT_ROLE_USER]);
13+
stub.setSolutions([SOLUTION]);
14+
stub.setWorkspaces([linkedWorkspace]);
15+
console.log(EDITABLE_DATASET, NON_EDITABLE_DATASET);
16+
stub.setDatasets([EDITABLE_DATASET, NON_EDITABLE_DATASET]);
17+
});
18+
19+
beforeEach(() => Login.login({ url: '/W-stbbdbrwryWithDM/datasetmanager', workspaceId: 'W-stbbdbrwryWithDM' }));
20+
after(stub.stop);
21+
22+
it('cannot rename datasets if role is viewer', () => {
23+
DatasetManager.switchToDatasetManagerView();
24+
DatasetManager.selectDatasetById(NON_EDITABLE_DATASET.id);
25+
DatasetManager.getDatasetNameInOverview().should('have.text', NON_EDITABLE_DATASET.name);
26+
DatasetManager.getDatasetNameEditableTextField().should('not.exist');
27+
DatasetManager.getRenameDatasetButton().should('not.exist');
28+
});
29+
30+
it('can rename datasets if role is editor', () => {
31+
const datasetName = EDITABLE_DATASET.name;
32+
const newName = 'renamed';
33+
34+
DatasetManager.switchToDatasetManagerView();
35+
DatasetManager.selectDatasetById(EDITABLE_DATASET.id);
36+
DatasetManager.getDatasetNameInOverview().should('have.text', datasetName);
37+
DatasetManager.getDatasetNameEditableTextField().should('not.exist');
38+
DatasetManager.getRenameDatasetButton().should('exist').should('be.visible');
39+
40+
// Edit & cancel without confirming the changes
41+
DatasetManager.getRenameDatasetButton().click();
42+
DatasetManager.getDatasetNameInOverview().should('not.exist');
43+
DatasetManager.getDatasetNameEditableTextField().should('exist').should('be.visible');
44+
DatasetManager.getDatasetNameEditableTextField().type('{selectAll}{backspace}' + newName + '{esc}');
45+
DatasetManager.getDatasetNameEditableTextField().should('not.exist'); // Input field disappeared
46+
DatasetManager.getDatasetNameInOverview().should('have.text', datasetName); // Initial name remained unchanged
47+
48+
// Edit & confirm
49+
const validateRequest = (query) => {
50+
console.log(query);
51+
return true;
52+
};
53+
DatasetManager.renameDataset(newName, { validateRequest });
54+
DatasetManager.getDatasetNameInOverview().should('have.text', newName); // Dataset name has been changed
55+
56+
// Switch between dataset and check that the new name has been persisted
57+
DatasetManager.selectDatasetById(NON_EDITABLE_DATASET.id);
58+
DatasetManager.getDatasetNameInOverview().should('have.text', NON_EDITABLE_DATASET.name);
59+
DatasetManager.selectDatasetById(EDITABLE_DATASET.id);
60+
DatasetManager.getDatasetNameInOverview().should('have.text', newName);
61+
});
62+
});
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
// Copyright (c) Cosmo Tech.
2+
// Licensed under the MIT license.
3+
import { WORKSPACE } from '../DatasetManager/workspaces';
4+
import { DEFAULT_DATASET } from '../default';
5+
6+
export const NON_EDITABLE_DATASET = {
7+
...DEFAULT_DATASET,
8+
main: true,
9+
id: 'd-noneditable',
10+
name: 'non editable dataset',
11+
ingestionStatus: 'SUCCESS',
12+
twincacheStatus: 'FULL',
13+
linkedWorkspaceIdList: [WORKSPACE.id],
14+
security: { default: 'viewer', accessControlList: [] },
15+
};
16+
17+
export const EDITABLE_DATASET = {
18+
...DEFAULT_DATASET,
19+
main: true,
20+
id: 'd-editable',
21+
name: 'editable dataset',
22+
ingestionStatus: 'SUCCESS',
23+
twincacheStatus: 'FULL',
24+
linkedWorkspaceIdList: [WORKSPACE.id],
25+
security: { default: 'editor', accessControlList: [] },
26+
};
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
// Copyright (c) Cosmo Tech.
2+
// Licensed under the MIT license.
3+
4+
export { EDITABLE_DATASET, NON_EDITABLE_DATASET } from './datasets';

0 commit comments

Comments
 (0)