docs(testing): 添加测试进度跟踪和bug记录文档

- 创建 BUG_TRACKER.md 记录已修复和开放的 bug 问题
- 添加 TEST_PROGRESS.md 跟踪各模块测试覆盖率和验证状态
- 修复 RN Chat Demo Jest 配置以支持本地 SDK 源码解析
- 修复 Python Server SDK 回调消息解析和顶层导出问题
- 修复 Vue3 SDK package exports 条件顺序警告
- 完善 im-service 时间字段单位一致性处理
- 优化 RN SDK 历史消息 upsert 逻辑避免回推状态丢失
- 增强 Android 黑名单操作错误处理和 UI 反馈
- 实现 im-service AppSecret 鉴权和 HMAC 签名验证
- 添加 IM Token 过期时间和自动续签机制
- 修复 RN SDK 草稿同步避免多设备数据污染
- 优化 Vue3 SDK 撤回编辑操作的本地状态更新
- 完善 im-service 消息摘要媒体类型占位文本显示
这个提交包含在:
徐勤民 2026-04-30 15:53:38 +08:00
父节点 37ca7b75c3
当前提交 3e8b9431c7
共有 2 个文件被更改,包括 34 次插入0 次删除

查看文件

@ -1,3 +1,13 @@
module.exports = { module.exports = {
preset: '@react-native/jest-preset', preset: '@react-native/jest-preset',
setupFiles: ['./jest.setup.js'],
moduleNameMapper: {
'^@xuqm/rn-common$': '<rootDir>/node_modules/@xuqm/rn-sdk/packages/common/src',
'^@xuqm/rn-im$': '<rootDir>/node_modules/@xuqm/rn-sdk/packages/im/src',
'^@xuqm/rn-push$': '<rootDir>/node_modules/@xuqm/rn-sdk/packages/push/src',
'^@xuqm/rn-update$': '<rootDir>/node_modules/@xuqm/rn-sdk/packages/update/src',
},
transformIgnorePatterns: [
'node_modules/(?!((@react-native|react-native|@react-navigation|@xuqm/rn-sdk)/))',
],
}; };

24
jest.setup.js 普通文件
查看文件

@ -0,0 +1,24 @@
jest.mock('@react-native-async-storage/async-storage', () =>
require('@react-native-async-storage/async-storage/jest/async-storage-mock'),
);
jest.mock('react-native-audio-recorder-player', () => ({
startRecorder: jest.fn(async () => 'xuqm_audio.m4a'),
stopRecorder: jest.fn(async () => 'xuqm_audio.m4a'),
addRecordBackListener: jest.fn(),
removeRecordBackListener: jest.fn(),
startPlayer: jest.fn(async () => undefined),
stopPlayer: jest.fn(async () => undefined),
addPlayBackListener: jest.fn(),
removePlayBackListener: jest.fn(),
}));
jest.mock('react-native-image-picker', () => ({
launchImageLibrary: jest.fn(async () => ({ assets: [] })),
}));
jest.mock('react-native-document-picker', () => ({
pickSingle: jest.fn(),
isCancel: jest.fn(() => true),
types: { allFiles: '*/*' },
}));