推进本地优先迁移与资源闭环
- 补齐共享只读页面 AI 浏览器 smoke,并回填当前优先级 checklist 的 P4/P5/P6 证据。
- 为 OnlyOffice 资源增加 /office/{documentId}/{assetId} 对象壳,固定 resource identity 与侧边栏打开路径。
- 扩展 Convex 导出脚本,支持 dry-run、manifest、冲突报告、索引刷新与 rollback,并补充 smoke。
- 补充资源 AI 工具合同与 Convex 导出 Web 入口设计。
This commit is contained in:
@@ -1179,6 +1179,22 @@ mod tests {
|
||||
assert_eq!(emptied["result"]["deleted"], 2);
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn resource_rename_uses_resource_command_not_document_command() {
|
||||
let renamed = post_json(
|
||||
"/api/media/batch",
|
||||
json!({"action": "rename", "assetIds": ["asset_1"], "newName": "附件.docx"}),
|
||||
)
|
||||
.await;
|
||||
|
||||
assert_eq!(renamed["result"]["renamed"], 1);
|
||||
assert_eq!(
|
||||
renamed["result"]["canonicalCommand"],
|
||||
"tree.resource.rename"
|
||||
);
|
||||
assert_ne!(renamed["result"]["canonicalCommand"], "tree.node.rename");
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn mindmap_trash_routes_delete_restore_purge_and_empty() {
|
||||
let deleted = delete_json("/api/mindmap/doc_1/mind_1").await;
|
||||
@@ -1210,6 +1226,25 @@ mod tests {
|
||||
assert_eq!(emptied["result"]["deletedCount"], 3);
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn mindmap_delete_restore_keeps_markdown_reference_out_of_lifecycle_command() {
|
||||
let deleted = delete_json("/api/mindmap/doc_1/mind_1").await;
|
||||
assert_eq!(
|
||||
deleted["result"]["canonicalCommand"],
|
||||
"tree.resource.archive"
|
||||
);
|
||||
assert_eq!(deleted["result"]["resourceKind"], "mindmap");
|
||||
assert_eq!(deleted["result"]["documentId"], Value::Null);
|
||||
|
||||
let restored = patch_json("/api/mindmap/doc_1/mind_1", json!({"action": "restore"})).await;
|
||||
assert_eq!(
|
||||
restored["result"]["canonicalCommand"],
|
||||
"tree.resource.restore"
|
||||
);
|
||||
assert_eq!(restored["result"]["resourceKind"], "mindmap");
|
||||
assert_eq!(restored["result"]["documentId"], Value::Null);
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn table_trash_routes_delete_restore_purge_and_empty() {
|
||||
let created = post_json(
|
||||
|
||||
Reference in New Issue
Block a user