OLD | NEW |
(Empty) | |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. |
| 4 |
| 5 #include "chrome/browser/chromeos/drive/change_list_processor.h" |
| 6 |
| 7 #include "base/message_loop.h" |
| 8 #include "base/values.h" |
| 9 #include "chrome/browser/chromeos/drive/drive.pb.h" |
| 10 #include "chrome/browser/google_apis/drive_api_parser.h" |
| 11 #include "chrome/browser/google_apis/gdata_wapi_parser.h" |
| 12 #include "chrome/browser/google_apis/test_util.h" |
| 13 #include "testing/gtest/include/gtest/gtest.h" |
| 14 |
| 15 namespace drive { |
| 16 namespace internal { |
| 17 |
| 18 namespace { |
| 19 |
| 20 // Parses a json file at |test_data_path| relative to Chrome test directory into |
| 21 // a drive::internal::ChangeList structure. |
| 22 ChangeList* ParseChangeList(const std::string& test_data_path) { |
| 23 return new ChangeList( |
| 24 *google_apis::ResourceList::ExtractAndParse( |
| 25 *google_apis::test_util::LoadJSONFile( |
| 26 test_data_path))); |
| 27 } |
| 28 |
| 29 } // namespace |
| 30 |
| 31 TEST(ChangeListProcessorTest, DeltaFileAddedInNewDirectory) { |
| 32 ScopedVector<ChangeList> changes; |
| 33 changes.push_back(ParseChangeList( |
| 34 "chromeos/gdata/delta_file_added_in_new_directory.json")); |
| 35 |
| 36 ChangeListProcessor::ResourceEntryMap entry_map; |
| 37 ChangeListProcessor::FeedToEntryMap(changes.Pass(), &entry_map, NULL); |
| 38 |
| 39 const std::string kRootId("fake_root"); |
| 40 const std::string kNewFolderId("folder:new_folder_resource_id"); |
| 41 const std::string kNewFileId("document:file_added_in_new_dir_id"); |
| 42 |
| 43 EXPECT_EQ(2U, entry_map.size()); |
| 44 EXPECT_TRUE(entry_map.count(kNewFolderId)); |
| 45 EXPECT_TRUE(entry_map.count(kNewFileId)); |
| 46 EXPECT_EQ(kRootId, entry_map[kNewFolderId].parent_resource_id()); |
| 47 EXPECT_EQ(kNewFolderId, entry_map[kNewFileId].parent_resource_id()); |
| 48 EXPECT_TRUE(entry_map[kNewFolderId].file_info().is_directory()); |
| 49 EXPECT_FALSE(entry_map[kNewFileId].file_info().is_directory()); |
| 50 EXPECT_EQ("New Directory", entry_map[kNewFolderId].title()); |
| 51 EXPECT_EQ("File in new dir", entry_map[kNewFileId].title()); |
| 52 } |
| 53 |
| 54 TEST(ChangeListProcessorTest, DeltaDirMovedFromRootToDirectory) { |
| 55 ScopedVector<ChangeList> changes; |
| 56 changes.push_back(ParseChangeList( |
| 57 "chromeos/gdata/delta_dir_moved_from_root_to_directory.json")); |
| 58 |
| 59 ChangeListProcessor::ResourceEntryMap entry_map; |
| 60 ChangeListProcessor::FeedToEntryMap(changes.Pass(), &entry_map, NULL); |
| 61 |
| 62 const std::string kMovedId("folder:1_folder_resource_id"); |
| 63 const std::string kDestId("folder:sub_dir_folder_2_self_link"); |
| 64 |
| 65 EXPECT_EQ(2U, entry_map.size()); |
| 66 EXPECT_TRUE(entry_map.count(kMovedId)); |
| 67 EXPECT_TRUE(entry_map.count(kDestId)); |
| 68 EXPECT_EQ(kDestId, entry_map[kMovedId].parent_resource_id()); |
| 69 } |
| 70 |
| 71 TEST(ChangeListProcessorTest, DeltaFileMovedFromDirectoryToRoot) { |
| 72 ScopedVector<ChangeList> changes; |
| 73 changes.push_back(ParseChangeList( |
| 74 "chromeos/gdata/delta_file_moved_from_directory_to_root.json")); |
| 75 |
| 76 ChangeListProcessor::ResourceEntryMap entry_map; |
| 77 ChangeListProcessor::FeedToEntryMap(changes.Pass(), &entry_map, NULL); |
| 78 |
| 79 const std::string kRootId("fake_root"); |
| 80 const std::string kMovedId("file:subdirectory_file_1_id"); |
| 81 const std::string kSrcId("folder:1_folder_resource_id"); |
| 82 |
| 83 EXPECT_EQ(2U, entry_map.size()); |
| 84 EXPECT_TRUE(entry_map.count(kMovedId)); |
| 85 EXPECT_TRUE(entry_map.count(kSrcId)); |
| 86 EXPECT_EQ(kRootId, entry_map[kMovedId].parent_resource_id()); |
| 87 } |
| 88 |
| 89 TEST(ChangeListProcessorTest, DeltaFileRenamedInDirectory) { |
| 90 ScopedVector<ChangeList> changes; |
| 91 changes.push_back(ParseChangeList( |
| 92 "chromeos/gdata/delta_file_renamed_in_directory.json")); |
| 93 |
| 94 ChangeListProcessor::ResourceEntryMap entry_map; |
| 95 ChangeListProcessor::FeedToEntryMap(changes.Pass(), &entry_map, NULL); |
| 96 |
| 97 const std::string kRootId("fake_root"); |
| 98 const std::string kRenamedId("file:subdirectory_file_1_id"); |
| 99 const std::string kParentId("folder:1_folder_resource_id"); |
| 100 |
| 101 EXPECT_EQ(2U, entry_map.size()); |
| 102 EXPECT_TRUE(entry_map.count(kRenamedId)); |
| 103 EXPECT_TRUE(entry_map.count(kParentId)); |
| 104 EXPECT_EQ(kParentId, entry_map[kRenamedId].parent_resource_id()); |
| 105 EXPECT_EQ("New SubDirectory File 1.txt", entry_map[kRenamedId].title()); |
| 106 } |
| 107 |
| 108 // TODO(kinaba): write test for ApplyFeeds crbug.com/147728. |
| 109 |
| 110 } // namespace internal |
| 111 } // namespace drive |
| 112 |
OLD | NEW |