list_changes_task_unittest.cc revision f2477e01787aa58f445919b809d89e252beef54f
12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// found in the LICENSE file. 42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/sync_file_system/drive_backend/list_changes_task.h" 62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/files/scoped_temp_dir.h" 82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/format_macros.h" 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/run_loop.h" 102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/strings/stringprintf.h" 112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/google_apis/drive_api_parser.h" 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/sync_file_system/drive_backend/drive_backend_constants.h" 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/sync_file_system/drive_backend/metadata_database.h" 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/sync_file_system/drive_backend/register_app_task.h" 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/sync_file_system/drive_backend/sync_engine_context.h" 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/sync_file_system/drive_backend/sync_engine_initializer.h" 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/sync_file_system/drive_backend_v1/fake_drive_service_helper.h" 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/sync_file_system/sync_file_system_test_util.h" 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "content/public/test/test_browser_thread_bundle.h" 202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h" 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace sync_file_system { 232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace drive_backend { 242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace { 262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)const char kAppID[] = "app_id"; 282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)const char kUnregisteredAppID[] = "app_id unregistered"; 292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} // namespace 312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class ListChangesTaskTest : public testing::Test, 332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public SyncEngineContext { 342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public: 352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ListChangesTaskTest() {} 362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual ~ListChangesTaskTest() {} 372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void SetUp() OVERRIDE { 392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(database_dir_.CreateUniqueTempDir()); 402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) fake_drive_service_.reset(new drive::FakeDriveService); 422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(fake_drive_service_->LoadAccountMetadataForWapi( 432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "sync_file_system/account_metadata.json")); 442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(fake_drive_service_->LoadResourceListForWapi( 452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "gdata/empty_feed.json")); 462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) drive_uploader_.reset(new drive::DriveUploader( 482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) fake_drive_service_.get(), base::MessageLoopProxy::current())); 492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) fake_drive_service_helper_.reset(new FakeDriveServiceHelper( 512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) fake_drive_service_.get(), drive_uploader_.get())); 522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SetUpRemoteFolders(); 542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) InitializeMetadataDatabase(); 552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) RegisterApp(kAppID); 562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void TearDown() OVERRIDE { 592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) metadata_database_.reset(); 602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::RunLoop().RunUntilIdle(); 612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual drive::DriveServiceInterface* GetDriveService() OVERRIDE { 642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return fake_drive_service_.get(); 652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual drive::DriveUploader* GetDriveUploader() OVERRIDE { 682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return NULL; 692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual MetadataDatabase* GetMetadataDatabase() OVERRIDE { 722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return metadata_database_.get(); 732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual RemoteChangeProcessor* GetRemoteChangeProcessor() OVERRIDE { 762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return NULL; 772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual base::SequencedTaskRunner* GetBlockingTaskRunner() OVERRIDE { 802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return base::MessageLoopProxy::current(); 812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int64 GetRemoteLargestChangeID() { 842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_ptr<google_apis::AboutResource> about_resource; 852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(google_apis::HTTP_SUCCESS, 862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) fake_drive_service_helper_->GetAboutResource(&about_resource)); 872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return about_resource->largest_change_id(); 882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) protected: 912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SyncStatusCode RunTask(SyncTask* sync_task) { 922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SyncStatusCode status = SYNC_STATUS_UNKNOWN; 932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) sync_task->Run(CreateResultReceiver(&status)); 942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::RunLoop().RunUntilIdle(); 952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return status; 962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) size_t CountDirtyTracker() { 992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return metadata_database_->dirty_trackers_.size(); 1002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 1012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) FakeDriveServiceHelper* fake_drive_service_helper() { 1032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return fake_drive_service_helper_.get(); 1042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 1052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) drive::FakeDriveService* fake_drive_service() { 1072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return fake_drive_service_.get(); 1082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 1092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void SetUpChangesInFolder(const std::string& folder_id) { 1112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) std::string new_file_id; 1122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_EQ(google_apis::HTTP_SUCCESS, 1132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) fake_drive_service_helper()->AddFile( 1142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) folder_id, "new file", "file contents", &new_file_id)); 1152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) std::string same_name_file_id; 1162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_EQ(google_apis::HTTP_SUCCESS, 1172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) fake_drive_service_helper()->AddFile( 1182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) folder_id, "new file", "file contents", 1192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) &same_name_file_id)); 1202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) std::string new_folder_id; 1222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_EQ(google_apis::HTTP_CREATED, 1232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) fake_drive_service_helper()->AddFolder( 1242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) folder_id, "new folder", &new_folder_id)); 1252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) std::string modified_file_id; 1272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_EQ(google_apis::HTTP_SUCCESS, 1282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) fake_drive_service_helper()->AddFile( 1292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) folder_id, "modified file", "file content", 1302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) &modified_file_id)); 1312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_EQ(google_apis::HTTP_SUCCESS, 1322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) fake_drive_service_helper()->UpdateFile( 1332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) modified_file_id, "modified file content")); 1342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) std::string trashed_file_id; 1372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_EQ(google_apis::HTTP_SUCCESS, 1382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) fake_drive_service_helper()->AddFile( 1392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) folder_id, "trashed file", "file content", 1402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) &trashed_file_id)); 1412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_EQ(google_apis::HTTP_SUCCESS, 1422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) fake_drive_service_helper()->RemoveResource(trashed_file_id)); 1432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 1442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) std::string root_resource_id() { 1462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return fake_drive_service_->GetRootResourceId(); 1472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 1482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) std::string sync_root_folder_id() { 1502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return sync_root_folder_id_; 1512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 1522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) std::string app_root_folder_id() { 1542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return app_root_folder_id_; 1552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 1562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) std::string unregistered_app_root_folder_id() { 1582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return unregistered_app_root_folder_id_; 1592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 1602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private: 1622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void SetUpRemoteFolders() { 1632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_EQ(google_apis::HTTP_CREATED, 1642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) fake_drive_service_helper_->AddOrphanedFolder( 1652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) kSyncRootFolderTitle, &sync_root_folder_id_)); 1662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_EQ(google_apis::HTTP_CREATED, 1672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) fake_drive_service_helper_->AddFolder( 1682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) sync_root_folder_id_, kAppID, &app_root_folder_id_)); 1692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_EQ(google_apis::HTTP_CREATED, 1702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) fake_drive_service_helper_->AddFolder( 1712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) sync_root_folder_id_, kUnregisteredAppID, 1722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) &unregistered_app_root_folder_id_)); 1732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 1742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void InitializeMetadataDatabase() { 1762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SyncEngineInitializer initializer(base::MessageLoopProxy::current(), 1772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) fake_drive_service_.get(), 1782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) database_dir_.path()); 1792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(SYNC_STATUS_OK, RunTask(&initializer)); 1802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) metadata_database_ = initializer.PassMetadataDatabase(); 1812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 182 183 void RegisterApp(const std::string& app_id) { 184 RegisterAppTask register_app(this, app_id); 185 EXPECT_EQ(SYNC_STATUS_OK, RunTask(®ister_app)); 186 } 187 188 std::string GenerateFileID() { 189 return base::StringPrintf("file_id_%" PRId64, next_file_id_++); 190 } 191 192 std::string sync_root_folder_id_; 193 std::string app_root_folder_id_; 194 std::string unregistered_app_root_folder_id_; 195 196 int64 next_file_id_; 197 int64 next_tracker_id_; 198 199 content::TestBrowserThreadBundle browser_threads_; 200 base::ScopedTempDir database_dir_; 201 202 scoped_ptr<drive::FakeDriveService> fake_drive_service_; 203 scoped_ptr<drive::DriveUploader> drive_uploader_; 204 scoped_ptr<FakeDriveServiceHelper> fake_drive_service_helper_; 205 206 scoped_ptr<MetadataDatabase> metadata_database_; 207 208 DISALLOW_COPY_AND_ASSIGN(ListChangesTaskTest); 209}; 210 211TEST_F(ListChangesTaskTest, NoChange) { 212 size_t num_dirty_trackers = CountDirtyTracker(); 213 214 ListChangesTask list_changes(this); 215 EXPECT_EQ(SYNC_STATUS_OK, RunTask(&list_changes)); 216 217 EXPECT_EQ(num_dirty_trackers, CountDirtyTracker()); 218} 219 220TEST_F(ListChangesTaskTest, UnrelatedChange) { 221 size_t num_dirty_trackers = CountDirtyTracker(); 222 223 SetUpChangesInFolder(root_resource_id()); 224 SetUpChangesInFolder(unregistered_app_root_folder_id()); 225 226 ListChangesTask list_changes(this); 227 EXPECT_EQ(SYNC_STATUS_OK, RunTask(&list_changes)); 228 229 EXPECT_EQ(num_dirty_trackers, CountDirtyTracker()); 230} 231 232TEST_F(ListChangesTaskTest, UnderTrackedFolder) { 233 size_t num_dirty_trackers = CountDirtyTracker(); 234 235 SetUpChangesInFolder(app_root_folder_id()); 236 237 ListChangesTask list_changes(this); 238 EXPECT_EQ(SYNC_STATUS_OK, RunTask(&list_changes)); 239 240 EXPECT_EQ(num_dirty_trackers + 4, CountDirtyTracker()); 241} 242 243} // namespace drive_backend 244} // namespace sync_file_system 245