Skip to content

Commit 1d8e24e

Browse files
authored
RI-6570 Verify delete operations for all key types in the browsers module (#4729)
* added e2e tests to verify whether the delete functionality is working fine for all key types listed in the browser module re #RI-6570
1 parent 33e61f7 commit 1d8e24e

File tree

2 files changed

+247
-0
lines changed

2 files changed

+247
-0
lines changed

tests/playwright/pageObjects/browser-page.ts

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1600,4 +1600,36 @@ export class BrowserPage extends BasePage {
16001600
await this.verifyKeyTTL(expectedTTL)
16011601
await this.closeKeyDetailsAndVerify()
16021602
}
1603+
1604+
async verifyKeyExists(keyName: string): Promise<void> {
1605+
await this.searchByKeyName(keyName)
1606+
const keyExists = await this.isKeyIsDisplayedInTheList(keyName)
1607+
expect(keyExists).toBe(true)
1608+
}
1609+
1610+
async verifyKeyDoesNotExist(keyName: string): Promise<void> {
1611+
await this.searchByKeyName(keyName)
1612+
const keyStillExists = await this.isKeyIsDisplayedInTheList(keyName)
1613+
expect(keyStillExists).toBe(false)
1614+
}
1615+
1616+
async deleteKeyFromDetailsView(keyName: string): Promise<void> {
1617+
await this.openKeyDetailsByKeyName(keyName)
1618+
await this.deleteKeyButton.click()
1619+
await this.confirmDeleteKeyButton.click()
1620+
}
1621+
1622+
async deleteKeyFromListView(keyName: string): Promise<void> {
1623+
await this.deleteKeyByNameFromList(keyName)
1624+
}
1625+
1626+
async startKeyDeletion(keyName: string): Promise<void> {
1627+
await this.openKeyDetailsByKeyName(keyName)
1628+
await this.deleteKeyButton.click()
1629+
}
1630+
1631+
async cancelKeyDeletion(): Promise<void> {
1632+
// Click outside the confirmation popover to cancel deletion
1633+
await this.keyDetailsHeader.click()
1634+
}
16031635
}
Lines changed: 215 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,215 @@
1+
import { faker } from '@faker-js/faker'
2+
3+
import { BrowserPage } from '../../pageObjects/browser-page'
4+
import { test } from '../../fixtures/test'
5+
import { ossStandaloneConfig } from '../../helpers/conf'
6+
import {
7+
addStandaloneInstanceAndNavigateToIt,
8+
navigateToStandaloneInstance,
9+
} from '../../helpers/utils'
10+
11+
test.describe('Browser - Delete Key', () => {
12+
let browserPage: BrowserPage
13+
let keyName: string
14+
let cleanupInstance: () => Promise<void>
15+
16+
test.beforeEach(async ({ page, api: { databaseService } }) => {
17+
browserPage = new BrowserPage(page)
18+
keyName = faker.string.alphanumeric(10)
19+
cleanupInstance = await addStandaloneInstanceAndNavigateToIt(
20+
page,
21+
databaseService,
22+
)
23+
24+
await navigateToStandaloneInstance(page)
25+
})
26+
27+
test.afterEach(async ({ api: { keyService } }) => {
28+
// Clean up: delete the key if it still exists
29+
try {
30+
await keyService.deleteKeyByNameApi(
31+
keyName,
32+
ossStandaloneConfig.databaseName,
33+
)
34+
} catch (error) {
35+
// Key might already be deleted in test, ignore error
36+
}
37+
38+
await cleanupInstance()
39+
})
40+
41+
test.describe('when clicking on the delete button in the details view', () => {
42+
test('should delete string key successfully', async ({
43+
api: { keyService },
44+
}) => {
45+
// Arrange: Create a string key
46+
const keyValue = faker.lorem.words(3)
47+
await keyService.addStringKeyApi(
48+
{ keyName, value: keyValue },
49+
ossStandaloneConfig,
50+
)
51+
52+
// Verify key exists, delete it, and verify deletion
53+
await browserPage.verifyKeyExists(keyName)
54+
await browserPage.deleteKeyFromDetailsView(keyName)
55+
await browserPage.verifyKeyDoesNotExist(keyName)
56+
})
57+
58+
test('should delete hash key successfully', async ({
59+
api: { keyService },
60+
}) => {
61+
// Arrange: Create a hash key
62+
const fieldName = faker.string.alphanumeric(8)
63+
const fieldValue = faker.lorem.words(2)
64+
await keyService.addHashKeyApi(
65+
{
66+
keyName,
67+
fields: [{ field: fieldName, value: fieldValue }],
68+
},
69+
ossStandaloneConfig,
70+
)
71+
72+
// Verify key exists, delete it, and verify deletion
73+
await browserPage.verifyKeyExists(keyName)
74+
await browserPage.deleteKeyFromDetailsView(keyName)
75+
await browserPage.verifyKeyDoesNotExist(keyName)
76+
})
77+
78+
test('should delete list key successfully', async ({
79+
api: { keyService },
80+
}) => {
81+
// Arrange: Create a list key
82+
const listElements = [
83+
faker.lorem.word(),
84+
faker.lorem.word(),
85+
faker.lorem.word(),
86+
]
87+
await keyService.addListKeyApi(
88+
{ keyName, elements: listElements },
89+
ossStandaloneConfig,
90+
)
91+
92+
// Verify key exists, delete it, and verify deletion
93+
await browserPage.verifyKeyExists(keyName)
94+
await browserPage.deleteKeyFromDetailsView(keyName)
95+
await browserPage.verifyKeyDoesNotExist(keyName)
96+
})
97+
98+
test('should delete set key successfully', async ({
99+
api: { keyService },
100+
}) => {
101+
// Arrange: Create a set key
102+
const setMembers = [
103+
faker.lorem.word(),
104+
faker.lorem.word(),
105+
faker.lorem.word(),
106+
]
107+
await keyService.addSetKeyApi(
108+
{ keyName, members: setMembers },
109+
ossStandaloneConfig,
110+
)
111+
112+
// Verify key exists, delete it, and verify deletion
113+
await browserPage.verifyKeyExists(keyName)
114+
await browserPage.deleteKeyFromDetailsView(keyName)
115+
await browserPage.verifyKeyDoesNotExist(keyName)
116+
})
117+
118+
test('should delete sorted set key successfully', async ({
119+
api: { keyService },
120+
}) => {
121+
// Arrange: Create a zset key
122+
const zsetMembers = [
123+
{ name: faker.lorem.word(), score: 1.5 },
124+
{ name: faker.lorem.word(), score: 2.0 },
125+
{ name: faker.lorem.word(), score: 10 },
126+
]
127+
await keyService.addZSetKeyApi(
128+
{ keyName, members: zsetMembers },
129+
ossStandaloneConfig,
130+
)
131+
132+
// Verify key exists, delete it, and verify deletion
133+
await browserPage.verifyKeyExists(keyName)
134+
await browserPage.deleteKeyFromDetailsView(keyName)
135+
await browserPage.verifyKeyDoesNotExist(keyName)
136+
})
137+
138+
test('should delete json key successfully', async ({
139+
api: { keyService },
140+
}) => {
141+
// Arrange: Create a JSON key
142+
const jsonValue = {
143+
name: faker.person.fullName(),
144+
age: faker.number.int({ min: 18, max: 80 }),
145+
active: true,
146+
}
147+
await keyService.addJsonKeyApi(
148+
{ keyName, value: jsonValue },
149+
ossStandaloneConfig,
150+
)
151+
152+
// Verify key exists, delete it, and verify deletion
153+
await browserPage.verifyKeyExists(keyName)
154+
await browserPage.deleteKeyFromDetailsView(keyName)
155+
await browserPage.verifyKeyDoesNotExist(keyName)
156+
})
157+
158+
test('should delete stream key successfully', async ({
159+
api: { keyService },
160+
}) => {
161+
// Arrange: Create a stream key
162+
const streamEntries = [
163+
{
164+
id: '*',
165+
fields: [
166+
{ name: 'temperature', value: '25.5' },
167+
{ name: 'location', value: 'sensor-001' },
168+
],
169+
},
170+
]
171+
await keyService.addStreamKeyApi(
172+
{ keyName, entries: streamEntries },
173+
ossStandaloneConfig,
174+
)
175+
176+
// Verify key exists, delete it, and verify deletion
177+
await browserPage.verifyKeyExists(keyName)
178+
await browserPage.deleteKeyFromDetailsView(keyName)
179+
await browserPage.verifyKeyDoesNotExist(keyName)
180+
})
181+
})
182+
183+
test('should delete key from list view using delete button', async ({
184+
api: { keyService },
185+
}) => {
186+
// Arrange: Create a string key for this test
187+
const keyValue = faker.lorem.words(2)
188+
await keyService.addStringKeyApi(
189+
{ keyName, value: keyValue },
190+
ossStandaloneConfig,
191+
)
192+
193+
// Verify key exists, delete from list view, and verify deletion
194+
await browserPage.verifyKeyExists(keyName)
195+
await browserPage.deleteKeyFromListView(keyName)
196+
await browserPage.verifyKeyDoesNotExist(keyName)
197+
})
198+
199+
test('should cancel key deletion when outside of the deletion confirmation popover', async ({
200+
api: { keyService },
201+
}) => {
202+
// Arrange: Create a string key
203+
const keyValue = faker.lorem.words(3)
204+
await keyService.addStringKeyApi(
205+
{ keyName, value: keyValue },
206+
ossStandaloneConfig,
207+
)
208+
209+
// Verify key exists, start deletion but cancel, and verify key still exists
210+
await browserPage.verifyKeyExists(keyName)
211+
await browserPage.startKeyDeletion(keyName)
212+
await browserPage.cancelKeyDeletion()
213+
await browserPage.verifyKeyExists(keyName)
214+
})
215+
})

0 commit comments

Comments
 (0)