@@ -213,6 +213,54 @@ describe('Data Modeling tab', function () {
213
213
. waitForDisplayed ( { reverse : true } ) ;
214
214
} ) ;
215
215
216
+ it ( 'allows undo after opening a diagram' , async function ( ) {
217
+ const dataModelName = 'Test Data Model - Undo After Open' ;
218
+ await setupDiagram ( browser , {
219
+ diagramName : dataModelName ,
220
+ connectionName : DEFAULT_CONNECTION_NAME_1 ,
221
+ databaseName : 'test' ,
222
+ } ) ;
223
+
224
+ const dataModelEditor = browser . $ ( Selectors . DataModelEditor ) ;
225
+ await dataModelEditor . waitForDisplayed ( ) ;
226
+
227
+ const testCollection1 = browser . $ (
228
+ Selectors . DataModelPreviewCollection ( 'test.testCollection-one' )
229
+ ) ;
230
+ const startPosition = await testCollection1 . getLocation ( ) ;
231
+ const nodeSize = await testCollection1 . getSize ( ) ;
232
+
233
+ await browser
234
+ . action ( 'pointer' )
235
+ . move ( {
236
+ x : Math . round ( startPosition . x + nodeSize . width / 2 ) ,
237
+ y : Math . round ( startPosition . y + nodeSize . height / 2 ) ,
238
+ } )
239
+ . down ( { button : 0 } ) // Left mouse button
240
+ . move ( { x : 100 , y : 0 , duration : 1000 , origin : 'pointer' } )
241
+ . pause ( 1000 )
242
+ . move ( { x : 100 , y : 0 , duration : 1000 , origin : 'pointer' } )
243
+ . up ( { button : 0 } ) // Release the left mouse button
244
+ . perform ( ) ;
245
+ await browser . waitForAnimations ( dataModelEditor ) ;
246
+
247
+ // Open the saved diagram in new tab
248
+ await browser . openNewTab ( ) ;
249
+ await browser . clickVisible ( Selectors . DataModelsListItem ( dataModelName ) ) ;
250
+ await browser . $ ( Selectors . DataModelEditor ) . waitForDisplayed ( ) ;
251
+
252
+ // Ensure that undo button is enabled
253
+ await browser . waitForAriaDisabled ( Selectors . DataModelUndoButton , false ) ;
254
+
255
+ // Undo the change
256
+ await browser . clickVisible ( Selectors . DataModelUndoButton ) ;
257
+ await browser . waitForAnimations ( dataModelEditor ) ;
258
+
259
+ // Ensure that undo button is now disabled and redo is enabled
260
+ await browser . waitForAriaDisabled ( Selectors . DataModelUndoButton , true ) ;
261
+ await browser . waitForAriaDisabled ( Selectors . DataModelRedoButton , false ) ;
262
+ } ) ;
263
+
216
264
it ( 'exports the data model to JSON' , async function ( ) {
217
265
const dataModelName = 'Test Export Model - JSON' ;
218
266
exportFileName = `${ dataModelName } .json` ;
0 commit comments