@@ -7,13 +7,16 @@ const snapshots = {
77 count : 2 ,
88 snapshots : [ deviceSnapshots . snapshots [ 0 ] , instanceSnapshots . snapshots [ 0 ] ]
99}
10+ let idx = 0
11+ const IDX_DEPLOY_SNAPSHOT = idx ++
12+ const IDX_EDIT_SNAPSHOT = idx ++
13+ const IDX_VIEW_SNAPSHOT = idx ++
14+ const IDX_COMPARE_SNAPSHOT = idx ++
15+ const IDX_DOWNLOAD_SNAPSHOT = idx ++
16+ const IDX_DOWNLOAD_PACKAGE = idx ++
17+ const IDX_DELETE_SNAPSHOT = idx ++
1018
11- const IDX_DEPLOY_SNAPSHOT = 0
12- const IDX_VIEW_SNAPSHOT = 1
13- const IDX_COMPARE_SNAPSHOT = 2
14- const IDX_DOWNLOAD_SNAPSHOT = 3
15- const IDX_DOWNLOAD_PACKAGE = 4
16- const IDX_DELETE_SNAPSHOT = 5
19+ const MENU_ITEM_COUNT = idx
1720
1821describe ( 'FlowForge - Devices - With Billing' , ( ) => {
1922 beforeEach ( ( ) => {
@@ -122,8 +125,9 @@ describe('FlowForge - Devices - With Billing', () => {
122125 // click kebab menu in row 1 - a device snapshot
123126 cy . get ( '[data-el="snapshots"] tbody' ) . find ( '.ff-kebab-menu' ) . eq ( 0 ) . click ( )
124127 // check the options are present
125- cy . get ( '[data-el="snapshots"] tbody .ff-kebab-menu .ff-kebab-options' ) . find ( '.ff-list-item' ) . should ( 'have.length' , 6 )
128+ cy . get ( '[data-el="snapshots"] tbody .ff-kebab-menu .ff-kebab-options' ) . find ( '.ff-list-item' ) . should ( 'have.length' , MENU_ITEM_COUNT )
126129 cy . get ( '[data-el="snapshots"] tbody .ff-kebab-menu .ff-kebab-options' ) . find ( '.ff-list-item' ) . eq ( IDX_DEPLOY_SNAPSHOT ) . contains ( 'Deploy Snapshot' )
130+ cy . get ( '[data-el="snapshots"] tbody .ff-kebab-menu .ff-kebab-options' ) . find ( '.ff-list-item' ) . eq ( IDX_EDIT_SNAPSHOT ) . contains ( 'Edit Snapshot' )
127131 cy . get ( '[data-el="snapshots"] tbody .ff-kebab-menu .ff-kebab-options' ) . find ( '.ff-list-item' ) . eq ( IDX_VIEW_SNAPSHOT ) . contains ( 'View Snapshot' )
128132 cy . get ( '[data-el="snapshots"] tbody .ff-kebab-menu .ff-kebab-options' ) . find ( '.ff-list-item' ) . eq ( IDX_COMPARE_SNAPSHOT ) . contains ( 'Compare Snapshot...' )
129133 cy . get ( '[data-el="snapshots"] tbody .ff-kebab-menu .ff-kebab-options' ) . find ( '.ff-list-item' ) . eq ( IDX_DOWNLOAD_SNAPSHOT ) . contains ( 'Download Snapshot' )
@@ -135,8 +139,9 @@ describe('FlowForge - Devices - With Billing', () => {
135139 // click kebab menu in row 2 - an instance snapshot
136140 cy . get ( '[data-el="snapshots"] tbody' ) . find ( '.ff-kebab-menu' ) . eq ( 1 ) . click ( )
137141 // click kebab menu in row 2 - an instance snapshot
138- cy . get ( '[data-el="snapshots"] tbody .ff-kebab-menu .ff-kebab-options' ) . find ( '.ff-list-item' ) . should ( 'have.length' , 6 )
142+ cy . get ( '[data-el="snapshots"] tbody .ff-kebab-menu .ff-kebab-options' ) . find ( '.ff-list-item' ) . should ( 'have.length' , MENU_ITEM_COUNT )
139143 cy . get ( '[data-el="snapshots"] tbody .ff-kebab-menu .ff-kebab-options' ) . find ( '.ff-list-item' ) . eq ( IDX_DEPLOY_SNAPSHOT ) . contains ( 'Deploy Snapshot' )
144+ cy . get ( '[data-el="snapshots"] tbody .ff-kebab-menu .ff-kebab-options' ) . find ( '.ff-list-item' ) . eq ( IDX_EDIT_SNAPSHOT ) . contains ( 'Edit Snapshot' )
140145 cy . get ( '[data-el="snapshots"] tbody .ff-kebab-menu .ff-kebab-options' ) . find ( '.ff-list-item' ) . eq ( IDX_VIEW_SNAPSHOT ) . contains ( 'View Snapshot' )
141146 cy . get ( '[data-el="snapshots"] tbody .ff-kebab-menu .ff-kebab-options' ) . find ( '.ff-list-item' ) . eq ( IDX_COMPARE_SNAPSHOT ) . contains ( 'Compare Snapshot...' )
142147 cy . get ( '[data-el="snapshots"] tbody .ff-kebab-menu .ff-kebab-options' ) . find ( '.ff-list-item' ) . eq ( IDX_DOWNLOAD_SNAPSHOT ) . contains ( 'Download Snapshot' )
@@ -166,6 +171,50 @@ describe('FlowForge - Devices - With Billing', () => {
166171 cy . get ( '[data-el="dialog-view-snapshot"] .ff-dialog-content svg' ) . should ( 'exist' )
167172 } )
168173
174+ it ( 'provides functionality to edit a snapshot' , ( ) => {
175+ cy . intercept ( 'GET' , '/api/*/applications/*/snapshots*' , snapshots ) . as ( 'getSnapshots' )
176+ cy . intercept ( 'PUT' , '/api/*/snapshots/*' , { } ) . as ( 'updateSnapshot' )
177+
178+ cy . contains ( 'span' , 'application-device-a' ) . click ( )
179+ cy . get ( '[data-nav="device-snapshots"]' ) . click ( )
180+
181+ cy . wait ( '@getSnapshots' )
182+
183+ // click kebab menu in row 2
184+ cy . get ( '[data-el="snapshots"] tbody' ) . find ( '.ff-kebab-menu' ) . eq ( 1 ) . click ( )
185+ // click the Edit Snapshot option
186+ cy . get ( '[data-el="snapshots"] tbody .ff-kebab-menu .ff-kebab-options' ) . find ( '.ff-list-item' ) . eq ( IDX_EDIT_SNAPSHOT ) . click ( )
187+
188+ // check the snapshot dialog is visible and contains the snapshot name
189+ cy . get ( '[data-el="dialog-edit-snapshot"]' ) . should ( 'be.visible' )
190+ cy . get ( '[data-el="dialog-edit-snapshot"] .ff-dialog-header' ) . contains ( 'Edit Snapshot: ' + snapshots . snapshots [ 1 ] . name )
191+ // check the edit form is present
192+ cy . get ( '[data-el="dialog-edit-snapshot"] [data-form="snapshot-edit"]' ) . should ( 'exist' )
193+ // check the buttons are present
194+ cy . get ( '[data-el="dialog-edit-snapshot"] [data-action="dialog-confirm"]' ) . should ( 'exist' ) . should ( 'be.enabled' )
195+ cy . get ( '[data-el="dialog-edit-snapshot"] [data-action="dialog-cancel"]' ) . should ( 'exist' ) . should ( 'be.enabled' )
196+
197+ // clear the snapshot name
198+ cy . get ( '[data-el="dialog-edit-snapshot"] [data-form="snapshot-name"] input' ) . clear ( )
199+ // the confirm button should be disabled
200+ cy . get ( '[data-el="dialog-edit-snapshot"] [data-action="dialog-confirm"]' ) . should ( 'be.disabled' )
201+
202+ // enter a new snapshot name and description
203+ cy . get ( '[data-el="dialog-edit-snapshot"] [data-form="snapshot-name"] input' ) . type ( 'Edited Snapshot Name!!!' )
204+ cy . get ( '[data-el="dialog-edit-snapshot"] [data-form="snapshot-description"] textarea' ) . clear ( )
205+ cy . get ( '[data-el="dialog-edit-snapshot"] [data-form="snapshot-description"] textarea' ) . type ( 'Edited Snapshot Description!!!' )
206+ // the confirm button should be enabled
207+ cy . get ( '[data-el="dialog-edit-snapshot"] [data-action="dialog-confirm"]' ) . should ( 'be.enabled' ) . click ( )
208+
209+ cy . wait ( '@updateSnapshot' ) . then ( ( interception ) => {
210+ expect ( interception . request . body . name ) . to . equal ( 'Edited Snapshot Name!!!' )
211+ expect ( interception . request . body . description ) . to . equal ( 'Edited Snapshot Description!!!' )
212+ } )
213+
214+ // check the snapshot name is updated in the table
215+ cy . get ( '[data-el="snapshots"] tbody' ) . find ( 'tr' ) . contains ( 'Edited Snapshot Name!!!' )
216+ } )
217+
169218 it ( 'provides functionality to compare snapshots' , ( ) => {
170219 cy . intercept ( 'GET' , '/api/*/applications/*/snapshots*' , deviceSnapshots ) . as ( 'getSnapshots' )
171220 cy . intercept ( 'GET' , '/api/*/snapshots/*/full' , deviceFullSnapshot ) . as ( 'fullSnapshot' )
0 commit comments