Skip to content

Commit e585c66

Browse files
committed
test(vue): adding controller variants of overlay event tests
1 parent f005f8d commit e585c66

File tree

2 files changed

+99
-0
lines changed

2 files changed

+99
-0
lines changed

packages/vue/test/base/src/views/Overlays.vue

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -274,6 +274,19 @@ export default defineComponent({
274274
275275
const openModal = async () => {
276276
const modal = await modalController.create({ cssClass: "ion-modal-controller", component: ModalContent, componentProps: overlayProps });
277+
278+
// Attach lifecycle listeners for controller-created modal
279+
modal.addEventListener('willPresent', () => { willPresent.value += 1; });
280+
modal.addEventListener('didPresent', () => { didPresent.value += 1; });
281+
modal.addEventListener('willDismiss', () => { willDismiss.value += 1; });
282+
modal.addEventListener('didDismiss', () => { didDismiss.value += 1; });
283+
284+
// Long-form event names
285+
modal.addEventListener('ionModalWillPresent', () => { ionModalWillPresent.value += 1; });
286+
modal.addEventListener('ionModalDidPresent', () => { ionModalDidPresent.value += 1; });
287+
modal.addEventListener('ionModalWillDismiss', () => { ionModalWillDismiss.value += 1; });
288+
modal.addEventListener('ionModalDidDismiss', () => { ionModalDidDismiss.value += 1; });
289+
277290
await modal.present();
278291
}
279292

packages/vue/test/base/tests/e2e/specs/overlays.cy.js

Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -269,6 +269,92 @@ describe('Overlays', () => {
269269
});
270270
});
271271

272+
it('should fire lifecycle events on controller overlays', () => {
273+
cy.get('ion-radio#ion-modal').click();
274+
cy.get('ion-radio#controller').click();
275+
276+
cy.get('ion-button#present-overlay').click();
277+
cy.get('ion-modal').should('exist');
278+
279+
testLifecycle('overlays', {
280+
willPresent: 1,
281+
didPresent: 1,
282+
willDismiss: 0,
283+
didDismiss: 0
284+
});
285+
286+
cy.get('ion-modal #dismiss').click();
287+
288+
testLifecycle('overlays', {
289+
willPresent: 1,
290+
didPresent: 1,
291+
willDismiss: 1,
292+
didDismiss: 1
293+
});
294+
295+
cy.get('ion-button#present-overlay').click();
296+
cy.get('ion-modal').should('exist');
297+
298+
testLifecycle('overlays', {
299+
willPresent: 2,
300+
didPresent: 2,
301+
willDismiss: 1,
302+
didDismiss: 1
303+
});
304+
305+
cy.get('ion-modal #dismiss').click();
306+
307+
testLifecycle('overlays', {
308+
willPresent: 2,
309+
didPresent: 2,
310+
willDismiss: 2,
311+
didDismiss: 2
312+
});
313+
});
314+
315+
it('should fire long-form lifecycle events on controller overlays', () => {
316+
cy.get('ion-radio#ion-modal').click();
317+
cy.get('ion-radio#controller').click();
318+
319+
cy.get('ion-button#present-overlay').click();
320+
cy.get('ion-modal').should('exist');
321+
322+
testLongLifecycle('overlays', {
323+
willPresent: 1,
324+
didPresent: 1,
325+
willDismiss: 0,
326+
didDismiss: 0
327+
});
328+
329+
cy.get('ion-modal #dismiss').click();
330+
331+
testLongLifecycle('overlays', {
332+
willPresent: 1,
333+
didPresent: 1,
334+
willDismiss: 1,
335+
didDismiss: 1
336+
});
337+
338+
cy.get('ion-button#present-overlay').click();
339+
cy.get('ion-modal').should('exist');
340+
341+
testLongLifecycle('overlays', {
342+
willPresent: 2,
343+
didPresent: 2,
344+
willDismiss: 1,
345+
didDismiss: 1
346+
});
347+
348+
cy.get('ion-modal #dismiss').click();
349+
350+
testLongLifecycle('overlays', {
351+
willPresent: 2,
352+
didPresent: 2,
353+
willDismiss: 2,
354+
didDismiss: 2
355+
});
356+
});
357+
272358
it('should unmount modal via component', () => {
273359
cy.get('ion-radio#ion-modal').click();
274360
cy.get('ion-radio#component').click();

0 commit comments

Comments
 (0)