test: cover tree live polling resync
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user