| Index: chrome/browser/chromeos/drive/change_list_processor_unittest.cc
|
| diff --git a/chrome/browser/chromeos/drive/change_list_processor_unittest.cc b/chrome/browser/chromeos/drive/change_list_processor_unittest.cc
|
| index daaabc805a9717abe84dbe6e756cfe0ab3f6e0ef..00840388d0793e2b4d7810f6e2472a4790119fec 100644
|
| --- a/chrome/browser/chromeos/drive/change_list_processor_unittest.cc
|
| +++ b/chrome/browser/chromeos/drive/change_list_processor_unittest.cc
|
| @@ -23,7 +23,6 @@ namespace internal {
|
| namespace {
|
|
|
| const int64 kBaseResourceListChangestamp = 123;
|
| -const char kBaseResourceListFile[] = "gdata/root_feed.json";
|
| const char kRootId[] = "fake_root";
|
|
|
| enum FileOrDirectory {
|
| @@ -38,23 +37,58 @@ struct EntryExpectation {
|
| FileOrDirectory type;
|
| };
|
|
|
| -typedef std::map<std::string, ResourceEntry> ResourceEntryMap;
|
| -typedef std::map<std::string, std::string> ParentResourceIdMap;
|
| -void ConvertToMap(ScopedVector<ChangeList> change_lists,
|
| - ResourceEntryMap* entry_map,
|
| - ParentResourceIdMap* parent_resource_id_map) {
|
| - for (size_t i = 0; i < change_lists.size(); ++i) {
|
| - const std::vector<ResourceEntry>& entries = change_lists[i]->entries();
|
| - const std::vector<std::string>& parent_resource_ids =
|
| - change_lists[i]->parent_resource_ids();
|
| - EXPECT_EQ(entries.size(), parent_resource_ids.size());
|
| -
|
| - for (size_t i = 0; i < entries.size(); ++i) {
|
| - const std::string& resource_id = entries[i].resource_id();
|
| - (*parent_resource_id_map)[resource_id] = parent_resource_ids[i];
|
| - (*entry_map)[resource_id] = entries[i];
|
| - }
|
| - }
|
| +// Returns a basic change list which contains some files and directories.
|
| +ScopedVector<ChangeList> CreateBaseChangeList() {
|
| + ScopedVector<ChangeList> change_lists;
|
| + change_lists.push_back(new ChangeList);
|
| +
|
| + // Add directories to the change list.
|
| + ResourceEntry directory;
|
| + directory.mutable_file_info()->set_is_directory(true);
|
| +
|
| + directory.set_title("Directory 1");
|
| + directory.set_resource_id("folder:1_folder_resource_id");
|
| + change_lists[0]->mutable_entries()->push_back(directory);
|
| + change_lists[0]->mutable_parent_resource_ids()->push_back(kRootId);
|
| +
|
| + directory.set_title("Sub Directory Folder");
|
| + directory.set_resource_id("folder:sub_dir_folder_resource_id");
|
| + change_lists[0]->mutable_entries()->push_back(directory);
|
| + change_lists[0]->mutable_parent_resource_ids()->push_back(
|
| + "folder:1_folder_resource_id");
|
| +
|
| + directory.set_title("Sub Sub Directory Folder");
|
| + directory.set_resource_id("folder:sub_sub_directory_folder_id");
|
| + change_lists[0]->mutable_entries()->push_back(directory);
|
| + change_lists[0]->mutable_parent_resource_ids()->push_back(
|
| + "folder:sub_dir_folder_resource_id");
|
| +
|
| + directory.set_title("Directory 2 excludeDir-test");
|
| + directory.set_resource_id("folder:sub_dir_folder_2_self_link");
|
| + change_lists[0]->mutable_entries()->push_back(directory);
|
| + change_lists[0]->mutable_parent_resource_ids()->push_back(kRootId);
|
| +
|
| + // Add files to the change list.
|
| + ResourceEntry file;
|
| +
|
| + file.set_title("File 1.txt");
|
| + file.set_resource_id("file:2_file_resource_id");
|
| + change_lists[0]->mutable_entries()->push_back(file);
|
| + change_lists[0]->mutable_parent_resource_ids()->push_back(kRootId);
|
| +
|
| + file.set_title("SubDirectory File 1.txt");
|
| + file.set_resource_id("file:subdirectory_file_1_id");
|
| + change_lists[0]->mutable_entries()->push_back(file);
|
| + change_lists[0]->mutable_parent_resource_ids()->push_back(
|
| + "folder:1_folder_resource_id");
|
| +
|
| + file.set_title("Orphan File 1.txt");
|
| + file.set_resource_id("file:1_orphanfile_resource_id");
|
| + change_lists[0]->mutable_entries()->push_back(file);
|
| + change_lists[0]->mutable_parent_resource_ids()->push_back("");
|
| +
|
| + change_lists[0]->set_largest_changestamp(kBaseResourceListChangestamp);
|
| + return change_lists.Pass();
|
| }
|
|
|
| class ChangeListProcessorTest : public testing::Test {
|
| @@ -71,17 +105,6 @@ class ChangeListProcessorTest : public testing::Test {
|
| ASSERT_EQ(FILE_ERROR_OK, metadata_->Initialize());
|
| }
|
|
|
| - // Parses a json file at |test_data_path| relative to Chrome test directory
|
| - // into a ScopedVector<drive::internal::ChangeList>.
|
| - ScopedVector<ChangeList> ParseChangeList(const std::string& test_data_path) {
|
| - ScopedVector<ChangeList> changes;
|
| - changes.push_back(new ChangeList(
|
| - *google_apis::ResourceList::ExtractAndParse(
|
| - *google_apis::test_util::LoadJSONFile(
|
| - test_data_path))));
|
| - return changes.Pass();
|
| - }
|
| -
|
| // Applies the |changes| to |metadata_| as a full resource list of changestamp
|
| // |kBaseResourceListChangestamp|.
|
| FileError ApplyFullResourceList(ScopedVector<ChangeList> changes) {
|
| @@ -134,33 +157,20 @@ class ChangeListProcessorTest : public testing::Test {
|
| } // namespace
|
|
|
| TEST_F(ChangeListProcessorTest, ApplyFullResourceList) {
|
| - EXPECT_EQ(FILE_ERROR_OK,
|
| - ApplyFullResourceList(ParseChangeList(kBaseResourceListFile)));
|
| + EXPECT_EQ(FILE_ERROR_OK, ApplyFullResourceList(CreateBaseChangeList()));
|
|
|
| const EntryExpectation kExpected[] = {
|
| // Root files
|
| {"drive/root", kRootId, "", DIRECTORY},
|
| {"drive/root/File 1.txt",
|
| "file:2_file_resource_id", kRootId, FILE},
|
| - {"drive/root/Slash _ in file 1.txt",
|
| - "file:slash_file_resource_id", kRootId, FILE},
|
| - {"drive/root/Document 1 excludeDir-test.gdoc",
|
| - "document:5_document_resource_id", kRootId, FILE},
|
| // Subdirectory files
|
| {"drive/root/Directory 1",
|
| "folder:1_folder_resource_id", kRootId, DIRECTORY},
|
| {"drive/root/Directory 1/SubDirectory File 1.txt",
|
| "file:subdirectory_file_1_id", "folder:1_folder_resource_id", FILE},
|
| - {"drive/root/Directory 1/Shared To The Account Owner.txt",
|
| - "file:subdirectory_unowned_file_1_id",
|
| - "folder:1_folder_resource_id", FILE},
|
| {"drive/root/Directory 2 excludeDir-test",
|
| "folder:sub_dir_folder_2_self_link", kRootId, DIRECTORY},
|
| - {"drive/root/Slash _ in directory",
|
| - "folder:slash_dir_folder_resource_id", kRootId, DIRECTORY},
|
| - {"drive/root/Slash _ in directory/Slash SubDir File.txt",
|
| - "file:slash_subdir_file",
|
| - "folder:slash_dir_folder_resource_id", FILE},
|
| // Deeper
|
| {"drive/root/Directory 1/Sub Directory Folder",
|
| "folder:sub_dir_folder_resource_id",
|
| @@ -190,39 +200,34 @@ TEST_F(ChangeListProcessorTest, ApplyFullResourceList) {
|
| }
|
|
|
| TEST_F(ChangeListProcessorTest, DeltaFileAddedInNewDirectory) {
|
| - const char kTestJson[] =
|
| - "gdata/delta_file_added_in_new_directory.json";
|
| -
|
| - ResourceEntryMap entry_map;
|
| - ParentResourceIdMap parent_resource_id_map;
|
| - ConvertToMap(ParseChangeList(kTestJson), &entry_map, &parent_resource_id_map);
|
| -
|
| - const std::string kNewFolderId("folder:new_folder_resource_id");
|
| - const std::string kNewFileId("document:file_added_in_new_dir_id");
|
| -
|
| - // Check the content of parsed ResourceEntryMap.
|
| - EXPECT_EQ(2U, entry_map.size());
|
| - EXPECT_TRUE(entry_map.count(kNewFolderId));
|
| - EXPECT_TRUE(entry_map.count(kNewFileId));
|
| - EXPECT_EQ(kRootId, parent_resource_id_map[kNewFolderId]);
|
| - EXPECT_EQ(kNewFolderId, parent_resource_id_map[kNewFileId]);
|
| - EXPECT_TRUE(entry_map[kNewFolderId].file_info().is_directory());
|
| - EXPECT_FALSE(entry_map[kNewFileId].file_info().is_directory());
|
| - EXPECT_EQ("New Directory", entry_map[kNewFolderId].title());
|
| - EXPECT_EQ("File in new dir", entry_map[kNewFileId].title());
|
| + ScopedVector<ChangeList> change_lists;
|
| + change_lists.push_back(new ChangeList);
|
| +
|
| + ResourceEntry new_folder;
|
| + new_folder.set_resource_id("folder:new_folder_resource_id");
|
| + new_folder.set_title("New Directory");
|
| + new_folder.mutable_file_info()->set_is_directory(true);
|
| + change_lists[0]->mutable_entries()->push_back(new_folder);
|
| + change_lists[0]->mutable_parent_resource_ids()->push_back(kRootId);
|
| +
|
| + ResourceEntry new_file;
|
| + new_file.set_resource_id("document:file_added_in_new_dir_id");
|
| + new_file.set_title("File in new dir.txt");
|
| + change_lists[0]->mutable_entries()->push_back(new_file);
|
| + change_lists[0]->mutable_parent_resource_ids()->push_back(
|
| + new_folder.resource_id());
|
| +
|
| + change_lists[0]->set_largest_changestamp(16730);
|
|
|
| // Apply the changelist and check the effect.
|
| - EXPECT_EQ(FILE_ERROR_OK,
|
| - ApplyFullResourceList(ParseChangeList(kBaseResourceListFile)));
|
| + EXPECT_EQ(FILE_ERROR_OK, ApplyFullResourceList(CreateBaseChangeList()));
|
| std::set<base::FilePath> changed_dirs;
|
| - EXPECT_EQ(FILE_ERROR_OK,
|
| - ApplyChangeList(ParseChangeList(kTestJson), &changed_dirs));
|
| + EXPECT_EQ(FILE_ERROR_OK, ApplyChangeList(change_lists.Pass(), &changed_dirs));
|
|
|
| - // The value is written in kTestJson.
|
| EXPECT_EQ(16730, metadata_->GetLargestChangestamp());
|
| EXPECT_TRUE(GetResourceEntry("drive/root/New Directory"));
|
| EXPECT_TRUE(GetResourceEntry(
|
| - "drive/root/New Directory/File in new dir.gdoc"));
|
| + "drive/root/New Directory/File in new dir.txt"));
|
|
|
| EXPECT_EQ(2U, changed_dirs.size());
|
| EXPECT_TRUE(changed_dirs.count(
|
| @@ -232,30 +237,24 @@ TEST_F(ChangeListProcessorTest, DeltaFileAddedInNewDirectory) {
|
| }
|
|
|
| TEST_F(ChangeListProcessorTest, DeltaDirMovedFromRootToDirectory) {
|
| - const char kTestJson[] =
|
| - "gdata/delta_dir_moved_from_root_to_directory.json";
|
| -
|
| - ResourceEntryMap entry_map;
|
| - ParentResourceIdMap parent_resource_id_map;
|
| - ConvertToMap(ParseChangeList(kTestJson), &entry_map, &parent_resource_id_map);
|
| + ScopedVector<ChangeList> change_lists;
|
| + change_lists.push_back(new ChangeList);
|
|
|
| - const std::string kMovedId("folder:1_folder_resource_id");
|
| - const std::string kDestId("folder:sub_dir_folder_2_self_link");
|
| + ResourceEntry entry;
|
| + entry.set_resource_id("folder:1_folder_resource_id");
|
| + entry.set_title("Directory 1");
|
| + entry.mutable_file_info()->set_is_directory(true);
|
| + change_lists[0]->mutable_entries()->push_back(entry);
|
| + change_lists[0]->mutable_parent_resource_ids()->push_back(
|
| + "folder:sub_dir_folder_2_self_link");
|
|
|
| - // Check the content of parsed ResourceEntryMap.
|
| - EXPECT_EQ(2U, entry_map.size());
|
| - EXPECT_TRUE(entry_map.count(kMovedId));
|
| - EXPECT_TRUE(entry_map.count(kDestId));
|
| - EXPECT_EQ(kDestId, parent_resource_id_map[kMovedId]);
|
| + change_lists[0]->set_largest_changestamp(16809);
|
|
|
| // Apply the changelist and check the effect.
|
| - EXPECT_EQ(FILE_ERROR_OK,
|
| - ApplyFullResourceList(ParseChangeList(kBaseResourceListFile)));
|
| + EXPECT_EQ(FILE_ERROR_OK, ApplyFullResourceList(CreateBaseChangeList()));
|
| std::set<base::FilePath> changed_dirs;
|
| - EXPECT_EQ(FILE_ERROR_OK,
|
| - ApplyChangeList(ParseChangeList(kTestJson), &changed_dirs));
|
| + EXPECT_EQ(FILE_ERROR_OK, ApplyChangeList(change_lists.Pass(), &changed_dirs));
|
|
|
| - // The value is written in kTestJson.
|
| EXPECT_EQ(16809, metadata_->GetLargestChangestamp());
|
| EXPECT_FALSE(GetResourceEntry("drive/root/Directory 1"));
|
| EXPECT_TRUE(GetResourceEntry(
|
| @@ -275,30 +274,22 @@ TEST_F(ChangeListProcessorTest, DeltaDirMovedFromRootToDirectory) {
|
| }
|
|
|
| TEST_F(ChangeListProcessorTest, DeltaFileMovedFromDirectoryToRoot) {
|
| - const char kTestJson[] =
|
| - "gdata/delta_file_moved_from_directory_to_root.json";
|
| -
|
| - ResourceEntryMap entry_map;
|
| - ParentResourceIdMap parent_resource_id_map;
|
| - ConvertToMap(ParseChangeList(kTestJson), &entry_map, &parent_resource_id_map);
|
| + ScopedVector<ChangeList> change_lists;
|
| + change_lists.push_back(new ChangeList);
|
|
|
| - const std::string kMovedId("file:subdirectory_file_1_id");
|
| - const std::string kSrcId("folder:1_folder_resource_id");
|
| + ResourceEntry entry;
|
| + entry.set_resource_id("file:subdirectory_file_1_id");
|
| + entry.set_title("SubDirectory File 1.txt");
|
| + change_lists[0]->mutable_entries()->push_back(entry);
|
| + change_lists[0]->mutable_parent_resource_ids()->push_back(kRootId);
|
|
|
| - // Check the content of parsed ResourceEntryMap.
|
| - EXPECT_EQ(2U, entry_map.size());
|
| - EXPECT_TRUE(entry_map.count(kMovedId));
|
| - EXPECT_TRUE(entry_map.count(kSrcId));
|
| - EXPECT_EQ(kRootId, parent_resource_id_map[kMovedId]);
|
| + change_lists[0]->set_largest_changestamp(16815);
|
|
|
| // Apply the changelist and check the effect.
|
| - EXPECT_EQ(FILE_ERROR_OK,
|
| - ApplyFullResourceList(ParseChangeList(kBaseResourceListFile)));
|
| + EXPECT_EQ(FILE_ERROR_OK, ApplyFullResourceList(CreateBaseChangeList()));
|
| std::set<base::FilePath> changed_dirs;
|
| - EXPECT_EQ(FILE_ERROR_OK,
|
| - ApplyChangeList(ParseChangeList(kTestJson), &changed_dirs));
|
| + EXPECT_EQ(FILE_ERROR_OK, ApplyChangeList(change_lists.Pass(), &changed_dirs));
|
|
|
| - // The value is written in kTestJson.
|
| EXPECT_EQ(16815, metadata_->GetLargestChangestamp());
|
| EXPECT_FALSE(GetResourceEntry(
|
| "drive/root/Directory 1/SubDirectory File 1.txt"));
|
| @@ -312,93 +303,70 @@ TEST_F(ChangeListProcessorTest, DeltaFileMovedFromDirectoryToRoot) {
|
| }
|
|
|
| TEST_F(ChangeListProcessorTest, DeltaFileRenamedInDirectory) {
|
| - const char kTestJson[] =
|
| - "gdata/delta_file_renamed_in_directory.json";
|
| -
|
| - ResourceEntryMap entry_map;
|
| - ParentResourceIdMap parent_resource_id_map;
|
| - ConvertToMap(ParseChangeList(kTestJson), &entry_map, &parent_resource_id_map);
|
| + ScopedVector<ChangeList> change_lists;
|
| + change_lists.push_back(new ChangeList);
|
|
|
| - const std::string kRenamedId("file:subdirectory_file_1_id");
|
| - const std::string kParentId("folder:1_folder_resource_id");
|
| + ResourceEntry entry;
|
| + entry.set_resource_id("file:subdirectory_file_1_id");
|
| + entry.set_title("New SubDirectory File 1.txt");
|
| + change_lists[0]->mutable_entries()->push_back(entry);
|
| + change_lists[0]->mutable_parent_resource_ids()->push_back(
|
| + "folder:1_folder_resource_id");
|
|
|
| - // Check the content of parsed ResourceEntryMap.
|
| - EXPECT_EQ(2U, entry_map.size());
|
| - EXPECT_TRUE(entry_map.count(kRenamedId));
|
| - EXPECT_TRUE(entry_map.count(kParentId));
|
| - EXPECT_EQ(kParentId, parent_resource_id_map[kRenamedId]);
|
| - EXPECT_EQ("New SubDirectory File 1.txt", entry_map[kRenamedId].title());
|
| + change_lists[0]->set_largest_changestamp(16767);
|
|
|
| // Apply the changelist and check the effect.
|
| - EXPECT_EQ(FILE_ERROR_OK,
|
| - ApplyFullResourceList(ParseChangeList(kBaseResourceListFile)));
|
| + EXPECT_EQ(FILE_ERROR_OK, ApplyFullResourceList(CreateBaseChangeList()));
|
| std::set<base::FilePath> changed_dirs;
|
| - EXPECT_EQ(FILE_ERROR_OK,
|
| - ApplyChangeList(ParseChangeList(kTestJson), &changed_dirs));
|
| + EXPECT_EQ(FILE_ERROR_OK, ApplyChangeList(change_lists.Pass(), &changed_dirs));
|
|
|
| - // The value is written in kTestJson.
|
| EXPECT_EQ(16767, metadata_->GetLargestChangestamp());
|
| EXPECT_FALSE(GetResourceEntry(
|
| "drive/root/Directory 1/SubDirectory File 1.txt"));
|
| EXPECT_TRUE(GetResourceEntry(
|
| "drive/root/Directory 1/New SubDirectory File 1.txt"));
|
|
|
| - EXPECT_EQ(2U, changed_dirs.size());
|
| - EXPECT_TRUE(changed_dirs.count(
|
| - base::FilePath::FromUTF8Unsafe("drive/root")));
|
| + EXPECT_EQ(1U, changed_dirs.size());
|
| EXPECT_TRUE(changed_dirs.count(
|
| base::FilePath::FromUTF8Unsafe("drive/root/Directory 1")));
|
| }
|
|
|
| TEST_F(ChangeListProcessorTest, DeltaAddAndDeleteFileInRoot) {
|
| - const char kTestJsonAdd[] =
|
| - "gdata/delta_file_added_in_root.json";
|
| - const char kTestJsonDelete[] =
|
| - "gdata/delta_file_deleted_in_root.json";
|
| -
|
| - const std::string kParentId(kRootId);
|
| - const std::string kFileId("document:added_in_root_id");
|
| -
|
| - ResourceEntryMap entry_map;
|
| - ParentResourceIdMap parent_resource_id_map;
|
| -
|
| - // Check the content of kTestJsonAdd.
|
| - ConvertToMap(ParseChangeList(kTestJsonAdd),
|
| - &entry_map, &parent_resource_id_map);
|
| - EXPECT_EQ(1U, entry_map.size());
|
| - EXPECT_TRUE(entry_map.count(kFileId));
|
| - EXPECT_EQ(kParentId, parent_resource_id_map[kFileId]);
|
| - EXPECT_EQ("Added file", entry_map[kFileId].title());
|
| - EXPECT_FALSE(entry_map[kFileId].deleted());
|
| + // Create ChangeList to add a file.
|
| + ScopedVector<ChangeList> change_lists;
|
| + change_lists.push_back(new ChangeList);
|
| +
|
| + ResourceEntry entry;
|
| + entry.set_resource_id("document:added_in_root_id");
|
| + entry.set_title("Added file.txt");
|
| + change_lists[0]->mutable_entries()->push_back(entry);
|
| + change_lists[0]->mutable_parent_resource_ids()->push_back(kRootId);
|
| +
|
| + change_lists[0]->set_largest_changestamp(16683);
|
|
|
| // Apply.
|
| - EXPECT_EQ(FILE_ERROR_OK,
|
| - ApplyFullResourceList(ParseChangeList(kBaseResourceListFile)));
|
| + EXPECT_EQ(FILE_ERROR_OK, ApplyFullResourceList(CreateBaseChangeList()));
|
| std::set<base::FilePath> changed_dirs;
|
| - EXPECT_EQ(FILE_ERROR_OK,
|
| - ApplyChangeList(ParseChangeList(kTestJsonAdd), &changed_dirs));
|
| + EXPECT_EQ(FILE_ERROR_OK, ApplyChangeList(change_lists.Pass(), &changed_dirs));
|
| EXPECT_EQ(16683, metadata_->GetLargestChangestamp());
|
| - EXPECT_TRUE(GetResourceEntry("drive/root/Added file.gdoc"));
|
| + EXPECT_TRUE(GetResourceEntry("drive/root/Added file.txt"));
|
| EXPECT_EQ(1U, changed_dirs.size());
|
| EXPECT_TRUE(changed_dirs.count(
|
| base::FilePath::FromUTF8Unsafe("drive/root")));
|
|
|
| - // Check the content of kTestJsonDelete.
|
| - entry_map.clear();
|
| - parent_resource_id_map.clear();
|
| - ConvertToMap(ParseChangeList(kTestJsonDelete),
|
| - &entry_map, &parent_resource_id_map);
|
| - EXPECT_EQ(1U, entry_map.size());
|
| - EXPECT_TRUE(entry_map.count(kFileId));
|
| - EXPECT_EQ(kParentId, parent_resource_id_map[kFileId]);
|
| - EXPECT_EQ("Added file", entry_map[kFileId].title());
|
| - EXPECT_TRUE(entry_map[kFileId].deleted());
|
| + // Create ChangeList to delete the file.
|
| + change_lists.push_back(new ChangeList);
|
| +
|
| + entry.set_deleted(true);
|
| + change_lists[0]->mutable_entries()->push_back(entry);
|
| + change_lists[0]->mutable_parent_resource_ids()->push_back(kRootId);
|
| +
|
| + change_lists[0]->set_largest_changestamp(16687);
|
|
|
| // Apply.
|
| - EXPECT_EQ(FILE_ERROR_OK,
|
| - ApplyChangeList(ParseChangeList(kTestJsonDelete), &changed_dirs));
|
| + EXPECT_EQ(FILE_ERROR_OK, ApplyChangeList(change_lists.Pass(), &changed_dirs));
|
| EXPECT_EQ(16687, metadata_->GetLargestChangestamp());
|
| - EXPECT_FALSE(GetResourceEntry("drive/root/Added file.gdoc"));
|
| + EXPECT_FALSE(GetResourceEntry("drive/root/Added file.txt"));
|
| EXPECT_EQ(1U, changed_dirs.size());
|
| EXPECT_TRUE(changed_dirs.count(
|
| base::FilePath::FromUTF8Unsafe("drive/root")));
|
| @@ -406,58 +374,44 @@ TEST_F(ChangeListProcessorTest, DeltaAddAndDeleteFileInRoot) {
|
|
|
|
|
| TEST_F(ChangeListProcessorTest, DeltaAddAndDeleteFileFromExistingDirectory) {
|
| - const char kTestJsonAdd[] =
|
| - "gdata/delta_file_added_in_directory.json";
|
| - const char kTestJsonDelete[] =
|
| - "gdata/delta_file_deleted_in_directory.json";
|
| -
|
| - const std::string kParentId("folder:1_folder_resource_id");
|
| - const std::string kFileId("document:added_in_root_id");
|
| -
|
| - ResourceEntryMap entry_map;
|
| - ParentResourceIdMap parent_resource_id_map;
|
| -
|
| - // Check the content of kTestJsonAdd.
|
| - ConvertToMap(ParseChangeList(kTestJsonAdd),
|
| - &entry_map, &parent_resource_id_map);
|
| - EXPECT_EQ(2U, entry_map.size());
|
| - EXPECT_TRUE(entry_map.count(kFileId));
|
| - EXPECT_TRUE(entry_map.count(kParentId));
|
| - EXPECT_EQ(kParentId, parent_resource_id_map[kFileId]);
|
| - EXPECT_EQ("Added file", entry_map[kFileId].title());
|
| - EXPECT_FALSE(entry_map[kFileId].deleted());
|
| + // Create ChangeList to add a file.
|
| + ScopedVector<ChangeList> change_lists;
|
| + change_lists.push_back(new ChangeList);
|
| +
|
| + ResourceEntry entry;
|
| + entry.set_resource_id("document:added_in_root_id");
|
| + entry.set_title("Added file.txt");
|
| + change_lists[0]->mutable_entries()->push_back(entry);
|
| + change_lists[0]->mutable_parent_resource_ids()->push_back(
|
| + "folder:1_folder_resource_id");
|
| +
|
| + change_lists[0]->set_largest_changestamp(16730);
|
|
|
| // Apply.
|
| - EXPECT_EQ(FILE_ERROR_OK,
|
| - ApplyFullResourceList(ParseChangeList(kBaseResourceListFile)));
|
| + EXPECT_EQ(FILE_ERROR_OK, ApplyFullResourceList(CreateBaseChangeList()));
|
| std::set<base::FilePath> changed_dirs;
|
| - EXPECT_EQ(FILE_ERROR_OK,
|
| - ApplyChangeList(ParseChangeList(kTestJsonAdd), &changed_dirs));
|
| + EXPECT_EQ(FILE_ERROR_OK, ApplyChangeList(change_lists.Pass(), &changed_dirs));
|
| EXPECT_EQ(16730, metadata_->GetLargestChangestamp());
|
| - EXPECT_TRUE(GetResourceEntry("drive/root/Directory 1/Added file.gdoc"));
|
| + EXPECT_TRUE(GetResourceEntry("drive/root/Directory 1/Added file.txt"));
|
|
|
| - EXPECT_EQ(2U, changed_dirs.size());
|
| - EXPECT_TRUE(changed_dirs.count(
|
| - base::FilePath::FromUTF8Unsafe("drive/root")));
|
| + EXPECT_EQ(1U, changed_dirs.size());
|
| EXPECT_TRUE(changed_dirs.count(
|
| base::FilePath::FromUTF8Unsafe("drive/root/Directory 1")));
|
|
|
| - // Check the content of kTestJsonDelete.
|
| - entry_map.clear();
|
| - parent_resource_id_map.clear();
|
| - ConvertToMap(ParseChangeList(kTestJsonDelete),
|
| - &entry_map, &parent_resource_id_map);
|
| - EXPECT_EQ(1U, entry_map.size());
|
| - EXPECT_TRUE(entry_map.count(kFileId));
|
| - EXPECT_EQ(kParentId, parent_resource_id_map[kFileId]);
|
| - EXPECT_EQ("Added file", entry_map[kFileId].title());
|
| - EXPECT_TRUE(entry_map[kFileId].deleted());
|
| + // Create ChangeList to delete the file.
|
| + change_lists.push_back(new ChangeList);
|
| +
|
| + entry.set_deleted(true);
|
| + change_lists[0]->mutable_entries()->push_back(entry);
|
| + change_lists[0]->mutable_parent_resource_ids()->push_back(
|
| + "folder:1_folder_resource_id");
|
| +
|
| + change_lists[0]->set_largest_changestamp(16770);
|
|
|
| // Apply.
|
| - EXPECT_EQ(FILE_ERROR_OK,
|
| - ApplyChangeList(ParseChangeList(kTestJsonDelete), &changed_dirs));
|
| + EXPECT_EQ(FILE_ERROR_OK, ApplyChangeList(change_lists.Pass(), &changed_dirs));
|
| EXPECT_EQ(16770, metadata_->GetLargestChangestamp());
|
| - EXPECT_FALSE(GetResourceEntry("drive/root/Directory 1/Added file.gdoc"));
|
| + EXPECT_FALSE(GetResourceEntry("drive/root/Directory 1/Added file.txt"));
|
|
|
| EXPECT_EQ(1U, changed_dirs.size());
|
| EXPECT_TRUE(changed_dirs.count(
|
| @@ -465,35 +419,36 @@ TEST_F(ChangeListProcessorTest, DeltaAddAndDeleteFileFromExistingDirectory) {
|
| }
|
|
|
| TEST_F(ChangeListProcessorTest, DeltaAddFileToNewButDeletedDirectory) {
|
| - // This file contains the following updates:
|
| + // Create a change which contains the following updates:
|
| // 1) A new PDF file is added to a new directory
|
| // 2) but the new directory is marked "deleted" (i.e. moved to Trash)
|
| // Hence, the PDF file should be just ignored.
|
| - const char kTestJson[] =
|
| - "gdata/delta_file_added_in_new_but_deleted_directory.json";
|
| -
|
| - ResourceEntryMap entry_map;
|
| - ParentResourceIdMap parent_resource_id_map;
|
| - ConvertToMap(ParseChangeList(kTestJson), &entry_map, &parent_resource_id_map);
|
| + ScopedVector<ChangeList> change_lists;
|
| + change_lists.push_back(new ChangeList);
|
|
|
| - const std::string kDirId("folder:new_folder_resource_id");
|
| - const std::string kFileId("pdf:file_added_in_deleted_dir_id");
|
| + ResourceEntry file;
|
| + file.set_resource_id("pdf:file_added_in_deleted_id");
|
| + file.set_title("new_pdf_file.pdf");
|
| + file.set_deleted(true);
|
| + change_lists[0]->mutable_entries()->push_back(file);
|
| + change_lists[0]->mutable_parent_resource_ids()->push_back(
|
| + "folder:new_folder_resource_id");
|
| +
|
| + ResourceEntry directory;
|
| + directory.set_resource_id("folder:new_folder_resource_id");
|
| + directory.set_title("New Directory");
|
| + directory.mutable_file_info()->set_is_directory(true);
|
| + directory.set_deleted(true);
|
| + change_lists[0]->mutable_entries()->push_back(directory);
|
| + change_lists[0]->mutable_parent_resource_ids()->push_back(kRootId);
|
|
|
| - // Check the content of parsed ResourceEntryMap.
|
| - EXPECT_EQ(2U, entry_map.size());
|
| - EXPECT_TRUE(entry_map.count(kDirId));
|
| - EXPECT_TRUE(entry_map.count(kFileId));
|
| - EXPECT_EQ(kDirId, parent_resource_id_map[kFileId]);
|
| - EXPECT_TRUE(entry_map[kDirId].deleted());
|
| + change_lists[0]->set_largest_changestamp(16730);
|
|
|
| // Apply the changelist and check the effect.
|
| - EXPECT_EQ(FILE_ERROR_OK,
|
| - ApplyFullResourceList(ParseChangeList(kBaseResourceListFile)));
|
| + EXPECT_EQ(FILE_ERROR_OK, ApplyFullResourceList(CreateBaseChangeList()));
|
| std::set<base::FilePath> changed_dirs;
|
| - EXPECT_EQ(FILE_ERROR_OK,
|
| - ApplyChangeList(ParseChangeList(kTestJson), &changed_dirs));
|
| + EXPECT_EQ(FILE_ERROR_OK, ApplyChangeList(change_lists.Pass(), &changed_dirs));
|
|
|
| - // The value is written in kTestJson.
|
| EXPECT_EQ(16730, metadata_->GetLargestChangestamp());
|
| EXPECT_FALSE(GetResourceEntry("drive/root/New Directory/new_pdf_file.pdf"));
|
|
|
| @@ -502,8 +457,7 @@ TEST_F(ChangeListProcessorTest, DeltaAddFileToNewButDeletedDirectory) {
|
|
|
| TEST_F(ChangeListProcessorTest, RefreshDirectory) {
|
| // Prepare metadata.
|
| - EXPECT_EQ(FILE_ERROR_OK,
|
| - ApplyFullResourceList(ParseChangeList(kBaseResourceListFile)));
|
| + EXPECT_EQ(FILE_ERROR_OK, ApplyFullResourceList(CreateBaseChangeList()));
|
|
|
| // Create change list.
|
| scoped_ptr<ChangeList> change_list(new ChangeList);
|
| @@ -547,8 +501,7 @@ TEST_F(ChangeListProcessorTest, RefreshDirectory) {
|
|
|
| TEST_F(ChangeListProcessorTest, RefreshDirectory_WrongParentId) {
|
| // Prepare metadata.
|
| - EXPECT_EQ(FILE_ERROR_OK,
|
| - ApplyFullResourceList(ParseChangeList(kBaseResourceListFile)));
|
| + EXPECT_EQ(FILE_ERROR_OK, ApplyFullResourceList(CreateBaseChangeList()));
|
|
|
| // Create change list and add a new file to it.
|
| scoped_ptr<ChangeList> change_list(new ChangeList);
|
| @@ -581,8 +534,7 @@ TEST_F(ChangeListProcessorTest, RefreshDirectory_WrongParentId) {
|
|
|
| TEST_F(ChangeListProcessorTest, SharedFilesWithNoParentInFeed) {
|
| // Prepare metadata.
|
| - EXPECT_EQ(FILE_ERROR_OK,
|
| - ApplyFullResourceList(ParseChangeList(kBaseResourceListFile)));
|
| + EXPECT_EQ(FILE_ERROR_OK, ApplyFullResourceList(CreateBaseChangeList()));
|
|
|
| // Create change lists.
|
| ScopedVector<ChangeList> change_lists;
|
| @@ -607,8 +559,7 @@ TEST_F(ChangeListProcessorTest, SharedFilesWithNoParentInFeed) {
|
|
|
| TEST_F(ChangeListProcessorTest, ModificationDate) {
|
| // Prepare metadata.
|
| - EXPECT_EQ(FILE_ERROR_OK,
|
| - ApplyFullResourceList(ParseChangeList(kBaseResourceListFile)));
|
| + EXPECT_EQ(FILE_ERROR_OK, ApplyFullResourceList(CreateBaseChangeList()));
|
|
|
| // Create change lists with a new file.
|
| ScopedVector<ChangeList> change_lists;
|
|
|