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: '', }) }) })