chore(): sync with main

This commit is contained in:
Liam DeBeasi
2021-11-11 10:19:05 -05:00
20 changed files with 365 additions and 81 deletions

View File

@ -42,6 +42,7 @@ export {
mdTransitionAnimation,
setupConfig,
IonicSwiper,
IonicSlides,
getPlatforms,
isPlatform,
menuController,

View File

@ -15,4 +15,4 @@ export default defineComponent({
IonRouterOutlet
}
});
</script>
</script>

View File

@ -8,7 +8,8 @@ import {
IonTabs,
IonTabBar,
IonTabButton,
IonLabel
IonLabel,
useIonRouter
} from '@ionic/vue';
import { onBeforeRouteLeave } from 'vue-router';
import { waitForRouter } from './utils';
@ -548,4 +549,117 @@ describe('Routing', () => {
expect(wrapper.findComponent(Page2).exists()).toBe(false);
expect(wrapper.findComponent(Page3).exists()).toBe(false);
});
// Verifies fix for https://github.com/ionic-team/ionic-framework/issues/24109
it('canGoBack() should return the correct value', async () => {
const Page = {
components: { IonPage },
template: `<ion-page></ion-page>`
}
const Page2 = {
components: { IonPage },
template: `<ion-page></ion-page>`
}
const AppWithInject = {
components: { IonApp, IonRouterOutlet },
template: '<ion-app><ion-router-outlet /></ion-app>',
setup() {
const ionRouter = useIonRouter();
return { ionRouter }
}
}
const router = createRouter({
history: createWebHistory(process.env.BASE_URL),
routes: [
{ path: '/', component: Page }
{ path: '/page2', component: Page2 }
]
});
router.push('/');
await router.isReady();
const wrapper = mount(AppWithInject, {
global: {
plugins: [router, IonicVue]
}
});
const ionRouter = wrapper.vm.ionRouter;
expect(ionRouter.canGoBack()).toEqual(false);
router.push('/page2');
await waitForRouter();
expect(ionRouter.canGoBack()).toEqual(true);
router.back();
await waitForRouter();
expect(ionRouter.canGoBack()).toEqual(false);
});
// Verifies fix for https://github.com/ionic-team/ionic-framework/issues/24109
it('canGoBack() should return the correct value when using router.go', async () => {
const Page = {
components: { IonPage },
template: `<ion-page></ion-page>`
}
const Page2 = {
components: { IonPage },
template: `<ion-page></ion-page>`
}
const Page3 = {
components: { IonPage },
template: `<ion-page></ion-page>`
}
const AppWithInject = {
components: { IonApp, IonRouterOutlet },
template: '<ion-app><ion-router-outlet /></ion-app>',
setup() {
const ionRouter = useIonRouter();
return { ionRouter }
}
}
const router = createRouter({
history: createWebHistory(process.env.BASE_URL),
routes: [
{ path: '/', component: Page }
{ path: '/page2', component: Page2 },
{ path: '/page3', component: Page3 },
]
});
router.push('/');
await router.isReady();
const wrapper = mount(AppWithInject, {
global: {
plugins: [router, IonicVue]
}
});
const ionRouter = wrapper.vm.ionRouter;
expect(ionRouter.canGoBack()).toEqual(false);
router.push('/page2');
await waitForRouter();
expect(ionRouter.canGoBack()).toEqual(true);
router.push('/page3');
await waitForRouter();
expect(ionRouter.canGoBack()).toEqual(true);
router.go(-2);
await waitForRouter();
expect(ionRouter.canGoBack()).toEqual(false);
router.go(2);
await waitForRouter();
expect(ionRouter.canGoBack()).toEqual(true);
});
});