corp-mp/src/lib/launch.test.ts

104 lines
2.4 KiB
TypeScript

import { describe, expect, it } from 'vitest'
import {
DEFAULT_LAUNCH_SCHEME,
parseLaunchQuery,
parseMiniProgramScheme,
resolveLaunchQuery,
} from './launch'
describe('parseMiniProgramScheme', () => {
it('reads the default weixin business scheme query', () => {
expect(parseMiniProgramScheme(DEFAULT_LAUNCH_SCHEME)).toEqual({
appId: 'wxf8a8961f30396c19',
path: 'pages/index/index',
scene: '/h/KZ9Q',
token: '',
host: 'nb.batiao8.com',
package: '10044',
phone: '',
})
})
})
describe('parseLaunchQuery', () => {
it('keeps token host and package from the H5 jump', () => {
expect(
parseLaunchQuery({
token: 'h5-token',
host: 'h5test.batiao8.com',
package: '10044',
scene: '%2Fh%2FKZ9Q',
})
).toEqual({
token: 'h5-token',
host: 'h5test.batiao8.com',
packageId: '10044',
scene: '/h/KZ9Q',
linkId: 'KZ9Q',
shareId: '',
prevId: '',
phone: '',
})
})
it('reads share and preview short links', () => {
expect(parseLaunchQuery({ scene: '/s/SHARE1' }).shareId).toBe('SHARE1')
expect(parseLaunchQuery({ scene: '/p/PREV9' }).prevId).toBe('PREV9')
})
it('ignores empty values', () => {
expect(parseLaunchQuery({})).toEqual({
token: '',
host: '',
packageId: '',
scene: '',
linkId: '',
shareId: '',
prevId: '',
phone: '',
})
expect(parseLaunchQuery({ phone: '13900001111' }).phone).toBe('13900001111')
})
})
describe('resolveLaunchQuery', () => {
it('fills missing fields from the default scheme', () => {
expect(resolveLaunchQuery({})).toEqual({
token: '',
host: 'nb.batiao8.com',
packageId: '10044',
scene: '/h/KZ9Q',
linkId: 'KZ9Q',
shareId: '',
prevId: '',
phone: '',
})
})
it('uses the launched phone when present', () => {
expect(resolveLaunchQuery({ phone: '13900001111' }).phone).toBe('13900001111')
})
it('keeps explicit jump params over defaults', () => {
expect(
resolveLaunchQuery({
token: 'h5-token',
host: 'h5test.batiao8.com',
package: '20001',
scene: '/s/SHARE1',
})
).toEqual({
token: 'h5-token',
host: 'h5test.batiao8.com',
packageId: '20001',
scene: '/s/SHARE1',
linkId: '',
shareId: 'SHARE1',
prevId: '',
phone: '',
})
})
})