51 lines
1.2 KiB
JavaScript
51 lines
1.2 KiB
JavaScript
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')
|