@@ -8,6 +8,7 @@ import {Grid} from '../../../../helper/grid'
88import { Filter , FilterType } from '../../../../helper/filter'
99import { AlertMessage , AlertMessageType } from '../../../../helper/alertMessage'
1010import { generateTestId , TestId } from "../../../../utils/testIds" ;
11+ import { deleteEntity , getCommonFormTestIds } from "../../../../utils/form" ;
1112
1213const 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
4137const 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 : / \/ a d m i n \/ m e r c h a n d i z e \/ b o o s t \/ e d i t \? i d = \d + $ /
82+ }
83+
8384test ( '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 ( / \/ a d m i n \/ m e r c h a n d i z e \/ b o o s t \/ e d i t \? i d = \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