in components/places/src/bookmark_sync/engine.rs [4023:4254]
fn test_deduping_remote_newer() -> anyhow::Result<()> {
let api = new_mem_api();
let writer = api.open_connection(ConnectionType::ReadWrite)?;
let local_modified = Timestamp::from(Timestamp::now().as_millis() - 5000);
let remote_modified = local_modified.as_millis() as f64 / 1000f64;
// Start with merged items.
apply_incoming(
&api,
ServerTimestamp::from_float_seconds(remote_modified),
json!([{
"id": "menu",
"type": "folder",
"parentid": "places",
"parentName": "",
"title": "menu",
"children": ["folderAAAAAA"],
"modified": remote_modified,
}, {
// Shouldn't dedupe to `folderA11111` because it's been applied.
"id": "folderAAAAAA",
"type": "folder",
"parentid": "menu",
"parentName": "menu",
"title": "A",
"children": ["bookmarkGGGG"],
"modified": remote_modified,
}, {
// Shouldn't dedupe to `bookmarkG111`.
"id": "bookmarkGGGG",
"type": "bookmark",
"parentid": "folderAAAAAA",
"parentName": "A",
"title": "G",
"bmkUri": "http://example.com/g",
"modified": remote_modified,
}]),
);
// Add older local dupes.
insert_local_json_tree(
&writer,
json!({
"guid": "folderAAAAAA",
"children": [{
// Not a candidate for `bookmarkH111` because we didn't dupe `folderAAAAAA`.
"guid": "bookmarkHHHH",
"title": "H",
"url": "http://example.com/h",
"date_added": local_modified,
"last_modified": local_modified,
}]
}),
);
insert_local_json_tree(
&writer,
json!({
"guid": &BookmarkRootGuid::Menu.as_guid(),
"children": [{
// Should dupe to `folderB11111`.
"guid": "folderBBBBBB",
"type": BookmarkType::Folder as u8,
"title": "B",
"date_added": local_modified,
"last_modified": local_modified,
"children": [{
// Should dupe to `bookmarkC222`.
"guid": "bookmarkC111",
"title": "C",
"url": "http://example.com/c",
"date_added": local_modified,
"last_modified": local_modified,
}, {
// Should dupe to `separatorF11` because the positions are the same.
"guid": "separatorFFF",
"type": BookmarkType::Separator as u8,
"date_added": local_modified,
"last_modified": local_modified,
}],
}, {
// Shouldn't dupe to `separatorE11`, because the positions are different.
"guid": "separatorEEE",
"type": BookmarkType::Separator as u8,
"date_added": local_modified,
"last_modified": local_modified,
}, {
// Shouldn't dupe to `bookmarkC222` because the parents are different.
"guid": "bookmarkCCCC",
"title": "C",
"url": "http://example.com/c",
"date_added": local_modified,
"last_modified": local_modified,
}, {
// Should dupe to `queryD111111`.
"guid": "queryDDDDDDD",
"title": "Most Visited",
"url": "place:maxResults=10&sort=8",
"date_added": local_modified,
"last_modified": local_modified,
}],
}),
);
// Add newer remote items.
apply_incoming(
&api,
ServerTimestamp::from_float_seconds(remote_modified),
json!([{
"id": "menu",
"type": "folder",
"parentid": "places",
"parentName": "",
"title": "menu",
"children": ["folderAAAAAA", "folderB11111", "folderA11111", "separatorE11", "queryD111111"],
"dateAdded": local_modified.as_millis(),
"modified": remote_modified + 5f64,
}, {
"id": "folderB11111",
"type": "folder",
"parentid": "menu",
"parentName": "menu",
"title": "B",
"children": ["bookmarkC222", "separatorF11"],
"dateAdded": local_modified.as_millis(),
"modified": remote_modified + 5f64,
}, {
"id": "bookmarkC222",
"type": "bookmark",
"parentid": "folderB11111",
"parentName": "B",
"title": "C",
"bmkUri": "http://example.com/c",
"dateAdded": local_modified.as_millis(),
"modified": remote_modified + 5f64,
}, {
"id": "separatorF11",
"type": "separator",
"parentid": "folderB11111",
"parentName": "B",
"dateAdded": local_modified.as_millis(),
"modified": remote_modified + 5f64,
}, {
"id": "folderA11111",
"type": "folder",
"parentid": "menu",
"parentName": "menu",
"title": "A",
"children": ["bookmarkG111"],
"dateAdded": local_modified.as_millis(),
"modified": remote_modified + 5f64,
}, {
"id": "bookmarkG111",
"type": "bookmark",
"parentid": "folderA11111",
"parentName": "A",
"title": "G",
"bmkUri": "http://example.com/g",
"dateAdded": local_modified.as_millis(),
"modified": remote_modified + 5f64,
}, {
"id": "separatorE11",
"type": "separator",
"parentid": "folderB11111",
"parentName": "B",
"dateAdded": local_modified.as_millis(),
"modified": remote_modified + 5f64,
}, {
"id": "queryD111111",
"type": "query",
"parentid": "menu",
"parentName": "menu",
"title": "Most Visited",
"bmkUri": "place:maxResults=10&sort=8",
"dateAdded": local_modified.as_millis(),
"modified": remote_modified + 5f64,
}]),
);
assert_local_json_tree(
&writer,
&BookmarkRootGuid::Menu.as_guid(),
json!({
"guid": &BookmarkRootGuid::Menu.as_guid(),
"children": [{
"guid": "folderAAAAAA",
"children": [{
"guid": "bookmarkGGGG",
"title": "G",
"url": "http://example.com/g",
}, {
"guid": "bookmarkHHHH",
"title": "H",
"url": "http://example.com/h",
}]
}, {
"guid": "folderB11111",
"children": [{
"guid": "bookmarkC222",
"title": "C",
"url": "http://example.com/c",
}, {
"guid": "separatorF11",
"type": BookmarkType::Separator as u8,
}],
}, {
"guid": "folderA11111",
"children": [{
"guid": "bookmarkG111",
"title": "G",
"url": "http://example.com/g",
}]
}, {
"guid": "separatorE11",
"type": BookmarkType::Separator as u8,
}, {
"guid": "queryD111111",
"title": "Most Visited",
"url": "place:maxResults=10&sort=8",
}, {
"guid": "separatorEEE",
"type": BookmarkType::Separator as u8,
}, {
"guid": "bookmarkCCCC",
"title": "C",
"url": "http://example.com/c",
}],
}),
);
Ok(())
}