165dafa8344c8c018e346dd331a7782081a896239Sean Callanan// Copyright 2013 The Chromium Authors. All rights reserved.
265dafa8344c8c018e346dd331a7782081a896239Sean Callanan// Use of this source code is governed by a BSD-style license that can be
365dafa8344c8c018e346dd331a7782081a896239Sean Callanan// found in the LICENSE file.
465dafa8344c8c018e346dd331a7782081a896239Sean Callanan
565dafa8344c8c018e346dd331a7782081a896239Sean Callanan#include "chrome/browser/sync_file_system/drive_backend/list_changes_task.h"
665dafa8344c8c018e346dd331a7782081a896239Sean Callanan
765dafa8344c8c018e346dd331a7782081a896239Sean Callanan#include <string>
865dafa8344c8c018e346dd331a7782081a896239Sean Callanan
965dafa8344c8c018e346dd331a7782081a896239Sean Callanan#include "base/files/scoped_temp_dir.h"
1065dafa8344c8c018e346dd331a7782081a896239Sean Callanan#include "base/format_macros.h"
1165dafa8344c8c018e346dd331a7782081a896239Sean Callanan#include "base/run_loop.h"
1265dafa8344c8c018e346dd331a7782081a896239Sean Callanan#include "base/thread_task_runner_handle.h"
1365dafa8344c8c018e346dd331a7782081a896239Sean Callanan#include "chrome/browser/sync_file_system/drive_backend/drive_backend_constants.h"
1465dafa8344c8c018e346dd331a7782081a896239Sean Callanan#include "chrome/browser/sync_file_system/drive_backend/fake_drive_service_helper.h"
1565dafa8344c8c018e346dd331a7782081a896239Sean Callanan#include "chrome/browser/sync_file_system/drive_backend/metadata_database.h"
1665dafa8344c8c018e346dd331a7782081a896239Sean Callanan#include "chrome/browser/sync_file_system/drive_backend/register_app_task.h"
1765dafa8344c8c018e346dd331a7782081a896239Sean Callanan#include "chrome/browser/sync_file_system/drive_backend/sync_engine_context.h"
1865dafa8344c8c018e346dd331a7782081a896239Sean Callanan#include "chrome/browser/sync_file_system/drive_backend/sync_engine_initializer.h"
1965dafa8344c8c018e346dd331a7782081a896239Sean Callanan#include "chrome/browser/sync_file_system/drive_backend/sync_task_manager.h"
2065dafa8344c8c018e346dd331a7782081a896239Sean Callanan#include "chrome/browser/sync_file_system/sync_file_system_test_util.h"
2165dafa8344c8c018e346dd331a7782081a896239Sean Callanan#include "content/public/test/test_browser_thread_bundle.h"
2265dafa8344c8c018e346dd331a7782081a896239Sean Callanan#include "google_apis/drive/drive_api_parser.h"
2365dafa8344c8c018e346dd331a7782081a896239Sean Callanan#include "testing/gtest/include/gtest/gtest.h"
2428195f9e55173cd06c3c5f9e69cefeb1d03cc129Sean Callanan#include "third_party/leveldatabase/src/helpers/memenv/memenv.h"
2565dafa8344c8c018e346dd331a7782081a896239Sean Callanan#include "third_party/leveldatabase/src/include/leveldb/env.h"
2665dafa8344c8c018e346dd331a7782081a896239Sean Callanan
27d168690e51f9020b926d3d0d57dc9a2cfb2095a8Jim Inghamnamespace sync_file_system {
28c0492741dc594cd02736521048fe0d8f4c9a0a61Sean Callanannamespace drive_backend {
290f0551e67d8ea8d63ace5456f7d42d951827b017Sean Callanan
30a91dd997b1e809c67901b7ac481942cacae19150Sean Callanannamespace {
31dd1dcfdbad297562951169ad621f895daf32b382Sean Callanan
3265dafa8344c8c018e346dd331a7782081a896239Sean Callananconst char kAppID[] = "app_id";
3365dafa8344c8c018e346dd331a7782081a896239Sean Callananconst char kUnregisteredAppID[] = "app_id unregistered";
3465dafa8344c8c018e346dd331a7782081a896239Sean Callanan
3565dafa8344c8c018e346dd331a7782081a896239Sean Callanan}  // namespace
3665dafa8344c8c018e346dd331a7782081a896239Sean Callanan
3765dafa8344c8c018e346dd331a7782081a896239Sean Callananclass ListChangesTaskTest : public testing::Test {
3865dafa8344c8c018e346dd331a7782081a896239Sean Callanan public:
3965dafa8344c8c018e346dd331a7782081a896239Sean Callanan  ListChangesTaskTest() {}
4065dafa8344c8c018e346dd331a7782081a896239Sean Callanan  virtual ~ListChangesTaskTest() {}
4165dafa8344c8c018e346dd331a7782081a896239Sean Callanan
4265dafa8344c8c018e346dd331a7782081a896239Sean Callanan  virtual void SetUp() OVERRIDE {
4365dafa8344c8c018e346dd331a7782081a896239Sean Callanan    ASSERT_TRUE(database_dir_.CreateUniqueTempDir());
4465dafa8344c8c018e346dd331a7782081a896239Sean Callanan    in_memory_env_.reset(leveldb::NewMemEnv(leveldb::Env::Default()));
4565dafa8344c8c018e346dd331a7782081a896239Sean Callanan
4665dafa8344c8c018e346dd331a7782081a896239Sean Callanan    scoped_ptr<drive::FakeDriveService>
4765dafa8344c8c018e346dd331a7782081a896239Sean Callanan        fake_drive_service(new drive::FakeDriveService);
4865dafa8344c8c018e346dd331a7782081a896239Sean Callanan
4965dafa8344c8c018e346dd331a7782081a896239Sean Callanan    scoped_ptr<drive::DriveUploaderInterface>
50102b2c2681c9a830afe25bfea35557421905e42cGreg Clayton        drive_uploader(new drive::DriveUploader(
51daa6efe771f5f068e29328a774fa5bf2358ce14aSean Callanan            fake_drive_service.get(),
5234507e41794909465d168af4048ebd07ee7819e8Greg Clayton            base::ThreadTaskRunnerHandle::Get()));
5365dafa8344c8c018e346dd331a7782081a896239Sean Callanan
5465dafa8344c8c018e346dd331a7782081a896239Sean Callanan    fake_drive_service_helper_.reset(
5577e9394f0af653ac0842066a9c7766a28d6c6b94Sean Callanan        new FakeDriveServiceHelper(fake_drive_service.get(),
5677e9394f0af653ac0842066a9c7766a28d6c6b94Sean Callanan                                   drive_uploader.get(),
5777e9394f0af653ac0842066a9c7766a28d6c6b94Sean Callanan                                   kSyncRootFolderTitle));
5877e9394f0af653ac0842066a9c7766a28d6c6b94Sean Callanan
5977e9394f0af653ac0842066a9c7766a28d6c6b94Sean Callanan    sync_task_manager_.reset(new SyncTaskManager(
6077e9394f0af653ac0842066a9c7766a28d6c6b94Sean Callanan        base::WeakPtr<SyncTaskManager::Client>(),
6177e9394f0af653ac0842066a9c7766a28d6c6b94Sean Callanan        10 /* maximum_background_task */,
625b658cc411e8810073f7f633f3c5d6f177cb3dcdSean Callanan        base::ThreadTaskRunnerHandle::Get()));
635b658cc411e8810073f7f633f3c5d6f177cb3dcdSean Callanan    sync_task_manager_->Initialize(SYNC_STATUS_OK);
645b658cc411e8810073f7f633f3c5d6f177cb3dcdSean Callanan
655b658cc411e8810073f7f633f3c5d6f177cb3dcdSean Callanan    context_.reset(new SyncEngineContext(
665b658cc411e8810073f7f633f3c5d6f177cb3dcdSean Callanan        fake_drive_service.PassAs<drive::DriveServiceInterface>(),
67daa6efe771f5f068e29328a774fa5bf2358ce14aSean Callanan        drive_uploader.Pass(),
68daa6efe771f5f068e29328a774fa5bf2358ce14aSean Callanan        NULL,
69daa6efe771f5f068e29328a774fa5bf2358ce14aSean Callanan        base::ThreadTaskRunnerHandle::Get(),
70daa6efe771f5f068e29328a774fa5bf2358ce14aSean Callanan        base::ThreadTaskRunnerHandle::Get()));
7165dafa8344c8c018e346dd331a7782081a896239Sean Callanan
7277e9394f0af653ac0842066a9c7766a28d6c6b94Sean Callanan    SetUpRemoteFolders();
735b658cc411e8810073f7f633f3c5d6f177cb3dcdSean Callanan
74daa6efe771f5f068e29328a774fa5bf2358ce14aSean Callanan    InitializeMetadataDatabase();
75daa6efe771f5f068e29328a774fa5bf2358ce14aSean Callanan    RegisterApp(kAppID);
7665dafa8344c8c018e346dd331a7782081a896239Sean Callanan  }
7765dafa8344c8c018e346dd331a7782081a896239Sean Callanan
78830a903fd7cd4595cf52e1630b6491930ada0400Sean Callanan  virtual void TearDown() OVERRIDE {
79830a903fd7cd4595cf52e1630b6491930ada0400Sean Callanan    sync_task_manager_.reset();
806a5aa8ab240a13f397e3e09f2ca1ea3f16b451c2Greg Clayton    context_.reset();
816a5aa8ab240a13f397e3e09f2ca1ea3f16b451c2Greg Clayton    base::RunLoop().RunUntilIdle();
82830a903fd7cd4595cf52e1630b6491930ada0400Sean Callanan  }
83830a903fd7cd4595cf52e1630b6491930ada0400Sean Callanan
8465dafa8344c8c018e346dd331a7782081a896239Sean Callanan protected:
8565dafa8344c8c018e346dd331a7782081a896239Sean Callanan  SyncStatusCode RunTask(scoped_ptr<SyncTask> sync_task) {
8665dafa8344c8c018e346dd331a7782081a896239Sean Callanan    SyncStatusCode status = SYNC_STATUS_UNKNOWN;
8765dafa8344c8c018e346dd331a7782081a896239Sean Callanan    sync_task_manager_->ScheduleSyncTask(
8865dafa8344c8c018e346dd331a7782081a896239Sean Callanan        FROM_HERE, sync_task.Pass(),
8965dafa8344c8c018e346dd331a7782081a896239Sean Callanan        SyncTaskManager::PRIORITY_MED,
9065dafa8344c8c018e346dd331a7782081a896239Sean Callanan        CreateResultReceiver(&status));
9165dafa8344c8c018e346dd331a7782081a896239Sean Callanan    base::RunLoop().RunUntilIdle();
9265dafa8344c8c018e346dd331a7782081a896239Sean Callanan    return status;
9365dafa8344c8c018e346dd331a7782081a896239Sean Callanan  }
9447dc457387b690c5e4df1c0c7dd8c4337b92e630Sean Callanan
9547dc457387b690c5e4df1c0c7dd8c4337b92e630Sean Callanan  size_t CountDirtyTracker() {
9647dc457387b690c5e4df1c0c7dd8c4337b92e630Sean Callanan    return context_->GetMetadataDatabase()->CountDirtyTracker();
976a92553d2cc2b7a3b853fcb6da101583435c2dc0Sean Callanan  }
986a92553d2cc2b7a3b853fcb6da101583435c2dc0Sean Callanan
996a92553d2cc2b7a3b853fcb6da101583435c2dc0Sean Callanan  FakeDriveServiceHelper* fake_drive_service_helper() {
1006a92553d2cc2b7a3b853fcb6da101583435c2dc0Sean Callanan    return fake_drive_service_helper_.get();
10165dafa8344c8c018e346dd331a7782081a896239Sean Callanan  }
10265dafa8344c8c018e346dd331a7782081a896239Sean Callanan
10365dafa8344c8c018e346dd331a7782081a896239Sean Callanan  void SetUpChangesInFolder(const std::string& folder_id) {
10465dafa8344c8c018e346dd331a7782081a896239Sean Callanan    std::string new_file_id;
105a91dd997b1e809c67901b7ac481942cacae19150Sean Callanan    ASSERT_EQ(google_apis::HTTP_SUCCESS,
106a91dd997b1e809c67901b7ac481942cacae19150Sean Callanan              fake_drive_service_helper()->AddFile(
10747dc457387b690c5e4df1c0c7dd8c4337b92e630Sean Callanan                  folder_id, "new file", "file contents", &new_file_id));
108696cf5f6f2a77b87a4b06cdf0f697749b494665fSean Callanan    std::string same_name_file_id;
10965dafa8344c8c018e346dd331a7782081a896239Sean Callanan    ASSERT_EQ(google_apis::HTTP_SUCCESS,
1100f0551e67d8ea8d63ace5456f7d42d951827b017Sean Callanan              fake_drive_service_helper()->AddFile(
1110f0551e67d8ea8d63ace5456f7d42d951827b017Sean Callanan                  folder_id, "new file", "file contents",
1120f0551e67d8ea8d63ace5456f7d42d951827b017Sean Callanan                  &same_name_file_id));
1130f0551e67d8ea8d63ace5456f7d42d951827b017Sean Callanan
1140f0551e67d8ea8d63ace5456f7d42d951827b017Sean Callanan    std::string new_folder_id;
1150f0551e67d8ea8d63ace5456f7d42d951827b017Sean Callanan    ASSERT_EQ(google_apis::HTTP_CREATED,
11628195f9e55173cd06c3c5f9e69cefeb1d03cc129Sean Callanan              fake_drive_service_helper()->AddFolder(
11728195f9e55173cd06c3c5f9e69cefeb1d03cc129Sean Callanan                  folder_id, "new folder", &new_folder_id));
11828195f9e55173cd06c3c5f9e69cefeb1d03cc129Sean Callanan
11965dafa8344c8c018e346dd331a7782081a896239Sean Callanan    std::string modified_file_id;
12065dafa8344c8c018e346dd331a7782081a896239Sean Callanan    ASSERT_EQ(google_apis::HTTP_SUCCESS,
12165dafa8344c8c018e346dd331a7782081a896239Sean Callanan              fake_drive_service_helper()->AddFile(
12265dafa8344c8c018e346dd331a7782081a896239Sean Callanan                  folder_id, "modified file", "file content",
12365dafa8344c8c018e346dd331a7782081a896239Sean Callanan                  &modified_file_id));
12465dafa8344c8c018e346dd331a7782081a896239Sean Callanan    ASSERT_EQ(google_apis::HTTP_SUCCESS,
12565dafa8344c8c018e346dd331a7782081a896239Sean Callanan              fake_drive_service_helper()->UpdateFile(
12665dafa8344c8c018e346dd331a7782081a896239Sean Callanan                  modified_file_id, "modified file content"));
12765dafa8344c8c018e346dd331a7782081a896239Sean Callanan
12865dafa8344c8c018e346dd331a7782081a896239Sean Callanan
129b794020ffbd6473c59a6e98be044df50abf7fc30Jim Ingham    std::string deleted_file_id;
130ea9d4267a629a1c732eb0400fa0288cee31ad49dJim Ingham    ASSERT_EQ(google_apis::HTTP_SUCCESS,
131ea9d4267a629a1c732eb0400fa0288cee31ad49dJim Ingham              fake_drive_service_helper()->AddFile(
132ea9d4267a629a1c732eb0400fa0288cee31ad49dJim Ingham                  folder_id, "trashed file", "file content",
1336a92553d2cc2b7a3b853fcb6da101583435c2dc0Sean Callanan                  &deleted_file_id));
134b794020ffbd6473c59a6e98be044df50abf7fc30Jim Ingham    ASSERT_EQ(google_apis::HTTP_NO_CONTENT,
135b794020ffbd6473c59a6e98be044df50abf7fc30Jim Ingham              fake_drive_service_helper()->DeleteResource(deleted_file_id));
136b794020ffbd6473c59a6e98be044df50abf7fc30Jim Ingham  }
137360f53f3c216ee4fb433da0a367168785328a856Jim Ingham
138360f53f3c216ee4fb433da0a367168785328a856Jim Ingham  std::string root_resource_id() {
139360f53f3c216ee4fb433da0a367168785328a856Jim Ingham    return context_->GetDriveService()->GetRootResourceId();
140360f53f3c216ee4fb433da0a367168785328a856Jim Ingham  }
141360f53f3c216ee4fb433da0a367168785328a856Jim Ingham
142360f53f3c216ee4fb433da0a367168785328a856Jim Ingham  std::string app_root_folder_id() {
143ea9d4267a629a1c732eb0400fa0288cee31ad49dJim Ingham    return app_root_folder_id_;
14465dafa8344c8c018e346dd331a7782081a896239Sean Callanan  }
14565dafa8344c8c018e346dd331a7782081a896239Sean Callanan
14665dafa8344c8c018e346dd331a7782081a896239Sean Callanan  std::string unregistered_app_root_folder_id() {
14765dafa8344c8c018e346dd331a7782081a896239Sean Callanan    return unregistered_app_root_folder_id_;
14847beabb1386be44e3f90dbc30a0b22c23b93a4dcJim Ingham  }
14947beabb1386be44e3f90dbc30a0b22c23b93a4dcJim Ingham
15047beabb1386be44e3f90dbc30a0b22c23b93a4dcJim Ingham  SyncEngineContext* GetSyncEngineContext() {
15147beabb1386be44e3f90dbc30a0b22c23b93a4dcJim Ingham    return context_.get();
15247beabb1386be44e3f90dbc30a0b22c23b93a4dcJim Ingham  }
15347beabb1386be44e3f90dbc30a0b22c23b93a4dcJim Ingham
15447beabb1386be44e3f90dbc30a0b22c23b93a4dcJim Ingham private:
15547beabb1386be44e3f90dbc30a0b22c23b93a4dcJim Ingham  void SetUpRemoteFolders() {
15647beabb1386be44e3f90dbc30a0b22c23b93a4dcJim Ingham    ASSERT_EQ(google_apis::HTTP_CREATED,
15747beabb1386be44e3f90dbc30a0b22c23b93a4dcJim Ingham              fake_drive_service_helper_->AddOrphanedFolder(
1586cca9695637b27bd583eaae310d5c09dede7cc49Enrico Granata                  kSyncRootFolderTitle, &sync_root_folder_id_));
15965dafa8344c8c018e346dd331a7782081a896239Sean Callanan    ASSERT_EQ(google_apis::HTTP_CREATED,
160360f53f3c216ee4fb433da0a367168785328a856Jim Ingham              fake_drive_service_helper_->AddFolder(
16165dafa8344c8c018e346dd331a7782081a896239Sean Callanan                  sync_root_folder_id_, kAppID, &app_root_folder_id_));
162b344843f75ef893762c93fd0a22d2d45712ce74dGreg Clayton    ASSERT_EQ(google_apis::HTTP_CREATED,
16365dafa8344c8c018e346dd331a7782081a896239Sean Callanan              fake_drive_service_helper_->AddFolder(
16465dafa8344c8c018e346dd331a7782081a896239Sean Callanan                  sync_root_folder_id_, kUnregisteredAppID,
165b794020ffbd6473c59a6e98be044df50abf7fc30Jim Ingham                  &unregistered_app_root_folder_id_));
166b794020ffbd6473c59a6e98be044df50abf7fc30Jim Ingham  }
167360f53f3c216ee4fb433da0a367168785328a856Jim Ingham
1686cca9695637b27bd583eaae310d5c09dede7cc49Enrico Granata  void InitializeMetadataDatabase() {
16934507e41794909465d168af4048ebd07ee7819e8Greg Clayton    SyncStatusCode status = SYNC_STATUS_UNKNOWN;
17034507e41794909465d168af4048ebd07ee7819e8Greg Clayton    SyncEngineInitializer* initializer =
171d168690e51f9020b926d3d0d57dc9a2cfb2095a8Jim Ingham        new SyncEngineInitializer(context_.get(),
172d168690e51f9020b926d3d0d57dc9a2cfb2095a8Jim Ingham                                  database_dir_.path(),
173d168690e51f9020b926d3d0d57dc9a2cfb2095a8Jim Ingham                                  in_memory_env_.get());
174ab06af92020fd4a21eaa5daac3853596b9c45398Sean Callanan
1756a92553d2cc2b7a3b853fcb6da101583435c2dc0Sean Callanan    sync_task_manager_->ScheduleSyncTask(
1760ddf806dd9e71637846bf0ad46e1b2df7d02cbceSean Callanan        FROM_HERE, scoped_ptr<SyncTask>(initializer),
1770ddf806dd9e71637846bf0ad46e1b2df7d02cbceSean Callanan        SyncTaskManager::PRIORITY_MED,
1780ddf806dd9e71637846bf0ad46e1b2df7d02cbceSean Callanan        base::Bind(&ListChangesTaskTest::DidInitializeMetadataDatabase,
1790ddf806dd9e71637846bf0ad46e1b2df7d02cbceSean Callanan                   base::Unretained(this), initializer, &status));
1800ddf806dd9e71637846bf0ad46e1b2df7d02cbceSean Callanan
1810ddf806dd9e71637846bf0ad46e1b2df7d02cbceSean Callanan    base::RunLoop().RunUntilIdle();
1820ddf806dd9e71637846bf0ad46e1b2df7d02cbceSean Callanan
1830ddf806dd9e71637846bf0ad46e1b2df7d02cbceSean Callanan    EXPECT_EQ(SYNC_STATUS_OK, status);
1840ddf806dd9e71637846bf0ad46e1b2df7d02cbceSean Callanan  }
1850ddf806dd9e71637846bf0ad46e1b2df7d02cbceSean Callanan
1860ddf806dd9e71637846bf0ad46e1b2df7d02cbceSean Callanan  void DidInitializeMetadataDatabase(SyncEngineInitializer* initializer,
1870ddf806dd9e71637846bf0ad46e1b2df7d02cbceSean Callanan                                     SyncStatusCode* status_out,
1880ddf806dd9e71637846bf0ad46e1b2df7d02cbceSean Callanan                                     SyncStatusCode status) {
1890ddf806dd9e71637846bf0ad46e1b2df7d02cbceSean Callanan    context_->SetMetadataDatabase(initializer->PassMetadataDatabase());
1900ddf806dd9e71637846bf0ad46e1b2df7d02cbceSean Callanan    *status_out = status;
1910ddf806dd9e71637846bf0ad46e1b2df7d02cbceSean Callanan  }
1920ddf806dd9e71637846bf0ad46e1b2df7d02cbceSean Callanan
1930ddf806dd9e71637846bf0ad46e1b2df7d02cbceSean Callanan  void RegisterApp(const std::string& app_id) {
1940ddf806dd9e71637846bf0ad46e1b2df7d02cbceSean Callanan    EXPECT_EQ(SYNC_STATUS_OK, RunTask(scoped_ptr<SyncTask>(
1950ddf806dd9e71637846bf0ad46e1b2df7d02cbceSean Callanan        new RegisterAppTask(context_.get(), app_id))));
1960ddf806dd9e71637846bf0ad46e1b2df7d02cbceSean Callanan  }
1970ddf806dd9e71637846bf0ad46e1b2df7d02cbceSean Callanan
1980ddf806dd9e71637846bf0ad46e1b2df7d02cbceSean Callanan  scoped_ptr<leveldb::Env> in_memory_env_;
199d168690e51f9020b926d3d0d57dc9a2cfb2095a8Jim Ingham
200d168690e51f9020b926d3d0d57dc9a2cfb2095a8Jim Ingham  std::string sync_root_folder_id_;
201ab06af92020fd4a21eaa5daac3853596b9c45398Sean Callanan  std::string app_root_folder_id_;
2020ddf806dd9e71637846bf0ad46e1b2df7d02cbceSean Callanan  std::string unregistered_app_root_folder_id_;
203cdc3ea5398f251d3eca482595f103b1874e51538Sean Callanan
204cdc3ea5398f251d3eca482595f103b1874e51538Sean Callanan  content::TestBrowserThreadBundle browser_threads_;
20565dafa8344c8c018e346dd331a7782081a896239Sean Callanan  base::ScopedTempDir database_dir_;
20665dafa8344c8c018e346dd331a7782081a896239Sean Callanan
20765dafa8344c8c018e346dd331a7782081a896239Sean Callanan  scoped_ptr<SyncEngineContext> context_;
20865dafa8344c8c018e346dd331a7782081a896239Sean Callanan  scoped_ptr<FakeDriveServiceHelper> fake_drive_service_helper_;
20965dafa8344c8c018e346dd331a7782081a896239Sean Callanan
21065dafa8344c8c018e346dd331a7782081a896239Sean Callanan  scoped_ptr<SyncTaskManager> sync_task_manager_;
21165dafa8344c8c018e346dd331a7782081a896239Sean Callanan
21265dafa8344c8c018e346dd331a7782081a896239Sean Callanan  DISALLOW_COPY_AND_ASSIGN(ListChangesTaskTest);
21365dafa8344c8c018e346dd331a7782081a896239Sean Callanan};
21465dafa8344c8c018e346dd331a7782081a896239Sean Callanan
21565dafa8344c8c018e346dd331a7782081a896239Sean CallananTEST_F(ListChangesTaskTest, NoChange) {
21665dafa8344c8c018e346dd331a7782081a896239Sean Callanan  size_t num_dirty_trackers = CountDirtyTracker();
217d168690e51f9020b926d3d0d57dc9a2cfb2095a8Jim Ingham
218d168690e51f9020b926d3d0d57dc9a2cfb2095a8Jim Ingham  EXPECT_EQ(SYNC_STATUS_NO_CHANGE_TO_SYNC, RunTask(
219d168690e51f9020b926d3d0d57dc9a2cfb2095a8Jim Ingham      scoped_ptr<SyncTask>(new ListChangesTask(GetSyncEngineContext()))));
220d168690e51f9020b926d3d0d57dc9a2cfb2095a8Jim Ingham
221d168690e51f9020b926d3d0d57dc9a2cfb2095a8Jim Ingham  EXPECT_EQ(num_dirty_trackers, CountDirtyTracker());
222d168690e51f9020b926d3d0d57dc9a2cfb2095a8Jim Ingham}
223d168690e51f9020b926d3d0d57dc9a2cfb2095a8Jim Ingham
224d168690e51f9020b926d3d0d57dc9a2cfb2095a8Jim InghamTEST_F(ListChangesTaskTest, UnrelatedChange) {
225d168690e51f9020b926d3d0d57dc9a2cfb2095a8Jim Ingham  size_t num_dirty_trackers = CountDirtyTracker();
22665dafa8344c8c018e346dd331a7782081a896239Sean Callanan
22765dafa8344c8c018e346dd331a7782081a896239Sean Callanan  SetUpChangesInFolder(root_resource_id());
22865dafa8344c8c018e346dd331a7782081a896239Sean Callanan  SetUpChangesInFolder(unregistered_app_root_folder_id());
22965dafa8344c8c018e346dd331a7782081a896239Sean Callanan
23065dafa8344c8c018e346dd331a7782081a896239Sean Callanan  EXPECT_EQ(SYNC_STATUS_OK, RunTask(
23165dafa8344c8c018e346dd331a7782081a896239Sean Callanan      scoped_ptr<SyncTask>(new ListChangesTask(GetSyncEngineContext()))));
23265dafa8344c8c018e346dd331a7782081a896239Sean Callanan
2338de27c761a22187ef63fb60000894be163e7285fGreg Clayton  EXPECT_EQ(num_dirty_trackers, CountDirtyTracker());
23465dafa8344c8c018e346dd331a7782081a896239Sean Callanan}
23565dafa8344c8c018e346dd331a7782081a896239Sean Callanan
23665dafa8344c8c018e346dd331a7782081a896239Sean CallananTEST_F(ListChangesTaskTest, UnderTrackedFolder) {
2375b658cc411e8810073f7f633f3c5d6f177cb3dcdSean Callanan  size_t num_dirty_trackers = CountDirtyTracker();
2385b658cc411e8810073f7f633f3c5d6f177cb3dcdSean Callanan
2395b658cc411e8810073f7f633f3c5d6f177cb3dcdSean Callanan  SetUpChangesInFolder(app_root_folder_id());
2405b658cc411e8810073f7f633f3c5d6f177cb3dcdSean Callanan
2415b658cc411e8810073f7f633f3c5d6f177cb3dcdSean Callanan  EXPECT_EQ(SYNC_STATUS_OK, RunTask(
2425b658cc411e8810073f7f633f3c5d6f177cb3dcdSean Callanan      scoped_ptr<SyncTask>(new ListChangesTask(GetSyncEngineContext()))));
2435b658cc411e8810073f7f633f3c5d6f177cb3dcdSean Callanan
2445b658cc411e8810073f7f633f3c5d6f177cb3dcdSean Callanan  EXPECT_EQ(num_dirty_trackers + 4, CountDirtyTracker());
2455b658cc411e8810073f7f633f3c5d6f177cb3dcdSean Callanan}
2465b658cc411e8810073f7f633f3c5d6f177cb3dcdSean Callanan
24765dafa8344c8c018e346dd331a7782081a896239Sean Callanan}  // namespace drive_backend
24865dafa8344c8c018e346dd331a7782081a896239Sean Callanan}  // namespace sync_file_system
24965dafa8344c8c018e346dd331a7782081a896239Sean Callanan