zijunchiang
50688e7ce4
test: 补目录导出交付逻辑与场景端到端冒烟(①/④ 的验收证据)
目标 ④(场景管理)此前只有"上传/配置收敛"的测试,**没有任何测试覆盖
「场景是否真的随 catalog/export 下发到客户端」**;①(非 VRM 不进目录)也只有
实现没有断言。补上两层:
1. 新增 test/catalog-export.spec.ts(12 项,纯 mock、不依赖数据库)
- ① 目录查询必须同时限定 status=published 与 format=vrm;
/catalog/version 的模型查询同样只算 VRM;
GLB/glTF/FBX 这类"未产出 VRM"的中间格式不得进入目录;
- ④ exportBundle().scenes 来自 ScenesService.published(),且
重力/风/地面/碰撞体等物理参数完整透传;无场景时是空数组而非 undefined;
- ④ 场景新增/改名/换 GLB/更新时间变化都必须改变 catalog/version 指纹
(否则客户端不会重新拉取);
- defaultModelId 透传与空值回退。
2. test/smoke.mjs 新增 [7] 场景管理端到端段(18 项断言),并在 [9] 清理:
- 上传 GLB 场景 → 一律 pending、GLB 直传不重编码、glbUrl 生成;
- 合法物理参数原样入库;越界参数(重力 -9999、摩擦 5)被夹紧到 -200/1;
非法枚举(colliders/相机模式)回退默认值;
- 缺少来源五元组 → 400;
- **待审场景不出现在客户端目录**;审核通过后才进入 scenes[],且带完整物理参数;
- 目录指纹随场景发布而变化;GET /api/scenes/:id 与 ?status= 过滤可用。
夹具可信性已单独验证:用**真实检查器**(inspectModelFile)解析 smoke 里同款
构造方式生成的场景 GLB,得到 meshes=1 / vertices=3 / triangles=1 / nodes=1,
证明该夹具是合法 GLB,而不是"写了个跑不通的脚本"。
顺带核查管理端构建产物:/scenes 路由、"场景管理"入口、"v0.7.2" 版本标签与
物理参数相关文案都在 bundle 中(Web 左下角版本号来自 package.json,见
scripts/check-version.mjs)。
验证:npm run verify 通过(契约六项一致、35 条路由一致、版本一致、
20 文件 / 269 项测试、nest build、启动冒烟)。
2026-09-17 01:56:20 +08:00
..
2026-09-14 19:00:55 +08:00
2026-09-15 21:25:25 +08:00
2026-09-15 20:37:53 +08:00
2026-09-15 13:55:54 +08:00
2026-09-17 01:49:52 +08:00
2026-09-16 02:56:50 +08:00
2026-09-17 01:56:20 +08:00
2026-09-15 22:26:58 +08:00
2026-09-15 21:25:25 +08:00
2026-09-16 18:55:25 +08:00
2026-09-15 08:47:37 +08:00
2026-09-16 03:30:12 +08:00
2026-09-17 00:10:07 +08:00
2026-09-16 03:30:12 +08:00
2026-09-16 04:02:35 +08:00
2026-09-15 20:37:53 +08:00
2026-09-17 00:27:08 +08:00
2026-09-17 00:21:09 +08:00
2026-09-14 19:00:55 +08:00
2026-09-17 00:32:05 +08:00
2026-09-14 20:08:20 +08:00
2026-09-17 01:56:20 +08:00
2026-09-14 19:00:55 +08:00