Skip to content

Commit 59e82fe

Browse files
committed
draft
1 parent fffc624 commit 59e82fe

File tree

7 files changed

+808
-117
lines changed

7 files changed

+808
-117
lines changed

front/e2e/src/helper/grid.ts

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -82,15 +82,17 @@ export class Grid {
8282
* - value: the expected value in that column
8383
* @param expectedRowCount - Expected row count
8484
*/
85-
public async expectColumnsToBe<TFilters extends Record<string, FilterType>>(
85+
public async expectRowsToBe<TFilters extends Record<string, FilterType>>(
8686
filter: Filter<TFilters>,
8787
filtersToApply: FilterValues<TFilters>,
8888
expectedRow: GridCondition[],
8989
expectedRowCount: number = 1,
9090
) {
9191
await filter.addFilters(filtersToApply)
9292
await this.pagination.expectToHaveCount(expectedRowCount)
93-
await this.expectToFindLineWhere(expectedRow)
93+
if (expectedRowCount !== 0 || expectedRow.length !== 0) {
94+
await this.expectToFindLineWhere(expectedRow)
95+
}
9496
}
9597

9698
/**
@@ -188,6 +190,14 @@ export class Grid {
188190
await expect(grid).toBeVisible()
189191
}
190192

193+
public static getCommonGridTestIds(
194+
resourceName: string,
195+
) {
196+
return {
197+
createButton: generateTestId(TestId.GRID_CREATE_BUTTON, resourceName)
198+
} as const
199+
}
200+
191201
/**
192202
* Lazily retrieves the grid Locator.
193203
*

front/e2e/src/tests/pages/admin/merchandising/boost.spec.ts

Lines changed: 74 additions & 111 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import {Grid} from '../../../../helper/grid'
88
import {Filter, FilterType} from '../../../../helper/filter'
99
import {AlertMessage, AlertMessageType} from '../../../../helper/alertMessage'
1010
import {generateTestId, TestId} from "../../../../utils/testIds";
11+
import {deleteEntity, getCommonFormTestIds} from "../../../../utils/form";
1112

1213
const resourceName = 'Boost'
1314

@@ -21,21 +22,16 @@ const testIds = {
2122
localizedCatalogs: 'localizedCatalogs.id[]',
2223
},
2324
form: {
25+
... getCommonFormTestIds(resourceName),
2426
localizedCatalogs: 'localizedCatalogs',
2527
isActive: 'isActive',
2628
name: generateTestId(TestId.INPUT_TEXT, 'name'),
2729
requestType: 'requestTypes',
2830
model: 'model',
29-
submitButton: generateTestId(TestId.BUTTON, 'submit'),
30-
deleteButton: generateTestId(TestId.BUTTON, 'delete'),
31-
backButton: generateTestId(TestId.BUTTON, 'back'),
32-
deleteBoostPopin: {
33-
dialogConfirmButton: generateTestId(TestId.DIALOG_CONFIRM_BUTTON, resourceName),
34-
},
3531
previewFieldSet: generateTestId(TestId.FIELD_SET, 'preview'),
3632
previewRequiredMessage: generateTestId(TestId.PREVIEW_REQUIRED_MESSAGE)
3733
},
38-
createBoostButton: generateTestId(TestId.GRID_CREATE_BUTTON, resourceName)
34+
... Grid.getCommonGridTestIds(resourceName)
3935
} as const
4036

4137
const texts = {
@@ -60,7 +56,7 @@ const texts = {
6056
isActive: true,
6157
localizedCatalogs: ['COM French Catalog']
6258
},
63-
boostToCreateValues: {
59+
createValues: {
6460
localizedCatalogs: [
6561
'COM French Catalog',
6662
'COM English Catalog',
@@ -73,17 +69,22 @@ const texts = {
7369
],
7470
model: 'Constant score'
7571
},
76-
boostToEditValues: {
72+
editValues: {
7773
localizedCatalogs: ['COM French Catalog'],
7874
editedLocalizedCatalogDisplay: 'COM Catalog - COM French Catalog',
7975
},
80-
paginationOptions: ['10', '25', '50']
8176
} as const
8277

78+
const urls = {
79+
grid: '/admin/merchandize/boost/grid',
80+
create: '/admin/merchandize/boost/create',
81+
edit: /\/admin\/merchandize\/boost\/edit\?id=\d+$/
82+
}
83+
8384
test('Pages > Merchandising > Boosts', {tag: ['@premium']}, async ({page}) => {
8485
await test.step('Login and navigate to the Boosts page', async () => {
8586
await login(page)
86-
await navigateTo(page, texts.labelMenuPage, '/admin/merchandize/boost/grid')
87+
await navigateTo(page, texts.labelMenuPage, urls.grid)
8788
})
8889

8990
// Grid and Filters Locators:
@@ -95,7 +96,7 @@ test('Pages > Merchandising > Boosts', {tag: ['@premium']}, async ({page}) => {
9596
[testIds.filter.isActive]: FilterType.BOOLEAN,
9697
[testIds.filter.localizedCatalogs]: FilterType.DROPDOWN,
9798
})
98-
const createButton = page.getByTestId(testIds.createBoostButton)
99+
const createButton = page.getByTestId(testIds.createButton)
99100

100101
// Form Locators (Edit / Create):
101102
const localizedCatalogs = new Dropdown(page, testIds.form.localizedCatalogs, true)
@@ -105,91 +106,53 @@ test('Pages > Merchandising > Boosts', {tag: ['@premium']}, async ({page}) => {
105106
const requestTypesDropdown = new Dropdown(page, testIds.form.requestType, true)
106107
const modelDropdown = new Dropdown(page, testIds.form.model)
107108
const saveButton = page.getByTestId(testIds.form.submitButton)
108-
const deleteButton = page.getByTestId(testIds.form.deleteButton)
109109

110-
// Define a name for the new created Boost.
110+
// Define a name for the new created Entity.
111111
const newName = randomUUID()
112112

113113
await test.step('Verify grid headers and pagination', async () => {
114114
await grid.expectHeadersToBe(Object.values(texts.gridHeaders))
115-
await grid.pagination.expectToHaveOptions(texts.paginationOptions)
116-
await grid.pagination.expectToHaveRowsPerPage(50)
117115
})
118116

119117
await test.step('Add some filters and remove them', async () => {
120118
const defaultRowCount = await grid.getCountLines()
119+
121120
await test.step('Apply all filters available', async () => {
122-
await filter.addFilter(
123-
testIds.filter.name,
124-
texts.filtersToApply.name
125-
)
126-
await filter.addFilter(testIds.filter.model, texts.filtersToApply.model)
127-
await filter.addFilter(testIds.filter.requestType, texts.filtersToApply.requestType)
128-
await filter.addFilter(testIds.filter.isActive, true)
129-
await filter.addFilter(
130-
testIds.filter.localizedCatalogs,
131-
texts.filtersToApply.localizedCatalogs
132-
)
121+
await filter.addFilters({
122+
[testIds.filter.name]: texts.filtersToApply.name,
123+
[testIds.filter.model]: texts.filtersToApply.model,
124+
[testIds.filter.requestType]: texts.filtersToApply.requestType,
125+
[testIds.filter.isActive]: true,
126+
[testIds.filter.localizedCatalogs]: texts.filtersToApply.localizedCatalogs,
127+
})
133128
})
134129

135130
await test.step('Remove applied filters one by one', async () => {
136-
await filter.removeFilter(
137-
testIds.filter.name,
138-
texts.filtersToApply.name
139-
)
140-
141-
for (let i = 0; i < texts.filtersToApply.model.length; i++) {
142-
await filter.removeFilter(
143-
testIds.filter.model,
144-
texts.filtersToApply.model[i]
145-
)
146-
}
147-
148-
for (let i = 0; i < texts.filtersToApply.requestType.length; i++) {
149-
await filter.removeFilter(
150-
testIds.filter.requestType,
151-
texts.filtersToApply.requestType[i]
152-
)
153-
}
154-
155-
await filter.removeFilter(
156-
testIds.filter.isActive,
157-
texts.filtersToApply.isActive
158-
)
159-
160-
for (let i = 0; i < texts.filtersToApply.localizedCatalogs.length; i++) {
161-
await filter.removeFilter(
162-
testIds.filter.localizedCatalogs,
163-
texts.filtersToApply.localizedCatalogs[i]
164-
)
165-
}
131+
await filter.removeFilters({
132+
[testIds.filter.name]: texts.filtersToApply.name,
133+
[testIds.filter.model]: texts.filtersToApply.model,
134+
[testIds.filter.requestType]: texts.filtersToApply.requestType,
135+
[testIds.filter.isActive]: texts.filtersToApply.isActive,
136+
[testIds.filter.localizedCatalogs]: texts.filtersToApply.localizedCatalogs,
137+
})
166138
})
167139

168140
await test.step('Apply a filter and compare the grid to see if it works', async () => {
169-
await filter.addFilter(
170-
testIds.filter.name,
171-
texts.filtersToApply.name
141+
await grid.expectRowsToBe(
142+
filter,
143+
{[testIds.filter.name]: texts.filtersToApply.name},
144+
[{columnName: texts.gridHeaders.name, value: texts.filtersToApply.name}]
172145
)
173-
174-
await grid.pagination.expectToHaveCount(1)
175-
176-
await grid.expectToFindLineWhere([
177-
{
178-
columnName: texts.gridHeaders.name,
179-
value: texts.filtersToApply.name,
180-
},
181-
])
182146
})
183147

184148
await test.step('Clear filter', async () => {
185-
await filter.clearFilters()
186-
await grid.pagination.expectToHaveCount(defaultRowCount)
149+
await grid.expectAllFiltersRemoved(filter, defaultRowCount)
187150
})
188151
})
189152

190153
await test.step('Create a Boost', async () => {
191154
await createButton.click()
192-
await expect(page).toHaveURL('/admin/merchandize/boost/create')
155+
await expect(page).toHaveURL(urls.create)
193156

194157
// isActive Switch
195158
await test.step('Disable and enable the "isActive" switch', async () => {
@@ -211,17 +174,17 @@ test('Pages > Merchandising > Boosts', {tag: ['@premium']}, async ({page}) => {
211174
})
212175

213176
// Localized Catalogs Multiple Dropdown
214-
await test.step('Choose localize catalogs in "localized Catalogs" dropdown', async () => {
215-
await localizedCatalogs.selectValue(texts.boostToCreateValues.localizedCatalogs)
177+
await test.step('Choose localized catalogs in "localized Catalogs" dropdown', async () => {
178+
await localizedCatalogs.selectValue(texts.createValues.localizedCatalogs)
216179
})
217180

218181
// Request types Multiple Dropdown
219-
await test.step('Choose requestypes in the requestTypes component', async () => {
220-
await requestTypesDropdown.selectValue(texts.boostToCreateValues.requestType)
182+
await test.step('Choose request type in the requestTypes component', async () => {
183+
await requestTypesDropdown.selectValue(texts.createValues.requestType)
221184
})
222185

223186
// Model Dropdown
224-
await modelDropdown.selectValue(texts.boostToCreateValues.model)
187+
await modelDropdown.selectValue(texts.createValues.model)
225188

226189
// Preview Boost Required Message
227190
await expect(
@@ -230,59 +193,59 @@ test('Pages > Merchandising > Boosts', {tag: ['@premium']}, async ({page}) => {
230193

231194
// Create the Boost
232195
await saveButton.click()
233-
await expect(page).toHaveURL('/admin/merchandize/boost/grid')
196+
await expect(page).toHaveURL(urls.grid)
234197
})
198+
235199
await test.step('Verify the boost existence in the grid', async () => {
236-
await grid.expectToFindLineWhere([
237-
{
238-
columnName: texts.gridHeaders.name,
239-
value: newName,
240-
},
241-
])
242-
await filter.addFilter(testIds.filter.name, newName)
243-
await grid.pagination.expectToHaveCount(1)
200+
await grid.expectRowsToBe(
201+
filter,
202+
{[testIds.filter.name]: newName},
203+
[{columnName: texts.gridHeaders.name, value: newName}]
204+
)
244205
})
245206

246207
const editLink = page.locator(`[data-testid="${testIds.grid}"] a`)
247208

248209
await test.step('Edit a Boost', async () => {
249210
await editLink.click()
250-
await expect(page).toHaveURL(/\/admin\/merchandize\/boost\/edit\?id=\d+$/)
211+
await expect(page).toHaveURL(urls.edit)
251212

252-
await localizedCatalogs.expectToHaveValue(texts.boostToCreateValues.localizedCatalogs)
213+
await localizedCatalogs.expectToHaveValue(texts.createValues.localizedCatalogs)
253214
await localizedCatalogs.clear()
254-
await localizedCatalogs.selectValue(texts.boostToEditValues.localizedCatalogs)
215+
await localizedCatalogs.selectValue(texts.editValues.localizedCatalogs)
255216

256217
await saveButton.click()
257218
const alertMessage = new AlertMessage(page)
258219
await alertMessage.expectToHaveText('Updating of the boost with success', AlertMessageType.SUCCESS)
259220

260-
const backButton = page.getByTestId(testIds.form.backButton)
261-
await backButton.click()
262-
await expect(page).toHaveURL('/admin/merchandize/boost/grid')
221+
await page.getByTestId(testIds.form.backButton).click()
222+
await expect(page).toHaveURL(urls.grid)
223+
224+
await grid.expectRowsToBe(
225+
filter,
226+
{[testIds.filter.name]: newName},
227+
[
228+
{
229+
columnName: texts.gridHeaders.name,
230+
value: newName,
231+
},
232+
{
233+
columnName: texts.gridHeaders.localizedCatalogs,
234+
value: texts.editValues.editedLocalizedCatalogDisplay
235+
},
236+
]
237+
)
263238
})
264239

265240
await test.step('Delete the Boost', async () => {
266-
267-
await filter.addFilter(testIds.filter.name, newName)
268-
await grid.pagination.expectToHaveCount(1)
269-
await grid.expectToFindLineWhere([
270-
{
271-
columnName: texts.gridHeaders.name,
272-
value: newName,
273-
},
274-
{
275-
columnName: texts.gridHeaders.localizedCatalogs,
276-
value: texts.boostToEditValues.editedLocalizedCatalogDisplay
277-
},
278-
])
279-
280241
await editLink.click()
281242

282-
await deleteButton.click()
283-
await page.getByTestId(testIds.form.deleteBoostPopin.dialogConfirmButton).click()
284-
await expect(page).toHaveURL('/admin/merchandize/boost/grid')
285-
await filter.addFilter(testIds.filter.name, newName)
286-
await grid.pagination.expectToHaveCount(0)
243+
await deleteEntity(
244+
page,
245+
testIds.form.deleteButton,
246+
testIds.form.deletePopin.dialogConfirmButton,
247+
urls.grid
248+
)
249+
await grid.expectRowsToBe(filter, {[testIds.filter.name]: newName}, [], 0)
287250
})
288251
})

0 commit comments

Comments
 (0)