Index: chrome/browser/sync_file_system/drive_backend/metadata_database_unittest.cc |
diff --git a/chrome/browser/sync_file_system/drive_backend/metadata_database_unittest.cc b/chrome/browser/sync_file_system/drive_backend/metadata_database_unittest.cc |
index b843f079704116887753a5c26773538d43ab4fb2..c17c7c3981efbefbb2ec3119ccf934d679cc2f53 100644 |
--- a/chrome/browser/sync_file_system/drive_backend/metadata_database_unittest.cc |
+++ b/chrome/browser/sync_file_system/drive_backend/metadata_database_unittest.cc |
@@ -391,16 +391,8 @@ class MetadataDatabaseTest : public testing::Test { |
return folder; |
} |
- scoped_ptr<google_apis::ChangeResource> CreateChangeResourceFromMetadata( |
+ scoped_ptr<google_apis::FileResource> CreateFileResourceFromMetadata( |
const FileMetadata& file) { |
- scoped_ptr<google_apis::ChangeResource> change( |
- new google_apis::ChangeResource); |
- change->set_change_id(file.details().change_id()); |
- change->set_file_id(file.file_id()); |
- change->set_deleted(file.details().deleted()); |
- if (change->is_deleted()) |
- return change.Pass(); |
- |
scoped_ptr<google_apis::FileResource> file_resource( |
new google_apis::FileResource); |
ScopedVector<google_apis::ParentReference> parents; |
@@ -427,7 +419,20 @@ class MetadataDatabaseTest : public testing::Test { |
file_resource->set_modified_date(base::Time::FromInternalValue( |
file.details().modification_time())); |
- change->set_file(file_resource.Pass()); |
+ return file_resource.Pass(); |
+ } |
+ |
+ scoped_ptr<google_apis::ChangeResource> CreateChangeResourceFromMetadata( |
+ const FileMetadata& file) { |
+ scoped_ptr<google_apis::ChangeResource> change( |
+ new google_apis::ChangeResource); |
+ change->set_change_id(file.details().change_id()); |
+ change->set_file_id(file.file_id()); |
+ change->set_deleted(file.details().deleted()); |
+ if (change->is_deleted()) |
+ return change.Pass(); |
+ |
+ change->set_file(CreateFileResourceFromMetadata(file)); |
return change.Pass(); |
} |
@@ -605,6 +610,24 @@ class MetadataDatabaseTest : public testing::Test { |
return status; |
} |
+ SyncStatusCode PopulateInitialData( |
+ int64 largest_change_id, |
+ const google_apis::FileResource& sync_root_folder, |
+ const ScopedVector<google_apis::FileResource>& app_root_folders) { |
+ SyncStatusCode status = SYNC_STATUS_UNKNOWN; |
+ metadata_database_->PopulateInitialData( |
+ largest_change_id, |
+ sync_root_folder, |
+ app_root_folders, |
+ base::Bind(&SyncStatusResultCallback, &status)); |
+ message_loop_.RunUntilIdle(); |
+ return status; |
+ } |
+ |
+ void ResetTrackerID(FileTracker* tracker) { |
+ tracker->set_tracker_id(GetTrackerIDByFileID(tracker->file_id())); |
+ } |
+ |
private: |
base::ScopedTempDir database_dir_; |
base::MessageLoop message_loop_; |
@@ -802,8 +825,7 @@ TEST_F(MetadataDatabaseTest, UpdateByChangeListTest) { |
new_file.tracker.clear_synced_details(); |
new_file.tracker.set_active(false); |
new_file.tracker.set_dirty(true); |
- new_file.tracker.set_tracker_id( |
- GetTrackerIDByFileID(new_file.metadata.file_id())); |
+ ResetTrackerID(&new_file.tracker); |
EXPECT_NE(0, new_file.tracker.tracker_id()); |
new_file.should_be_absent = false; |
@@ -844,8 +866,7 @@ TEST_F(MetadataDatabaseTest, PopulateFolderTest_RegularFolder) { |
folder_to_populate.tracker.set_dirty(false); |
folder_to_populate.tracker.set_needs_folder_listing(false); |
- new_file.tracker.set_tracker_id( |
- GetTrackerIDByFileID(new_file.metadata.file_id())); |
+ ResetTrackerID(&new_file.tracker); |
new_file.tracker.set_dirty(true); |
new_file.tracker.set_active(false); |
new_file.tracker.clear_synced_details(); |
@@ -908,7 +929,7 @@ TEST_F(MetadataDatabaseTest, PopulateFolderTest_DisabledAppRoot) { |
disabled_app_children.push_back(file.metadata.file_id()); |
EXPECT_EQ(SYNC_STATUS_OK, PopulateFolder( |
disabled_app_root.metadata.file_id(), disabled_app_children)); |
- file.tracker.set_tracker_id(GetTrackerIDByFileID(file.metadata.file_id())); |
+ ResetTrackerID(&file.tracker); |
file.tracker.clear_synced_details(); |
file.tracker.set_dirty(true); |
file.tracker.set_active(false); |
@@ -972,5 +993,37 @@ TEST_F(MetadataDatabaseTest, UpdateTrackerTest) { |
VerifyReloadConsistency(); |
} |
+TEST_F(MetadataDatabaseTest, PopulateInitialDataTest) { |
+ TrackedFile sync_root(CreateTrackedSyncRoot()); |
+ TrackedFile app_root(CreateTrackedFolder(sync_root, "app_root")); |
+ app_root.tracker.set_active(false); |
+ |
+ const TrackedFile* tracked_files[] = { |
+ &sync_root, &app_root |
+ }; |
+ |
+ int64 largest_change_id = 42; |
+ scoped_ptr<google_apis::FileResource> sync_root_folder( |
+ CreateFileResourceFromMetadata(sync_root.metadata)); |
+ scoped_ptr<google_apis::FileResource> app_root_folder( |
+ CreateFileResourceFromMetadata(app_root.metadata)); |
+ |
+ ScopedVector<google_apis::FileResource> app_root_folders; |
+ app_root_folders.push_back(app_root_folder.release()); |
+ |
+ EXPECT_EQ(SYNC_STATUS_OK, InitializeMetadataDatabase()); |
+ EXPECT_EQ(SYNC_STATUS_OK, PopulateInitialData( |
+ largest_change_id, |
+ *sync_root_folder, |
+ app_root_folders)); |
+ |
+ ResetTrackerID(&sync_root.tracker); |
+ ResetTrackerID(&app_root.tracker); |
+ app_root.tracker.set_parent_tracker_id(sync_root.tracker.tracker_id()); |
+ |
+ VerifyTrackedFiles(tracked_files, arraysize(tracked_files)); |
+ VerifyReloadConsistency(); |
+} |
+ |
} // namespace drive_backend |
} // namespace sync_file_system |