test: cover tree live polling resync

This commit is contained in:
lix-2026
2026-05-25 04:40:18 +08:00
parent 3d338fdde3
commit 9e3a5c413b
@@ -514,4 +514,38 @@ mod tests {
assert!(payload["data"]["dataset"]["kernelFileTreeProjection"].is_object());
assert!(payload["data"]["tree"].is_object());
}
#[test]
fn tree_live_polling_resync_payload_tracks_revision_changes() {
let root = test_root("tree-live-polling-resync");
std::fs::write(root.join("README.md"), "# Initial\n").expect("write initial");
let root_uri = format!("file://{}", root.display());
let workspace_id =
local_workspace_id_from_root_uri(&root_uri).expect("resolve local workspace id");
let initial_revision = local_folder_watch_revision(&root_uri)
.expect("initial revision")
.revision;
assert!(
tree_live_polling_resync_payload(&root_uri, &workspace_id, &initial_revision).is_none(),
"revision 未变化时不应发送 resync"
);
std::fs::create_dir_all(root.join("docs")).expect("create docs");
std::fs::write(root.join("docs/new.md"), "# New\n").expect("write new markdown");
let (next_revision, payload) =
tree_live_polling_resync_payload(&root_uri, &workspace_id, &initial_revision)
.expect("revision change should build resync payload");
assert_ne!(next_revision, initial_revision);
assert_eq!(payload["kind"], "resync");
assert_eq!(payload["sourceKind"], "local_folder");
assert_eq!(payload["rootUri"], root_uri);
assert_eq!(payload["workspaceId"], workspace_id);
assert_eq!(payload["revision"], next_revision);
assert!(payload["data"]["dataset"]["kernel_sidebar_projection"].is_object());
assert!(payload["data"]["dataset"]["kernel_file_tree_projection"].is_object());
let _ = std::fs::remove_dir_all(root);
}
}