Skip to content

Commit 4a5e793

Browse files
committed
add tests for resize columns
1 parent 422fcfe commit 4a5e793

File tree

3 files changed

+115
-8
lines changed

3 files changed

+115
-8
lines changed

tests/e2e/helpers/api/api-database.ts

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,16 +12,15 @@ const endpoint = common.getEndpoint();
1212
* @param databaseParameters The database parameters
1313
*/
1414
export async function addNewStandaloneDatabaseApi(databaseParameters: AddNewDatabaseParameters): Promise<void> {
15-
const response = await request(endpoint).post('/instance')
15+
const response = await request(endpoint).post('/databases')
1616
.send({
1717
'name': databaseParameters.databaseName,
1818
'host': databaseParameters.host,
19-
'port': databaseParameters.port,
20-
'username': databaseParameters.databaseUsername,
21-
'password': databaseParameters.databasePassword
19+
'port': +(databaseParameters.port),
20+
'username': databaseParameters.databaseUsername || null,
21+
'password': databaseParameters.databasePassword || null
2222
})
2323
.set('Accept', 'application/json');
24-
2524
await t
2625
.expect(response.status).eql(201, 'The creation of new standalone database request failed')
2726
.expect(await response.body.name).eql(databaseParameters.databaseName, `Database Name is not equal to ${databaseParameters.databaseName} in response`);
@@ -44,7 +43,7 @@ export async function addNewStandaloneDatabasesApi(databasesParameters: AddNewDa
4443
* @param databaseParameters The database parameters
4544
*/
4645
export async function addNewOSSClusterDatabaseApi(databaseParameters: OSSClusterParameters): Promise<void> {
47-
const response = await request(endpoint).post('/instance')
46+
const response = await request(endpoint).post('/databases')
4847
.send({ 'name': databaseParameters.ossClusterDatabaseName, 'host': databaseParameters.ossClusterHost, 'port': databaseParameters.ossClusterPort })
4948
.set('Accept', 'application/json');
5049

@@ -78,7 +77,7 @@ export async function discoverSentinelDatabaseApi(databaseParameters: SentinelPa
7877
* Get all databases through api
7978
*/
8079
export async function getAllDatabases(): Promise<string[]> {
81-
const response = await request(endpoint).get('/instance')
80+
const response = await request(endpoint).get('/databases')
8281
.set('Accept', 'application/json').expect(200);
8382
return await response.body;
8483
}
@@ -144,7 +143,7 @@ export async function deleteAllDatabasesApi(): Promise<void> {
144143
*/
145144
export async function deleteStandaloneDatabaseApi(databaseParameters: AddNewDatabaseParameters): Promise<void> {
146145
const databaseId = await getDatabaseByName(databaseParameters.databaseName);
147-
await request(endpoint).delete('/instance')
146+
await request(endpoint).delete('/databases')
148147
.send({ 'ids': [`${databaseId}`] })
149148
.set('Accept', 'application/json')
150149
.expect(200);

tests/e2e/pageObjects/browser-page.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ export class BrowserPage {
1010
cssSelectorKey = '[data-testid^=key-]';
1111
cssFilteringLabel = '[data-testid=multi-search]';
1212
cssJsonValue = '[data-tesid=value-as-json]';
13+
cssRowInVirtualizedTable = '[role=gridcell]';
1314
//-------------------------------------------------------------------------------------------
1415
//DECLARATION OF SELECTORS
1516
//*Declare all elements/components of the relevant page.
@@ -131,6 +132,7 @@ export class BrowserPage {
131132
createIndexBtn = Selector('[data-testid=create-index-btn]');
132133
cancelIndexCreationBtn = Selector('[data-testid=create-index-cancel-btn]');
133134
confirmIndexCreationBtn = Selector('[data-testid=create-index-btn]');
135+
resizeTrigger = Selector('[data-testid^=resize-trigger-]');
134136
//TABS
135137
streamTabGroups = Selector('[data-testid=stream-tab-Groups]');
136138
streamTabConsumers = Selector('[data-testid=stream-tab-Consumers]');
@@ -556,6 +558,16 @@ export class BrowserPage {
556558
await t.click(this.confirmDeleteKeyButton);
557559
}
558560

561+
/**
562+
* Delete keys by their Names
563+
* @param keyNames The names of the key array
564+
*/
565+
async deleteKeysByNames(keyNames: string[]): Promise<void> {
566+
for(const name of keyNames) {
567+
await this.deleteKeyByName(name);
568+
}
569+
}
570+
559571
/**
560572
* Edit key name from details
561573
* @param keyName The name of the key
Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
import { acceptLicenseTerms } from '../../../helpers/database';
2+
import {
3+
MyRedisDatabasePage,
4+
BrowserPage
5+
} from '../../../pageObjects';
6+
import { rte } from '../../../helpers/constants';
7+
import { commonUrl, ossStandaloneConfig } from '../../../helpers/conf';
8+
import { addNewStandaloneDatabasesApi, deleteStandaloneDatabasesApi } from '../../../helpers/api/api-database';
9+
import { Common } from '../../../helpers/common';
10+
11+
const myRedisDatabasePage = new MyRedisDatabasePage();
12+
const browserPage = new BrowserPage();
13+
const common = new Common();
14+
15+
const keyName = common.generateWord(10);
16+
const longFieldName = common.generateSentence(20);
17+
const keys = [
18+
{ type: 'Hash',
19+
name: `${keyName}:1`,
20+
offsetX: 100,
21+
fieldWidthStart: 0,
22+
fieldWidthEnd: 0
23+
},
24+
{
25+
type: 'List',
26+
name: `${keyName}:2`,
27+
offsetX: 80,
28+
fieldWidthStart: 0,
29+
fieldWidthEnd: 0
30+
},
31+
{
32+
type: 'Zset',
33+
name: `${keyName}:3`,
34+
offsetX: 50,
35+
fieldWidthStart: 0,
36+
fieldWidthEnd: 0
37+
}
38+
];
39+
const keyNames: string[] = [];
40+
keys.forEach(key => keyNames.push(key.name));
41+
42+
const databasesForAdding = [
43+
{ host: ossStandaloneConfig.host, port: ossStandaloneConfig.port, databaseName: 'testDB1' },
44+
{ host: ossStandaloneConfig.host, port: ossStandaloneConfig.port, databaseName: 'testDB2' }
45+
];
46+
47+
fixture `Resize columns in Key details`
48+
.meta({type: 'regression', rte: rte.standalone})
49+
.page(commonUrl)
50+
.beforeEach(async() => {
51+
// Add new databases using API
52+
await acceptLicenseTerms();
53+
await addNewStandaloneDatabasesApi(databasesForAdding);
54+
// Reload Page
55+
await common.reloadPage();
56+
await myRedisDatabasePage.clickOnDBByName(databasesForAdding[0].databaseName);
57+
await browserPage.addHashKey(keys[0].name, '2147476121', longFieldName, longFieldName);
58+
await browserPage.addListKey(keys[1].name, '2147476121', 'element');
59+
await browserPage.addZSetKey(keys[2].name, '1', '2147476121', 'member');
60+
})
61+
.afterEach(async() => {
62+
// Clear and delete database
63+
await browserPage.deleteKeysByNames(keyNames);
64+
await deleteStandaloneDatabasesApi(databasesForAdding);
65+
});
66+
test('Resize of columns in Hash, List, Zset Key details', async t => {
67+
const field = browserPage.keyDetailsTable.find(browserPage.cssRowInVirtualizedTable);
68+
const tableHeaderResizeTrigger = browserPage.resizeTrigger;
69+
70+
for(const key of keys) {
71+
await browserPage.openKeyDetails(key.name);
72+
// Remember initial column width
73+
key.fieldWidthStart = await field.clientWidth;
74+
await t.hover(tableHeaderResizeTrigger);
75+
await t.drag(tableHeaderResizeTrigger, -key.offsetX, 0, { speed: 0.5 });
76+
// Remember last column width
77+
key.fieldWidthEnd = await field.clientWidth;
78+
// Verify that user can resize columns for Hash, List, Zset Keys
79+
await t.expect(key.fieldWidthEnd).eql(key.fieldWidthStart - key.offsetX, `Field is not resized for ${key.type} key`);
80+
}
81+
82+
// Verify that resize saved when switching between pages
83+
await t.click(myRedisDatabasePage.workbenchButton);
84+
await t.click(myRedisDatabasePage.browserButton);
85+
await browserPage.openKeyDetails(keys[0].name);
86+
await t.expect(field.clientWidth).eql(keys[0].fieldWidthEnd, 'Resize context not saved for key when switching between pages');
87+
88+
// Verify that resize saved when switching between databases
89+
await t.click(myRedisDatabasePage.myRedisDBButton);
90+
await myRedisDatabasePage.clickOnDBByName(databasesForAdding[1].databaseName);
91+
// Verify that resize saved for specific data type
92+
for(const key of keys) {
93+
await browserPage.openKeyDetails(key.name);
94+
await t.expect(field.clientWidth).eql(key.fieldWidthEnd, `Resize context not saved for ${key.type} key when switching between databases`);
95+
}
96+
});

0 commit comments

Comments
 (0)