| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- import assert from 'node:assert/strict'
- import { navigateBackFromOaHost } from './oa-navigate-back.js'
- const waitForSilentProbe = () =>
- new Promise((resolve) => setTimeout(resolve, 320))
- let redirects = []
- let stack = [
- { route: 'pages/market/webview/index' },
- { route: 'pages/oa/webview/index' }
- ]
- globalThis.getCurrentPages = () => stack
- globalThis.uni = {
- navigateBack() {
- stack.pop()
- },
- redirectTo({ url }) {
- redirects.push(url)
- },
- reLaunch() {
- throw new Error('redirectTo should not fail in this test')
- }
- }
- navigateBackFromOaHost({ fallbackUrl: '/pages/index/index' })
- await waitForSilentProbe()
- assert.deepEqual(
- redirects,
- [],
- '成功返回到上一层 web-view 后不得误触发 fallback'
- )
- redirects = []
- const stuckPage = { route: 'pages/market/webview/index' }
- stack = [{ route: 'pages/index/index' }, stuckPage]
- globalThis.uni.navigateBack = () => {}
- navigateBackFromOaHost({ fallbackUrl: '/pages/index/index' })
- await waitForSilentProbe()
- assert.deepEqual(
- redirects,
- ['/pages/index/index'],
- '同一发起页仍在相同栈顶时必须执行 fallback'
- )
- delete globalThis.getCurrentPages
- delete globalThis.uni
- console.log('oa-navigate-back: ok')
|