Skip to content

Commit b0a457a

Browse files
committed
add tests on sorting and fixes
1 parent 9bffd96 commit b0a457a

File tree

6 files changed

+121
-14
lines changed

6 files changed

+121
-14
lines changed

tests/e2e/pageObjects/browser-page.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -207,7 +207,7 @@ export class BrowserPage extends InstancePage {
207207
jsonKeyValue = Selector('[data-testid=json-data]');
208208
jsonError = Selector('[data-testid=edit-json-error]');
209209
tooltip = Selector('[role=tooltip]');
210-
noResultsFound = Selector('[data-testid=no-result-found-only]');
210+
noResultsFound = Selector('[data-test-subj=no-result-found]');
211211
searchAdvices = Selector('[data-test-subj=search-advices]');
212212
keysNumberOfResults = Selector('[data-testid=keys-number-of-results]');
213213
keysTotalNumber = Selector('[data-testid=keys-total]');

tests/e2e/pageObjects/components/browser/tree-view.ts

Lines changed: 44 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { Selector, t } from 'testcafe';
2+
import { Common } from '../../../helpers/common';
23

34
export class TreeView {
45
//-------------------------------------------------------------------------------------------
@@ -11,13 +12,16 @@ export class TreeView {
1112
treeViewSettingsBtn = Selector('[data-testid=tree-view-settings-btn]');
1213
treeViewDelimiterValueSave = Selector('[data-testid=tree-view-apply-btn]');
1314
treeViewDelimiterValueCancel = Selector('[data-testid=tree-view-cancel-btn]');
15+
sortingBtn = Selector('[data-testid=tree-view-sorting-select]');
16+
sortingASCoption = Selector('[id=ASC]');
17+
sortingDESCoption = Selector('[id=DESC]');
18+
sortingProgressBar = Selector('[data-testid=progress-key-tree]');
1419
// TEXT ELEMENTS
1520
treeViewKeysNumber = Selector('[data-testid^=count_]');
1621
treeViewDeviceFolder = Selector('[data-testid^=node-item_device] div');
1722
//INPUTS
1823
treeViewDelimiterInput = Selector('[data-testid=tree-view-delimiter-input]');
1924

20-
2125
/**
2226
* Get folder selector by folder name
2327
* @param folderName The name of the folder
@@ -31,16 +35,16 @@ export class TreeView {
3135
* @param folderName The name of the folder
3236
*/
3337
getFolderCountSelectorByName(folderName: string): Selector {
34-
return Selector(`[data-testid^="count_${folderName}"]`);
35-
}
38+
return Selector(`[data-testid^="count_${folderName}"]`);
39+
}
3640

3741
/**
3842
* Verifying if the Keys are in the List of keys
3943
* @param keyNames The names of the keys
4044
* @param isDisplayed True if keys should be displayed
4145
*/
4246
async verifyFolderDisplayingInTheList(folderName: string, isDisplayed: boolean): Promise<void> {
43-
isDisplayed
47+
isDisplayed
4448
? await t.expect(this.getFolderSelectorByName(folderName).exists).ok(`The folder ${folderName} not found`)
4549
: await t.expect(this.getFolderSelectorByName(folderName).exists).notOk(`The folder ${folderName} found`);
4650
}
@@ -58,6 +62,23 @@ export class TreeView {
5862
await t.click(this.treeViewDelimiterValueSave);
5963
}
6064

65+
/**
66+
* Change ordering value
67+
* @param order ASC/DESC ordering for tree view
68+
*/
69+
async changeOrderingInTreeView(order: string): Promise<void> {
70+
// Open settings popup
71+
await t.click(this.treeViewSettingsBtn);
72+
await t.click(this.sortingBtn);
73+
order === 'ASC'
74+
? await t.click(this.sortingASCoption)
75+
: await t.click(this.sortingDESCoption)
76+
77+
// Click on save button
78+
await t.click(this.treeViewDelimiterValueSave);
79+
await Common.waitForElementNotVisible(this.sortingProgressBar);
80+
}
81+
6182
/**
6283
* Get text from tree element by number
6384
* @param number The number of tree folder
@@ -80,4 +101,23 @@ export class TreeView {
80101
}
81102
}
82103
}
104+
105+
/**
106+
* Get all keys from tree view list with order
107+
*/
108+
async getAllItemsArray(): Promise<string[]> {
109+
const textArray: string[] = [];
110+
const treeViewItemElements = Selector('[role="treeitem"]');
111+
const itemCount = await treeViewItemElements.count;
112+
113+
for (let i = 0; i < itemCount; i++) {
114+
const treeItem = treeViewItemElements.nth(i);
115+
const keyItem = treeItem.find('[data-testid^="key-"]');
116+
if (await keyItem.exists) {
117+
textArray.push(await keyItem.textContent);
118+
}
119+
}
120+
121+
return textArray;
122+
}
83123
}

tests/e2e/tests/electron/critical-path/tree-view/tree-view-improvements.e2e.ts

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,7 @@ test
117117
})
118118
.after(async() => {
119119
await browserPage.Cli.sendCommandInCli(`FT.DROPINDEX ${index}`);
120+
await browserPage.Cli.sendCommandInCli('flushdb');
120121
await databaseAPIRequests.deleteStandaloneDatabaseApi(ossStandaloneConfig);
121122
})('Verify tree view navigation for index based search', async t => {
122123
keyName1 = Common.generateWord(10); // used to create index name
@@ -138,13 +139,10 @@ test
138139
await t.click(browserPage.redisearchModeBtn); // click redisearch button
139140
await browserPage.selectIndexByName(index);
140141
await t.click(browserPage.treeViewButton);
141-
await t.click(Selector(`[data-testid="${`node-item_${folders[0]}:`}"]`)); // close folder
142142
await browserPage.TreeView.openTreeFolders(folders);
143143
await t.click(browserPage.refreshKeysButton);
144144
// Refreshed Tree view preselected folder for index based search
145-
await t.expect(
146-
Selector(`[data-testid="node-item_${folders[0]}:${folders[1]}:keys:keys:"]`).visible)
147-
.ok('Folder is not selected');
145+
await browserPage.TreeView.verifyFolderDisplayingInTheList(keyName1, true);
148146
});
149147

150148
test

tests/e2e/tests/web/critical-path/tree-view/tree-view-improvements.e2e.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -140,9 +140,7 @@ test
140140
await browserPage.TreeView.openTreeFolders(folders);
141141
await t.click(browserPage.refreshKeysButton);
142142
// Refreshed Tree view preselected folder for index based search
143-
await t.expect(
144-
Selector(`[data-testid="node-item_${folders[0]}:${folders[1]}:keys:keys:"]`).visible)
145-
.ok('Folder is not selected');
143+
await browserPage.TreeView.verifyFolderDisplayingInTheList(keyName1, true);
146144
});
147145
test
148146
.before(async() => {

tests/e2e/tests/web/regression/browser/add-keys.e2e.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import { commonUrl, ossStandaloneBigConfig, ossStandaloneConfig } from '../../..
55
import { DatabaseAPIRequests } from '../../../../helpers/api/api-database';
66
import { Common } from '../../../../helpers/common';
77
import { BrowserActions } from '../../../../common-actions/browser-actions';
8+
import { verifyKeysDisplayingInTheList } from '../../../../helpers/keys';
89

910
const browserPage = new BrowserPage();
1011
const browserActions = new BrowserActions();
@@ -96,7 +97,8 @@ test
9697
await t.click(browserPage.treeViewButton);
9798
await browserPage.addHashKey(keyName3);
9899
// Verify that user can see Tree view recalculated when new key is added in Tree view
99-
await browserActions.verifyKeyDisplayedTopAndOpened(keyName3);
100+
await browserActions.verifyKeyIsNotDisplayedTop(keyName3);
101+
await verifyKeysDisplayingInTheList([keyName3], true);
100102

101103
await t.click(browserPage.redisearchModeBtn);
102104
await browserPage.selectIndexByName(indexName);

tests/e2e/tests/web/regression/tree-view/tree-view.e2e.ts

Lines changed: 70 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,21 @@ import { BrowserPage, WorkbenchPage } from '../../../../pageObjects';
33
import {
44
commonUrl,
55
ossStandaloneBigConfig,
6+
ossStandaloneConfigEmpty,
67
ossStandaloneRedisearch
78
} from '../../../../helpers/conf';
89
import { KeyTypesTexts, rte } from '../../../../helpers/constants';
910
import { DatabaseAPIRequests } from '../../../../helpers/api/api-database';
11+
import { APIKeyRequests } from '../../../../helpers/api/api-keys';
12+
import { Common } from '../../../../helpers/common';
1013

1114
const browserPage = new BrowserPage();
1215
const workbenchPage = new WorkbenchPage();
1316
const databaseHelper = new DatabaseHelper();
1417
const databaseAPIRequests = new DatabaseAPIRequests();
18+
const apiKeyRequests = new APIKeyRequests();
19+
20+
let keyNames: string[] = [];
1521

1622
fixture `Tree view verifications`
1723
.meta({ type: 'regression', rte: rte.standalone })
@@ -65,7 +71,7 @@ test('Verify that when user deletes the key he can see the key is removed from t
6571
await t.expect(mainFolder.visible).ok('The key folder is not displayed');
6672
await t.click(mainFolder);
6773
const numberOfKeys = await browserPage.TreeView.getFolderCountSelectorByName('device').textContent;
68-
const targetFolderName = await mainFolder.nth(1).find(`[data-testid^=folder-]`).textContent;
74+
const targetFolderName = await mainFolder.nth(1).find('[data-testid^=folder-]').textContent;
6975
const targetFolderSelector = browserPage.TreeView.getFolderSelectorByName(`device:${targetFolderName}`);
7076
await t.click(targetFolderSelector);
7177
await browserPage.deleteKey();
@@ -76,3 +82,66 @@ test('Verify that when user deletes the key he can see the key is removed from t
7682
const actualCount = await browserPage.TreeView.getFolderCountSelectorByName('device').textContent;
7783
await t.expect(+actualCount).lt(+numberOfKeys, 'The number of keys is not recalculated');
7884
});
85+
test
86+
.before(async() => {
87+
await databaseHelper.acceptLicenseTermsAndAddDatabaseApi(ossStandaloneConfigEmpty);
88+
})
89+
.after(async() => {
90+
// Clear and delete database
91+
for(const name of keyNames) {
92+
await apiKeyRequests.deleteKeyByNameApi(name, ossStandaloneConfigEmpty.databaseName);
93+
}
94+
await databaseAPIRequests.deleteStandaloneDatabaseApi(ossStandaloneConfigEmpty);
95+
})('Verify that if there are keys without namespaces, they are displayed in the root directory after all folders by default in the Tree view', async t => {
96+
keyNames = [
97+
`atest:a-${Common.generateWord(10)}`,
98+
`atest:z-${Common.generateWord(10)}`,
99+
`ztest:a-${Common.generateWord(10)}`,
100+
`ztest:z-${Common.generateWord(10)}`,
101+
`atest-${Common.generateWord(10)}`,
102+
`ztest-${Common.generateWord(10)}`
103+
];
104+
const commands = [
105+
'flushdb',
106+
`HSET ${keyNames[0]} field value`,
107+
`HSET ${keyNames[1]} field value`,
108+
`HSET ${keyNames[2]} field value`,
109+
`SADD ${keyNames[3]} value`,
110+
`SADD ${keyNames[4]} value`,
111+
`HSET ${keyNames[5]} field value`
112+
];
113+
const expectedSortedByASC = [
114+
keyNames[0].split(':')[1],
115+
keyNames[1].split(':')[1],
116+
keyNames[2].split(':')[1],
117+
keyNames[3].split(':')[1],
118+
keyNames[4],
119+
keyNames[5]
120+
];
121+
const expectedSortedByDESC = [
122+
keyNames[3].split(':')[1],
123+
keyNames[2].split(':')[1],
124+
keyNames[1].split(':')[1],
125+
keyNames[0].split(':')[1],
126+
keyNames[5],
127+
keyNames[4]
128+
];
129+
130+
// Create 5 keys
131+
await browserPage.Cli.sendCommandsInCli(commands);
132+
await t.click(browserPage.treeViewButton);
133+
134+
// Verify that if there are keys without namespaces, they are displayed in the root directory after all folders by default in the Tree view
135+
await browserPage.TreeView.openTreeFolders([`${keyNames[0]}`.split(':')[0]]);
136+
await browserPage.TreeView.openTreeFolders([`${keyNames[2]}`.split(':')[0]]);
137+
let actualItemsArray = await browserPage.TreeView.getAllItemsArray();
138+
// Verify that user can see all folders and keys sorted by name ASC by default
139+
await t.expect(actualItemsArray).eql(expectedSortedByASC);
140+
141+
// Verify that user can change the sorting ASC-DESC
142+
await browserPage.TreeView.changeOrderingInTreeView('DESC');
143+
await browserPage.TreeView.openTreeFolders([`${keyNames[2]}`.split(':')[0]]);
144+
await browserPage.TreeView.openTreeFolders([`${keyNames[0]}`.split(':')[0]]);
145+
actualItemsArray = await browserPage.TreeView.getAllItemsArray();
146+
await t.expect(actualItemsArray).eql(expectedSortedByDESC);
147+
});

0 commit comments

Comments
 (0)