@@ -82,14 +82,20 @@ test.describe('Query Templates', () => {
82
82
}
83
83
} ) ;
84
84
85
- test ( 'Unsaved changes modal appears when switching between templates' , async ( { page} ) => {
85
+ test ( 'Unsaved changes modal appears when switching between templates if query was edited' , async ( {
86
+ page,
87
+ } ) => {
86
88
const objectSummary = new ObjectSummary ( page ) ;
87
89
const unsavedChangesModal = new UnsavedChangesModal ( page ) ;
90
+ const queryEditor = new QueryEditor ( page ) ;
88
91
89
92
// First action - Add index
90
93
await objectSummary . clickActionMenuItem ( dsVslotsTableName , RowTableAction . AddIndex ) ;
91
94
await page . waitForTimeout ( 500 ) ;
92
95
96
+ // First set some content
97
+ await queryEditor . setQuery ( 'SELECT 1;' ) ;
98
+
93
99
// Try to switch to Select query
94
100
await objectSummary . clickActionMenuItem ( dsVslotsTableName , RowTableAction . SelectQuery ) ;
95
101
await page . waitForTimeout ( 500 ) ;
@@ -107,8 +113,7 @@ test.describe('Query Templates', () => {
107
113
await objectSummary . clickActionMenuItem ( dsVslotsTableName , RowTableAction . AddIndex ) ;
108
114
await page . waitForTimeout ( 500 ) ;
109
115
110
- // Store initial editor content
111
- const initialContent = await queryEditor . editorTextArea . inputValue ( ) ;
116
+ await queryEditor . setQuery ( 'SELECT 1;' ) ;
112
117
113
118
// Try to switch to Select query
114
119
await objectSummary . clickActionMenuItem ( dsVslotsTableName , RowTableAction . SelectQuery ) ;
@@ -118,7 +123,7 @@ test.describe('Query Templates', () => {
118
123
await unsavedChangesModal . clickCancel ( ) ;
119
124
120
125
// Verify editor content remains unchanged
121
- await expect ( queryEditor . editorTextArea ) . toHaveValue ( initialContent ) ;
126
+ await expect ( queryEditor . editorTextArea ) . toHaveValue ( 'SELECT 1;' ) ;
122
127
} ) ;
123
128
124
129
test ( 'Dont save button in unsaved changes modal allows to change text' , async ( { page} ) => {
@@ -130,6 +135,7 @@ test.describe('Query Templates', () => {
130
135
await objectSummary . clickActionMenuItem ( dsVslotsTableName , RowTableAction . AddIndex ) ;
131
136
await page . waitForTimeout ( 500 ) ;
132
137
138
+ await queryEditor . setQuery ( 'SELECT 1;' ) ;
133
139
// Store initial editor content
134
140
const initialContent = await queryEditor . editorTextArea . inputValue ( ) ;
135
141
@@ -157,6 +163,8 @@ test.describe('Query Templates', () => {
157
163
await objectSummary . clickActionMenuItem ( dsVslotsTableName , RowTableAction . AddIndex ) ;
158
164
await page . waitForTimeout ( 500 ) ;
159
165
166
+ await queryEditor . setQuery ( 'SELECT 1;' ) ;
167
+
160
168
// Try to switch to Select query
161
169
await objectSummary . clickActionMenuItem ( dsVslotsTableName , RowTableAction . SelectQuery ) ;
162
170
await page . waitForTimeout ( 500 ) ;
@@ -214,4 +222,54 @@ test.describe('Query Templates', () => {
214
222
// Verify unsaved changes modal appears
215
223
await expect ( unsavedChangesModal . isVisible ( ) ) . resolves . toBe ( true ) ;
216
224
} ) ;
225
+ test ( 'Switching between templates does not trigger unsaved changes modal' , async ( { page} ) => {
226
+ const objectSummary = new ObjectSummary ( page ) ;
227
+ const tenantPage = new TenantPage ( page ) ;
228
+
229
+ // First select a template (Add Index)
230
+ await objectSummary . clickActionMenuItem ( dsVslotsTableName , RowTableAction . AddIndex ) ;
231
+ await page . waitForTimeout ( 500 ) ;
232
+
233
+ // Without editing the template, switch to another template (Select Query)
234
+ await objectSummary . clickActionMenuItem ( dsVslotsTableName , RowTableAction . SelectQuery ) ;
235
+ await page . waitForTimeout ( 500 ) ;
236
+
237
+ // Verify unsaved changes modal does not appear
238
+ const isModalHidden = await tenantPage . isUnsavedChangesModalHidden ( ) ;
239
+ expect ( isModalHidden ) . toBe ( true ) ;
240
+ } ) ;
241
+
242
+ test ( 'Selecting a template and then opening history query does not trigger unsaved changes modal' , async ( {
243
+ page,
244
+ } ) => {
245
+ const objectSummary = new ObjectSummary ( page ) ;
246
+ const queryEditor = new QueryEditor ( page ) ;
247
+ const tenantPage = new TenantPage ( page ) ;
248
+
249
+ // First, run a query to ensure we have history to select from
250
+ const testQuery = 'SELECT 1 AS test_column;' ;
251
+ await queryEditor . setQuery ( testQuery ) ;
252
+ await queryEditor . clickRunButton ( ) ;
253
+ await page . waitForTimeout ( 1000 ) ; // Wait for the query to complete
254
+
255
+ // Next, select a template
256
+ await objectSummary . clickActionMenuItem ( dsVslotsTableName , RowTableAction . AddIndex ) ;
257
+ await page . waitForTimeout ( 500 ) ;
258
+
259
+ // Navigate to history tab
260
+ await queryEditor . queryTabs . selectTab ( QueryTabs . History ) ;
261
+ await queryEditor . historyQueries . isVisible ( ) ;
262
+
263
+ // Select the query from history
264
+ await queryEditor . historyQueries . selectQuery ( testQuery ) ;
265
+ await page . waitForTimeout ( 500 ) ;
266
+
267
+ // Verify no unsaved changes modal appeared
268
+ const isModalHidden = await tenantPage . isUnsavedChangesModalHidden ( ) ;
269
+ expect ( isModalHidden ) . toBe ( true ) ;
270
+
271
+ // Verify the query was loaded into the editor
272
+ const editorValue = await queryEditor . editorTextArea . inputValue ( ) ;
273
+ expect ( editorValue . trim ( ) ) . toBe ( testQuery . trim ( ) ) ;
274
+ } ) ;
217
275
} ) ;
0 commit comments