Chromium Code Reviews| Index: chrome/browser/chromeos/drive/drive_resource_metadata_unittest.cc |
| =================================================================== |
| --- chrome/browser/chromeos/drive/drive_resource_metadata_unittest.cc (revision 167238) |
| +++ chrome/browser/chromeos/drive/drive_resource_metadata_unittest.cc (working copy) |
| @@ -15,7 +15,6 @@ |
| #include "base/message_loop.h" |
| #include "chrome/browser/chromeos/drive/drive.pb.h" |
| #include "chrome/browser/chromeos/drive/drive_cache.h" |
| -#include "chrome/browser/chromeos/drive/drive_files.h" |
| #include "chrome/browser/chromeos/drive/drive_test_util.h" |
| #include "chrome/test/base/testing_profile.h" |
| #include "content/public/test/test_browser_thread.h" |
| @@ -29,11 +28,16 @@ |
| const char kResumableCreateMediaUrl[] = "http://resumable-create-media/"; |
| // Callback for DriveResourceMetadata::InitFromDB. |
| -void InitFromDBCallback(DriveFileError expected_error, |
| - DriveFileError actual_error) { |
| - EXPECT_EQ(expected_error, actual_error); |
| +void CopyResultsFromInitFromDBCallback(DriveFileError* expected_error, |
| + DriveFileError actual_error) { |
| + *expected_error = actual_error; |
| } |
| +void OnGetChildDirectories(std::set<FilePath>* out_changed_directories, |
| + const std::set<FilePath>& in_changed_directories) { |
| + *out_changed_directories = in_changed_directories; |
| +} |
| + |
| } // namespace |
| class DriveResourceMetadataTest : public testing::Test { |
| @@ -41,6 +45,16 @@ |
| DriveResourceMetadataTest(); |
| protected: |
| + // Creates a DriveEntryProto. |
| + DriveEntryProto CreateDriveEntryProto(int sequence_id, |
| + bool is_directory, |
| + const std::string& parent_resource_id); |
| + |
| + // Add a DriveEntryProto to the metadata tree. |
|
satorux1
2012/11/19 01:24:24
Adds
achuithb
2012/11/19 21:49:33
Done.
|
| + void AddDriveEntryProto(int sequence_id, |
| + bool is_directory, |
| + const std::string& parent_resource_id); |
| + |
| DriveResourceMetadata resource_metadata_; |
| private: |
| @@ -57,14 +71,6 @@ |
| // drive/dir1/dir3/file10 |
| void Init(); |
| - // Add a directory to |parent| and return that directory. The name and |
| - // resource_id are determined by the incrementing counter |sequence_id|. |
| - DriveDirectory* AddDirectory(DriveDirectory* parent, int sequence_id); |
| - |
| - // Add a file to |parent| and return that file. The name and |
| - // resource_id are determined by the incrementing counter |sequence_id|. |
| - DriveFile* AddFile(DriveDirectory* parent, int sequence_id); |
| - |
| MessageLoopForUI message_loop_; |
| content::TestBrowserThread ui_thread_; |
| }; |
| @@ -78,46 +84,62 @@ |
| resource_metadata_.InitializeRootEntry(kWAPIRootDirectoryResourceId); |
| int sequence_id = 1; |
| - DriveDirectory* dir1 = AddDirectory(resource_metadata_.root(), sequence_id++); |
| - DriveDirectory* dir2 = AddDirectory(resource_metadata_.root(), sequence_id++); |
| - DriveDirectory* dir3 = AddDirectory(dir1, sequence_id++); |
| + AddDriveEntryProto(sequence_id++, true, kWAPIRootDirectoryResourceId); |
| + AddDriveEntryProto(sequence_id++, true, kWAPIRootDirectoryResourceId); |
| + AddDriveEntryProto(sequence_id++, true, "resource_id:dir1"); |
| - AddFile(dir1, sequence_id++); |
| - AddFile(dir1, sequence_id++); |
| + AddDriveEntryProto(sequence_id++, false, "resource_id:dir1"); |
| + AddDriveEntryProto(sequence_id++, false, "resource_id:dir1"); |
| - AddFile(dir2, sequence_id++); |
| - AddFile(dir2, sequence_id++); |
| - AddFile(dir2, sequence_id++); |
| + AddDriveEntryProto(sequence_id++, false, "resource_id:dir2"); |
| + AddDriveEntryProto(sequence_id++, false, "resource_id:dir2"); |
| + AddDriveEntryProto(sequence_id++, false, "resource_id:dir2"); |
| - AddFile(dir3, sequence_id++); |
| - AddFile(dir3, sequence_id++); |
| + AddDriveEntryProto(sequence_id++, false, "resource_id:dir3"); |
| + AddDriveEntryProto(sequence_id++, false, "resource_id:dir3"); |
| } |
| -DriveDirectory* DriveResourceMetadataTest::AddDirectory(DriveDirectory* parent, |
| - int sequence_id) { |
| - scoped_ptr<DriveDirectory> dir = resource_metadata_.CreateDriveDirectory(); |
| - const std::string dir_name = "dir" + base::IntToString(sequence_id); |
| - const std::string resource_id = std::string("dir_resource_id:") + dir_name; |
| - dir->set_title(dir_name); |
| - dir->set_resource_id(resource_id); |
| +DriveEntryProto DriveResourceMetadataTest::CreateDriveEntryProto( |
| + int sequence_id, |
| + bool is_directory, |
| + const std::string& parent_resource_id) { |
| + DriveEntryProto entry_proto; |
| + const std::string sequence_id_str = base::IntToString(sequence_id); |
| + const std::string title = (is_directory ? "dir" : "file") + |
| + sequence_id_str; |
| + const std::string resource_id = "resource_id:" + title; |
| + entry_proto.set_title(title); |
| + entry_proto.set_resource_id(resource_id); |
| + entry_proto.set_parent_resource_id(parent_resource_id); |
| - parent->AddEntry(dir.get()); |
| + PlatformFileInfoProto* file_info = entry_proto.mutable_file_info(); |
| + file_info->set_is_directory(is_directory); |
| - return dir.release(); |
| + if (!is_directory) { |
| + DriveFileSpecificInfo* file_specific_info = |
| + entry_proto.mutable_file_specific_info(); |
| + file_info->set_size(sequence_id * 1024); |
| + file_specific_info->set_file_md5(std::string("md5:") + title); |
| + } |
| + return entry_proto; |
| } |
| -DriveFile* DriveResourceMetadataTest::AddFile(DriveDirectory* parent, |
| - int sequence_id) { |
| - scoped_ptr<DriveFile> file = resource_metadata_.CreateDriveFile(); |
| - const std::string title = "file" + base::IntToString(sequence_id); |
| - const std::string resource_id = std::string("file_resource_id:") + title; |
| - file->set_title(title); |
| - file->set_resource_id(resource_id); |
| - file->set_file_md5(std::string("file_md5:") + title); |
| +void DriveResourceMetadataTest::AddDriveEntryProto( |
| + int sequence_id, |
| + bool is_directory, |
| + const std::string& parent_resource_id) { |
| + DriveEntryProto entry_proto = CreateDriveEntryProto(sequence_id, |
| + is_directory, |
| + parent_resource_id); |
| + DriveFileError error = DRIVE_FILE_ERROR_FAILED; |
| + FilePath drive_file_path; |
| - parent->AddEntry(file.get()); |
| - |
| - return file.release(); |
| + resource_metadata_.AddEntryToParent( |
| + entry_proto, |
| + base::Bind(&test_util::CopyResultsFromFileMoveCallback, |
| + &error, &drive_file_path)); |
| + google_apis::test_util::RunBlockingPoolTask(); |
| + ASSERT_EQ(DRIVE_FILE_OK, error); |
| } |
|
satorux1
2012/11/19 01:24:24
Calling ASSERT_() doesn't seem to be good, as test
achuithb
2012/11/19 21:49:33
Done.
|
| TEST_F(DriveResourceMetadataTest, VersionCheck) { |
| @@ -158,17 +180,31 @@ |
| TEST_F(DriveResourceMetadataTest, GetEntryByResourceId_RootDirectory) { |
| DriveResourceMetadata resource_metadata; |
| + |
| + DriveFileError error = DRIVE_FILE_ERROR_FAILED; |
| + FilePath drive_file_path; |
| + scoped_ptr<DriveEntryProto> entry_proto; |
| + |
| // Look up the root directory by its resource ID. |
| - DriveEntry* entry = resource_metadata.GetEntryByResourceId( |
| - kWAPIRootDirectoryResourceId); |
| - ASSERT_FALSE(entry); |
| + resource_metadata.GetEntryInfoByResourceId( |
| + kWAPIRootDirectoryResourceId, |
| + base::Bind(&test_util::CopyResultsFromGetEntryInfoWithFilePathCallback, |
| + &error, &drive_file_path, &entry_proto)); |
| + google_apis::test_util::RunBlockingPoolTask(); |
| + ASSERT_EQ(DRIVE_FILE_ERROR_NOT_FOUND, error); |
| + |
| // Initialize root and look it up again. |
| resource_metadata.InitializeRootEntry(kWAPIRootDirectoryResourceId); |
| - entry = resource_metadata.GetEntryByResourceId( |
| - kWAPIRootDirectoryResourceId); |
| - ASSERT_TRUE(entry); |
| - EXPECT_EQ(kWAPIRootDirectoryResourceId, entry->resource_id()); |
| + resource_metadata.GetEntryInfoByResourceId( |
| + kWAPIRootDirectoryResourceId, |
| + base::Bind(&test_util::CopyResultsFromGetEntryInfoWithFilePathCallback, |
| + &error, &drive_file_path, &entry_proto)); |
| + google_apis::test_util::RunBlockingPoolTask(); |
| + EXPECT_EQ(DRIVE_FILE_OK, error); |
| + ASSERT_TRUE(entry_proto.get()); |
| + EXPECT_EQ(kWAPIRootDirectoryResourceId, entry_proto->resource_id()); |
| + EXPECT_EQ(FilePath::FromUTF8Unsafe("drive"), drive_file_path); |
| } |
| TEST_F(DriveResourceMetadataTest, GetEntryInfoByResourceId) { |
| @@ -177,7 +213,7 @@ |
| FilePath drive_file_path; |
| scoped_ptr<DriveEntryProto> entry_proto; |
| resource_metadata_.GetEntryInfoByResourceId( |
| - "file_resource_id:file4", |
| + "resource_id:file4", |
| base::Bind(&test_util::CopyResultsFromGetEntryInfoWithFilePathCallback, |
| &error, &drive_file_path, &entry_proto)); |
| google_apis::test_util::RunBlockingPoolTask(); |
| @@ -341,9 +377,13 @@ |
| AppendASCII("meta").AppendASCII("resource_metadata.db")); |
| // InitFromDB should fail with DRIVE_FILE_ERROR_NOT_FOUND since the db |
| // doesn't exist. |
| - resource_metadata_.InitFromDB(db_path, blocking_task_runner, |
| - base::Bind(&InitFromDBCallback, DRIVE_FILE_ERROR_NOT_FOUND)); |
| + DriveFileError db_error; |
| + resource_metadata_.InitFromDB( |
| + db_path, |
| + blocking_task_runner, |
| + base::Bind(&CopyResultsFromInitFromDBCallback, &db_error)); |
| google_apis::test_util::RunBlockingPoolTask(); |
| + EXPECT_EQ(DRIVE_FILE_ERROR_NOT_FOUND, db_error); |
|
satorux1
2012/11/19 01:24:24
ASSERT_EQ()? I think we shouldn't go further if th
achuithb
2012/11/19 21:49:33
Done.
|
| // Create a file system and write it to disk. |
| // We cannot call SaveToDB without first having called InitFromDB because |
| @@ -353,16 +393,22 @@ |
| google_apis::test_util::RunBlockingPoolTask(); |
| // InitFromDB should fail with DRIVE_FILE_ERROR_IN_USE. |
| - resource_metadata_.InitFromDB(db_path, blocking_task_runner, |
| - base::Bind(&InitFromDBCallback, DRIVE_FILE_ERROR_IN_USE)); |
| + resource_metadata_.InitFromDB( |
| + db_path, |
| + blocking_task_runner, |
| + base::Bind(&CopyResultsFromInitFromDBCallback, &db_error)); |
| google_apis::test_util::RunBlockingPoolTask(); |
| + EXPECT_EQ(DRIVE_FILE_ERROR_IN_USE, db_error); |
|
satorux1
2012/11/19 01:24:24
ASSERT_EQ?
achuithb
2012/11/19 21:49:33
Done.
|
| // InitFromDB should succeed. |
| DriveResourceMetadata test_resource_metadata; |
| test_resource_metadata.InitializeRootEntry(kWAPIRootDirectoryResourceId); |
| - test_resource_metadata.InitFromDB(db_path, blocking_task_runner, |
| - base::Bind(&InitFromDBCallback, DRIVE_FILE_OK)); |
| + test_resource_metadata.InitFromDB( |
| + db_path, |
| + blocking_task_runner, |
| + base::Bind(&CopyResultsFromInitFromDBCallback, &db_error)); |
| google_apis::test_util::RunBlockingPoolTask(); |
| + EXPECT_EQ(DRIVE_FILE_OK, db_error); |
|
satorux1
2012/11/19 01:24:24
ASSERT_EQ?
achuithb
2012/11/19 21:49:33
Done.
|
| // Verify by checking for drive/dir2, which should have 3 children. |
| DriveFileError error = DRIVE_FILE_ERROR_FAILED; |
| @@ -381,7 +427,7 @@ |
| // Make sure file9 is found. |
| DriveFileError error = DRIVE_FILE_ERROR_FAILED; |
| FilePath drive_file_path; |
| - const std::string file9_resource_id = "file_resource_id:file9"; |
| + const std::string file9_resource_id = "resource_id:file9"; |
| scoped_ptr<DriveEntryProto> entry_proto; |
| resource_metadata_.GetEntryInfoByResourceId( |
| file9_resource_id, |
| @@ -412,7 +458,7 @@ |
| EXPECT_FALSE(entry_proto.get()); |
| // Look for dir3. |
| - const std::string dir3_resource_id = "dir_resource_id:dir3"; |
| + const std::string dir3_resource_id = "resource_id:dir3"; |
| resource_metadata_.GetEntryInfoByResourceId( |
| dir3_resource_id, |
| base::Bind(&test_util::CopyResultsFromGetEntryInfoWithFilePathCallback, |
| @@ -451,7 +497,7 @@ |
| // Try removing root. This should fail. |
| resource_metadata_.RemoveEntryFromParent( |
| - resource_metadata_.root()->resource_id(), |
| + kWAPIRootDirectoryResourceId, |
| base::Bind(&test_util::CopyResultsFromFileMoveCallback, |
| &error, &drive_file_path)); |
| google_apis::test_util::RunBlockingPoolTask(); |
| @@ -475,7 +521,7 @@ |
| // Look up the entry by its resource id and make sure it really moved. |
| resource_metadata_.GetEntryInfoByResourceId( |
| - "file_resource_id:file8", |
| + "resource_id:file8", |
| base::Bind(&test_util::CopyResultsFromGetEntryInfoWithFilePathCallback, |
| &error, &drive_file_path, &entry_proto)); |
| google_apis::test_util::RunBlockingPoolTask(); |
| @@ -534,7 +580,7 @@ |
| // Make sure file is still ok. |
| resource_metadata_.GetEntryInfoByResourceId( |
| - "file_resource_id:file8", |
| + "resource_id:file8", |
| base::Bind(&test_util::CopyResultsFromGetEntryInfoWithFilePathCallback, |
| &error, &drive_file_path, &entry_proto)); |
| google_apis::test_util::RunBlockingPoolTask(); |
| @@ -559,7 +605,7 @@ |
| // Lookup the file by resource id to make sure the file actually got renamed. |
| resource_metadata_.GetEntryInfoByResourceId( |
| - "file_resource_id:file8", |
| + "resource_id:file8", |
| base::Bind(&test_util::CopyResultsFromGetEntryInfoWithFilePathCallback, |
| &error, &drive_file_path, &entry_proto)); |
| google_apis::test_util::RunBlockingPoolTask(); |
| @@ -597,6 +643,214 @@ |
| EXPECT_EQ(FilePath(), drive_file_path); |
| } |
| +TEST_F(DriveResourceMetadataTest, RefreshEntryProto) { |
| + DriveFileError error = DRIVE_FILE_ERROR_FAILED; |
| + FilePath drive_file_path; |
| + scoped_ptr<DriveEntryProto> entry_proto; |
| + |
| + // Get file9. |
| + resource_metadata_.GetEntryInfoByPath( |
| + FilePath::FromUTF8Unsafe("drive/dir1/dir3/file9"), |
| + base::Bind(&test_util::CopyResultsFromGetEntryInfoCallback, |
| + &error, &entry_proto)); |
| + google_apis::test_util::RunBlockingPoolTask(); |
| + EXPECT_EQ(DRIVE_FILE_OK, error); |
| + ASSERT_TRUE(entry_proto.get()); |
| + EXPECT_EQ("file9", entry_proto->base_name()); |
| + ASSERT_TRUE(entry_proto->has_file_specific_info()); |
| + EXPECT_EQ("md5:file9", entry_proto->file_specific_info().file_md5()); |
| + |
| + // Rename it and change the file size. |
| + DriveEntryProto file_entry_proto(*entry_proto); |
| + const std::string updated_md5("md5:updated"); |
| + file_entry_proto.mutable_file_specific_info()->set_file_md5(updated_md5); |
| + file_entry_proto.set_title("file100"); |
| + entry_proto.reset(); |
| + resource_metadata_.RefreshEntryProto( |
| + file_entry_proto, |
| + base::Bind(&test_util::CopyResultsFromGetEntryInfoWithFilePathCallback, |
| + &error, &drive_file_path, &entry_proto)); |
| + google_apis::test_util::RunBlockingPoolTask(); |
| + EXPECT_EQ(DRIVE_FILE_OK, error); |
| + EXPECT_EQ(FilePath::FromUTF8Unsafe("drive/dir1/dir3/file100"), |
| + drive_file_path); |
| + ASSERT_TRUE(entry_proto.get()); |
| + EXPECT_EQ("file100", entry_proto->base_name()); |
| + ASSERT_TRUE(entry_proto->has_file_specific_info()); |
| + EXPECT_EQ(updated_md5, entry_proto->file_specific_info().file_md5()); |
| + |
| + // Make sure we get the same thing from GetEntryInfoByPath. |
| + entry_proto.reset(); |
| + resource_metadata_.GetEntryInfoByPath( |
| + FilePath::FromUTF8Unsafe("drive/dir1/dir3/file100"), |
| + base::Bind(&test_util::CopyResultsFromGetEntryInfoCallback, |
| + &error, &entry_proto)); |
| + google_apis::test_util::RunBlockingPoolTask(); |
| + EXPECT_EQ(DRIVE_FILE_OK, error); |
| + ASSERT_TRUE(entry_proto.get()); |
| + EXPECT_EQ("file100", entry_proto->base_name()); |
| + ASSERT_TRUE(entry_proto->has_file_specific_info()); |
| + EXPECT_EQ(updated_md5, entry_proto->file_specific_info().file_md5()); |
| + |
| + // Get dir2. |
| + entry_proto.reset(); |
| + resource_metadata_.GetEntryInfoByPath( |
| + FilePath::FromUTF8Unsafe("drive/dir2"), |
| + base::Bind(&test_util::CopyResultsFromGetEntryInfoCallback, |
| + &error, &entry_proto)); |
| + google_apis::test_util::RunBlockingPoolTask(); |
| + EXPECT_EQ(DRIVE_FILE_OK, error); |
| + ASSERT_TRUE(entry_proto.get()); |
| + EXPECT_EQ("dir2", entry_proto->base_name()); |
| + ASSERT_TRUE(entry_proto->file_info().is_directory()); |
| + |
| + // Change the name to dir100 and change the parent to drive/dir1/dir3. |
| + DriveEntryProto dir_entry_proto(*entry_proto); |
| + dir_entry_proto.set_title("dir100"); |
| + dir_entry_proto.set_parent_resource_id("resource_id:dir3"); |
| + entry_proto.reset(); |
| + resource_metadata_.RefreshEntryProto( |
| + dir_entry_proto, |
| + base::Bind(&test_util::CopyResultsFromGetEntryInfoWithFilePathCallback, |
| + &error, &drive_file_path, &entry_proto)); |
| + google_apis::test_util::RunBlockingPoolTask(); |
| + EXPECT_EQ(DRIVE_FILE_OK, error); |
| + EXPECT_EQ(FilePath::FromUTF8Unsafe("drive/dir1/dir3/dir100"), |
| + drive_file_path); |
| + ASSERT_TRUE(entry_proto.get()); |
| + EXPECT_EQ("dir100", entry_proto->base_name()); |
| + EXPECT_TRUE(entry_proto->file_info().is_directory()); |
| + EXPECT_EQ("resource_id:dir2", entry_proto->resource_id()); |
| + |
| + // Make sure the children have moved over. Test file6. |
| + entry_proto.reset(); |
| + resource_metadata_.GetEntryInfoByPath( |
| + FilePath::FromUTF8Unsafe("drive/dir1/dir3/dir100/file6"), |
| + base::Bind(&test_util::CopyResultsFromGetEntryInfoCallback, |
| + &error, &entry_proto)); |
| + google_apis::test_util::RunBlockingPoolTask(); |
| + EXPECT_EQ(DRIVE_FILE_OK, error); |
| + ASSERT_TRUE(entry_proto.get()); |
| + EXPECT_EQ("file6", entry_proto->base_name()); |
| + |
| + // Make sure dir2 no longer exists. |
| + resource_metadata_.GetEntryInfoByPath( |
| + FilePath::FromUTF8Unsafe("drive/dir2"), |
| + base::Bind(&test_util::CopyResultsFromGetEntryInfoCallback, |
| + &error, &entry_proto)); |
| + google_apis::test_util::RunBlockingPoolTask(); |
| + EXPECT_EQ(DRIVE_FILE_ERROR_NOT_FOUND, error); |
| + EXPECT_FALSE(entry_proto.get()); |
| +} |
| + |
| +TEST_F(DriveResourceMetadataTest, AddEntryToParent) { |
| + int sequence_id = 100; |
| + DriveEntryProto file_entry_proto = CreateDriveEntryProto( |
| + sequence_id++, false, "resource_id:dir3"); |
| + |
| + DriveFileError error = DRIVE_FILE_ERROR_FAILED; |
| + FilePath drive_file_path; |
| + |
| + // Add to dir3. |
| + resource_metadata_.AddEntryToParent( |
| + file_entry_proto, |
| + base::Bind(&test_util::CopyResultsFromFileMoveCallback, |
| + &error, &drive_file_path)); |
| + google_apis::test_util::RunBlockingPoolTask(); |
| + EXPECT_EQ(DRIVE_FILE_OK, error); |
| + EXPECT_EQ(FilePath::FromUTF8Unsafe("drive/dir1/dir3/file100"), |
| + drive_file_path); |
| + |
| + // Adds to root when parent resource id is not specified. |
| + DriveEntryProto file_entry_proto2 = CreateDriveEntryProto( |
| + sequence_id++, false, ""); |
| + |
| + resource_metadata_.AddEntryToParent( |
| + file_entry_proto2, |
| + base::Bind(&test_util::CopyResultsFromFileMoveCallback, |
| + &error, &drive_file_path)); |
| + google_apis::test_util::RunBlockingPoolTask(); |
| + EXPECT_EQ(DRIVE_FILE_OK, error); |
| + EXPECT_EQ(FilePath::FromUTF8Unsafe("drive/file101"), drive_file_path); |
| + |
| + // Add a directory. |
| + DriveEntryProto dir_entry_proto = CreateDriveEntryProto( |
| + sequence_id++, true, "resource_id:dir1"); |
| + |
| + resource_metadata_.AddEntryToParent( |
| + dir_entry_proto, |
| + base::Bind(&test_util::CopyResultsFromFileMoveCallback, |
| + &error, &drive_file_path)); |
| + google_apis::test_util::RunBlockingPoolTask(); |
| + EXPECT_EQ(DRIVE_FILE_OK, error); |
| + EXPECT_EQ(FilePath::FromUTF8Unsafe("drive/dir1/dir102"), drive_file_path); |
| + |
| + // Add to an invalid parent. |
| + DriveEntryProto file_entry_proto3 = CreateDriveEntryProto( |
| + sequence_id++, false, "resource_id:invalid"); |
| + |
| + resource_metadata_.AddEntryToParent( |
| + file_entry_proto3, |
| + base::Bind(&test_util::CopyResultsFromFileMoveCallback, |
| + &error, &drive_file_path)); |
| + google_apis::test_util::RunBlockingPoolTask(); |
| + EXPECT_EQ(DRIVE_FILE_ERROR_NOT_FOUND, error); |
| +} |
| + |
| +TEST_F(DriveResourceMetadataTest, GetChildDirectories) { |
| + std::set<FilePath> changed_directories; |
| + |
| + // file9: not a directory, so no children. |
| + resource_metadata_.GetChildDirectories("resource_id:file9", |
| + base::Bind(&OnGetChildDirectories, &changed_directories)); |
| + google_apis::test_util::RunBlockingPoolTask(); |
| + EXPECT_TRUE(changed_directories.empty()); |
| + |
| + // dir2: no child directories. |
| + resource_metadata_.GetChildDirectories("resource_id:dir2", |
| + base::Bind(&OnGetChildDirectories, &changed_directories)); |
| + google_apis::test_util::RunBlockingPoolTask(); |
| + EXPECT_TRUE(changed_directories.empty()); |
| + |
| + // dir1: dir3 is the only child |
| + resource_metadata_.GetChildDirectories("resource_id:dir1", |
| + base::Bind(&OnGetChildDirectories, &changed_directories)); |
| + google_apis::test_util::RunBlockingPoolTask(); |
| + EXPECT_EQ(1u, changed_directories.size()); |
| + EXPECT_EQ(1u, changed_directories.count( |
| + FilePath::FromUTF8Unsafe("drive/dir1/dir3"))); |
| + |
| + // Add a few more directories to make sure deeper nesting works. |
| + // dir2/dir100 |
| + // dir2/dir101 |
| + // dir2/dir101/dir102 |
| + // dir2/dir101/dir103 |
| + // dir2/dir101/dir104 |
| + // dir2/dir101/dir102/dir105 |
| + // dir2/dir101/dir102/dir105/dir106 |
| + // dir2/dir101/dir102/dir105/dir106/dir107 |
| + int sequence_id = 100; |
| + AddDriveEntryProto(sequence_id++, true, "resource_id:dir2"); |
| + AddDriveEntryProto(sequence_id++, true, "resource_id:dir2"); |
| + AddDriveEntryProto(sequence_id++, true, "resource_id:dir101"); |
| + AddDriveEntryProto(sequence_id++, true, "resource_id:dir101"); |
| + AddDriveEntryProto(sequence_id++, true, "resource_id:dir101"); |
| + AddDriveEntryProto(sequence_id++, true, "resource_id:dir102"); |
| + AddDriveEntryProto(sequence_id++, true, "resource_id:dir105"); |
| + AddDriveEntryProto(sequence_id++, true, "resource_id:dir106"); |
| + |
| + resource_metadata_.GetChildDirectories("resource_id:dir2", |
| + base::Bind(&OnGetChildDirectories, &changed_directories)); |
| + google_apis::test_util::RunBlockingPoolTask(); |
| + EXPECT_EQ(8u, changed_directories.size()); |
| + EXPECT_EQ(1u, changed_directories.count(FilePath::FromUTF8Unsafe( |
| + "drive/dir2/dir101"))); |
| + EXPECT_EQ(1u, changed_directories.count(FilePath::FromUTF8Unsafe( |
| + "drive/dir2/dir101/dir104"))); |
| + EXPECT_EQ(1u, changed_directories.count(FilePath::FromUTF8Unsafe( |
| + "drive/dir2/dir101/dir102/dir105/dir106/dir107"))); |
| +} |
| + |
| TEST_F(DriveResourceMetadataTest, TakeOverEntries) { |
| DriveFileError error = DRIVE_FILE_ERROR_FAILED; |
| FilePath drive_file_path; |
| @@ -604,8 +858,8 @@ |
| // Move files from dir1 to dir2. |
| resource_metadata_.TakeOverEntries( |
| - "dir_resource_id:dir1", |
| - "dir_resource_id:dir2", |
| + "resource_id:dir1", |
| + "resource_id:dir2", |
| base::Bind(&test_util::CopyResultsFromFileMoveCallback, |
| &error, &drive_file_path)); |
| google_apis::test_util::RunBlockingPoolTask(); |