docs(tests): clarify entry migration and renderer contract coverage

This commit is contained in:
2026-11-12 17:41:32 +08:00
parent b768c2d6bf
commit ea3df9877d
4 changed files with 7 additions and 0 deletions
@@ -31,6 +31,7 @@ test('editable legacy views share a lease and exclude migration until every edit
const f=fixture(),one=await claimLegacyCanvasEditing({...f.options,canvasId:root}),two=await claimLegacyCanvasEditing({...f.options,canvasId:root});
const migration=createBrowserCanvasMigration(f.options);
await assert.rejects(()=>migration.resume(),/migration_busy/);await one.release();await assert.rejects(()=>migration.resume(),/migration_busy/);
// 所有 shared 租约释放后 resume 只取得独占检查并返回 idle;夹具里没有待迁移任务,不会发生迁移提交。
await two.release();assert.equal((await migration.resume()).status,'idle');assert.equal(f.held.size,0);
assert.ok(f.calls.every(call=>call.name===canvasMigrationStorageKey(scope)+':editing'&&call.options.ifAvailable===true));
assert.deepEqual(f.calls.slice(0,2).map(call=>call.options.mode),['shared','shared']);assert.ok(f.calls.slice(2).every(call=>call.options.mode==='exclusive'));
@@ -41,6 +42,7 @@ test('pending migration blocks affected old views and corrupt records cannot ena
f.storage=f.options.storage;f.storage.setItem(key,JSON.stringify(job));
await assert.rejects(()=>claimLegacyCanvasEditing({...f.options,canvasId:root}),/migration_response_unknown/);assert.equal(f.held.size,0);
const unrelated=await claimLegacyCanvasEditing({...f.options,canvasId:id(99)});await unrelated.release();
// 用未来版本记录覆盖测试存储,拒绝后原字符串必须保留,不能把“无法解释”当作“没有任务”。
const saved=JSON.stringify({version:2,data:'retain'});f.storage.setItem(key,saved);
await assert.rejects(()=>claimLegacyCanvasEditing({...f.options,canvasId:root}),/migration_interpreter_unavailable/);assert.equal(f.storage.getItem(key),saved);assert.equal(f.held.size,0);
});