Index: sync/syncable/directory_unittest.cc |
diff --git a/sync/syncable/directory_unittest.cc b/sync/syncable/directory_unittest.cc |
index 6b6b8a2699c27a9fe2343d09aaa2a0dddf1f5cd0..adc4004682995e944223e942721868165979bcfd 100644 |
--- a/sync/syncable/directory_unittest.cc |
+++ b/sync/syncable/directory_unittest.cc |
@@ -1599,21 +1599,64 @@ TEST_F(SyncableDirectoryTest, MutableEntry_PutAttachmentMetadata) { |
&trans, CREATE, PREFERENCES, trans.root_id(), "some entry"); |
entry.PutId(TestIdFactory::FromNumber(-1)); |
entry.PutIsUnsynced(true); |
+ |
+ Directory::Metahandles metahandles; |
ASSERT_FALSE(dir()->IsAttachmentLinked(attachment_id_proto)); |
+ dir()->GetMetahandlesByAttachmentId( |
+ &trans, attachment_id_proto, &metahandles); |
+ ASSERT_TRUE(metahandles.empty()); |
// Now add the attachment metadata and see that Directory believes it is |
// linked. |
entry.PutAttachmentMetadata(attachment_metadata); |
ASSERT_TRUE(dir()->IsAttachmentLinked(attachment_id_proto)); |
+ dir()->GetMetahandlesByAttachmentId( |
+ &trans, attachment_id_proto, &metahandles); |
+ ASSERT_FALSE(metahandles.empty()); |
+ ASSERT_EQ(metahandles[0], entry.GetMetahandle()); |
// Clear out the attachment metadata and see that it's no longer linked. |
sync_pb::AttachmentMetadata empty_attachment_metadata; |
entry.PutAttachmentMetadata(empty_attachment_metadata); |
ASSERT_FALSE(dir()->IsAttachmentLinked(attachment_id_proto)); |
+ dir()->GetMetahandlesByAttachmentId( |
+ &trans, attachment_id_proto, &metahandles); |
+ ASSERT_TRUE(metahandles.empty()); |
} |
ASSERT_FALSE(dir()->IsAttachmentLinked(attachment_id_proto)); |
} |
+// Verify that UpdateAttachmentId updates attachment_id and is_on_server flag. |
+TEST_F(SyncableDirectoryTest, MutableEntry_UpdateAttachmentId) { |
+ sync_pb::AttachmentMetadata attachment_metadata; |
+ sync_pb::AttachmentMetadataRecord* r1 = attachment_metadata.add_record(); |
+ sync_pb::AttachmentMetadataRecord* r2 = attachment_metadata.add_record(); |
+ *r1->mutable_id() = syncer::CreateAttachmentIdProto(); |
+ *r2->mutable_id() = syncer::CreateAttachmentIdProto(); |
+ sync_pb::AttachmentIdProto attachment_id_proto = r1->id(); |
+ |
+ WriteTransaction trans(FROM_HERE, UNITTEST, dir().get()); |
+ |
+ MutableEntry entry( |
+ &trans, CREATE, PREFERENCES, trans.root_id(), "some entry"); |
+ entry.PutId(TestIdFactory::FromNumber(-1)); |
+ entry.PutAttachmentMetadata(attachment_metadata); |
+ |
+ const sync_pb::AttachmentMetadata& entry_metadata = |
+ entry.GetAttachmentMetadata(); |
+ ASSERT_EQ(2, entry_metadata.record_size()); |
+ ASSERT_FALSE(entry_metadata.record(0).is_on_server()); |
+ ASSERT_FALSE(entry_metadata.record(1).is_on_server()); |
+ ASSERT_FALSE(entry.GetIsUnsynced()); |
+ |
+ // TODO(pavely): When we add server info to proto, add test for it here. |
+ entry.UpdateAttachmentIdWithServerInfo(attachment_id_proto); |
+ |
+ ASSERT_TRUE(entry_metadata.record(0).is_on_server()); |
+ ASSERT_FALSE(entry_metadata.record(1).is_on_server()); |
+ ASSERT_TRUE(entry.GetIsUnsynced()); |
+} |
+ |
// Verify that deleted entries with attachments will retain the attachments. |
TEST_F(SyncableDirectoryTest, Directory_DeleteDoesNotUnlinkAttachments) { |
sync_pb::AttachmentMetadata attachment_metadata; |