From: Eduardo San Martin Morote Date: Tue, 21 Jul 2020 11:49:11 +0000 (+0200) Subject: test(guards): test onBeforeRouteLeave are removed X-Git-Tag: v4.0.0-beta.3~10 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=dc476ec39c1d02f246dada61f3617ad4be0c7760;p=thirdparty%2Fvuejs%2Frouter.git test(guards): test onBeforeRouteLeave are removed --- diff --git a/__tests__/guards/onBeforeRouteLeave.spec.ts b/__tests__/guards/onBeforeRouteLeave.spec.ts index 6ec22579..17165eb9 100644 --- a/__tests__/guards/onBeforeRouteLeave.spec.ts +++ b/__tests__/guards/onBeforeRouteLeave.spec.ts @@ -52,4 +52,46 @@ describe('onBeforeRouteLeave', () => { await router.push('/') expect(spy).toHaveBeenCalledTimes(1) }) + + it('removes guards when leaving the route', async () => { + expect.assertions(3) + const spy = jest + .fn() + .mockImplementation(function (this: any, to, from, next) { + expect(typeof this.counter).toBe('number') + next() + }) + const WithLeave = defineComponent({ + template: `text`, + // we use data to check if the context is the right one because saving `this` in a variable logs a few warnings + data: () => ({ counter: 0 }), + setup() { + onBeforeRouteLeave(spy) + }, + }) + + const router = createRouter({ + history: createMemoryHistory(), + routes: [ + { path: '/', component }, + { path: '/leave', component: WithLeave as any }, + ], + }) + const app = createApp({ + template: ` + + `, + }) + app.use(router) + const rootEl = document.createElement('div') + document.body.appendChild(rootEl) + app.mount(rootEl) + + await router.isReady() + await router.push('/leave') + await router.push('/') + await router.push('/leave') + await router.push('/') + expect(spy).toHaveBeenCalledTimes(2) + }) })