```
feat(registration): 优化经销商注册流程并增加地址定位功能 - 修改导航栏标题从“邀请注册”为“注册成为会员” - 修复重复提交问题并移除不必要的submitting状态 - 增加昵称和头像的必填验证提示 - 添加用户角色缺失时的默认角色写入机制 - 集成地图选点功能,支持经纬度获取和地址解析 - 实现微信地址导入功能,自动填充基本信息 - 增加定位权限检查和错误处理机制 - 添加.gitignore规则忽略备份文件夹src__bak - 移除已废弃的银行卡和客户管理页面代码 - 优化表单验证规则和错误提示信息 - 实现经销商注册成功后自动跳转到“我的”页面 - 添加用户信息缓存刷新机制确保角色信息同步 ```
This commit is contained in:
166
src/utils/test-invite.ts
Normal file
166
src/utils/test-invite.ts
Normal file
@@ -0,0 +1,166 @@
|
||||
/**
|
||||
* 邀请参数解析测试工具
|
||||
*/
|
||||
|
||||
import { parseInviteParams } from './invite'
|
||||
|
||||
/**
|
||||
* 测试不同格式的邀请参数解析
|
||||
*/
|
||||
export function testInviteParamsParsing() {
|
||||
console.log('=== 开始测试邀请参数解析 ===')
|
||||
|
||||
// 测试用例1: uid_格式
|
||||
const testCase1 = {
|
||||
scene: 'uid_33103',
|
||||
path: 'pages/index/index'
|
||||
}
|
||||
console.log('测试用例1 - uid格式:')
|
||||
console.log('输入:', testCase1)
|
||||
const result1 = parseInviteParams(testCase1)
|
||||
console.log('输出:', result1)
|
||||
console.log('预期: { inviter: "33103", source: "qrcode", t: "..." }')
|
||||
console.log('结果:', result1?.inviter === '33103' && result1?.source === 'qrcode' ? '✅ 通过' : '❌ 失败')
|
||||
console.log('')
|
||||
|
||||
// 测试用例2: 传统格式
|
||||
const testCase2 = {
|
||||
scene: 'inviter=12345&source=share&t=1640995200000',
|
||||
path: 'pages/index/index'
|
||||
}
|
||||
console.log('测试用例2 - 传统格式:')
|
||||
console.log('输入:', testCase2)
|
||||
const result2 = parseInviteParams(testCase2)
|
||||
console.log('输出:', result2)
|
||||
console.log('预期: { inviter: "12345", source: "share", t: "1640995200000" }')
|
||||
console.log('结果:', result2?.inviter === '12345' && result2?.source === 'share' ? '✅ 通过' : '❌ 失败')
|
||||
console.log('')
|
||||
|
||||
// 测试用例3: 数字类型的scene
|
||||
const testCase3 = {
|
||||
scene: 1047, // 数字类型
|
||||
path: 'pages/index/index'
|
||||
}
|
||||
console.log('测试用例3 - 数字类型scene:')
|
||||
console.log('输入:', testCase3)
|
||||
const result3 = parseInviteParams(testCase3)
|
||||
console.log('输出:', result3)
|
||||
console.log('预期: null (因为不是uid_格式)')
|
||||
console.log('结果:', result3 === null ? '✅ 通过' : '❌ 失败')
|
||||
console.log('')
|
||||
|
||||
// 测试用例4: 空参数
|
||||
const testCase4 = {}
|
||||
console.log('测试用例4 - 空参数:')
|
||||
console.log('输入:', testCase4)
|
||||
const result4 = parseInviteParams(testCase4)
|
||||
console.log('输出:', result4)
|
||||
console.log('预期: null')
|
||||
console.log('结果:', result4 === null ? '✅ 通过' : '❌ 失败')
|
||||
console.log('')
|
||||
|
||||
// 测试用例5: 无效的uid格式
|
||||
const testCase5 = {
|
||||
scene: 'uid_abc',
|
||||
path: 'pages/index/index'
|
||||
}
|
||||
console.log('测试用例5 - 无效uid格式:')
|
||||
console.log('输入:', testCase5)
|
||||
const result5 = parseInviteParams(testCase5)
|
||||
console.log('输出:', result5)
|
||||
console.log('预期: null (因为abc不是数字)')
|
||||
console.log('结果:', result5 === null ? '✅ 通过' : '❌ 失败')
|
||||
console.log('')
|
||||
|
||||
// 测试用例6: referrer参数
|
||||
const testCase6 = {
|
||||
referrer: '99999',
|
||||
path: 'pages/index/index'
|
||||
}
|
||||
console.log('测试用例6 - referrer参数:')
|
||||
console.log('输入:', testCase6)
|
||||
const result6 = parseInviteParams(testCase6)
|
||||
console.log('输出:', result6)
|
||||
console.log('预期: { inviter: "99999", source: "link" }')
|
||||
console.log('结果:', result6?.inviter === '99999' && result6?.source === 'link' ? '✅ 通过' : '❌ 失败')
|
||||
console.log('')
|
||||
|
||||
console.log('=== 邀请参数解析测试完成 ===')
|
||||
}
|
||||
|
||||
/**
|
||||
* 模拟小程序启动场景测试
|
||||
*/
|
||||
export function simulateMiniProgramLaunch() {
|
||||
console.log('=== 模拟小程序启动场景 ===')
|
||||
|
||||
// 模拟通过小程序码启动
|
||||
const qrcodeOptions = {
|
||||
path: 'pages/index/index',
|
||||
scene: 'uid_33103',
|
||||
shareTicket: undefined,
|
||||
referrerInfo: {}
|
||||
}
|
||||
|
||||
console.log('模拟小程序码启动:')
|
||||
console.log('启动参数:', qrcodeOptions)
|
||||
|
||||
const qrcodeResult = parseInviteParams(qrcodeOptions)
|
||||
console.log('解析结果:', qrcodeResult)
|
||||
|
||||
if (qrcodeResult && qrcodeResult.inviter === '33103') {
|
||||
console.log('✅ 小程序码邀请解析成功')
|
||||
return qrcodeResult
|
||||
} else {
|
||||
console.log('❌ 小程序码邀请解析失败')
|
||||
return null
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 验证邀请参数格式
|
||||
*/
|
||||
export function validateInviteParams(params: any) {
|
||||
console.log('=== 验证邀请参数格式 ===')
|
||||
console.log('参数:', params)
|
||||
|
||||
if (!params) {
|
||||
console.log('❌ 参数为空')
|
||||
return false
|
||||
}
|
||||
|
||||
if (!params.inviter) {
|
||||
console.log('❌ 缺少inviter字段')
|
||||
return false
|
||||
}
|
||||
|
||||
if (isNaN(parseInt(params.inviter))) {
|
||||
console.log('❌ inviter不是有效数字')
|
||||
return false
|
||||
}
|
||||
|
||||
if (!params.source) {
|
||||
console.log('❌ 缺少source字段')
|
||||
return false
|
||||
}
|
||||
|
||||
console.log('✅ 邀请参数格式验证通过')
|
||||
return true
|
||||
}
|
||||
|
||||
/**
|
||||
* 运行所有测试
|
||||
*/
|
||||
export function runAllTests() {
|
||||
console.log('🚀 开始运行所有邀请参数测试')
|
||||
|
||||
testInviteParamsParsing()
|
||||
|
||||
const simulationResult = simulateMiniProgramLaunch()
|
||||
|
||||
if (simulationResult) {
|
||||
validateInviteParams(simulationResult)
|
||||
}
|
||||
|
||||
console.log('🎉 所有测试完成')
|
||||
}
|
||||
Reference in New Issue
Block a user