Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(50)

Side by Side Diff: chrome/browser/chromeos/drive/file_system/copy_operation_unittest.cc

Issue 16628003: drive: Remove FileCacheObserver::OnCacheCommitted (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix PinAndUnpin Created 7 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/chromeos/drive/file_system/copy_operation.h" 5 #include "chrome/browser/chromeos/drive/file_system/copy_operation.h"
6 6
7 #include "base/file_util.h" 7 #include "base/file_util.h"
8 #include "chrome/browser/chromeos/drive/file_cache_observer.h" 8 #include "chrome/browser/chromeos/drive/file_cache_observer.h"
9 #include "chrome/browser/chromeos/drive/file_system/operation_test_base.h" 9 #include "chrome/browser/chromeos/drive/file_system/operation_test_base.h"
10 #include "chrome/browser/chromeos/drive/file_system_util.h" 10 #include "chrome/browser/chromeos/drive/file_system_util.h"
11 #include "chrome/browser/google_apis/fake_drive_service.h" 11 #include "chrome/browser/google_apis/fake_drive_service.h"
12 #include "chrome/browser/google_apis/test_util.h" 12 #include "chrome/browser/google_apis/test_util.h"
13 #include "testing/gtest/include/gtest/gtest.h" 13 #include "testing/gtest/include/gtest/gtest.h"
14 14
15 namespace drive { 15 namespace drive {
16 namespace file_system { 16 namespace file_system {
17 17
18 namespace {
19 class CacheCommitObserver : public internal::FileCacheObserver {
20 public:
21 virtual void OnCacheCommitted(const std::string& resource_id) OVERRIDE {
22 last_committed_resource_id_ = resource_id;
23 }
24 const std::string last_committed_resource_id() const {
25 return last_committed_resource_id_;
26 }
27
28 private:
29 std::string last_committed_resource_id_;
30 };
31
32 } // namespace
33
34 class CopyOperationTest : public OperationTestBase { 18 class CopyOperationTest : public OperationTestBase {
35 protected: 19 protected:
36 virtual void SetUp() OVERRIDE { 20 virtual void SetUp() OVERRIDE {
37 OperationTestBase::SetUp(); 21 OperationTestBase::SetUp();
38 operation_.reset(new CopyOperation(blocking_task_runner(), 22 operation_.reset(new CopyOperation(blocking_task_runner(),
39 observer(), 23 observer(),
40 scheduler(), 24 scheduler(),
41 metadata(), 25 metadata(),
42 cache(), 26 cache(),
43 fake_service())); 27 fake_service()));
44 } 28 }
45 29
46 scoped_ptr<CopyOperation> operation_; 30 scoped_ptr<CopyOperation> operation_;
47 }; 31 };
48 32
49 TEST_F(CopyOperationTest, TransferFileFromLocalToRemote_RegularFile) { 33 TEST_F(CopyOperationTest, TransferFileFromLocalToRemote_RegularFile) {
50 const base::FilePath local_src_path = temp_dir().AppendASCII("local.txt"); 34 const base::FilePath local_src_path = temp_dir().AppendASCII("local.txt");
51 const base::FilePath remote_dest_path( 35 const base::FilePath remote_dest_path(
52 FILE_PATH_LITERAL("drive/root/remote.txt")); 36 FILE_PATH_LITERAL("drive/root/remote.txt"));
53 37
54 // Prepare a local file. 38 // Prepare a local file.
55 ASSERT_TRUE( 39 ASSERT_TRUE(
56 google_apis::test_util::WriteStringToFile(local_src_path, "hello")); 40 google_apis::test_util::WriteStringToFile(local_src_path, "hello"));
57 // Confirm that the remote file does not exist. 41 // Confirm that the remote file does not exist.
58 ResourceEntry entry; 42 ResourceEntry entry;
59 ASSERT_EQ(FILE_ERROR_NOT_FOUND, 43 ASSERT_EQ(FILE_ERROR_NOT_FOUND,
60 GetLocalResourceEntry(remote_dest_path, &entry)); 44 GetLocalResourceEntry(remote_dest_path, &entry));
61 45
62 CacheCommitObserver cache_observer;
63 cache()->AddObserver(&cache_observer);
64
65 // Transfer the local file to Drive. 46 // Transfer the local file to Drive.
66 FileError error = FILE_ERROR_FAILED; 47 FileError error = FILE_ERROR_FAILED;
67 operation_->TransferFileFromLocalToRemote( 48 operation_->TransferFileFromLocalToRemote(
68 local_src_path, 49 local_src_path,
69 remote_dest_path, 50 remote_dest_path,
70 google_apis::test_util::CreateCopyResultCallback(&error)); 51 google_apis::test_util::CreateCopyResultCallback(&error));
71 google_apis::test_util::RunBlockingPoolTask(); 52 google_apis::test_util::RunBlockingPoolTask();
72 EXPECT_EQ(FILE_ERROR_OK, error); 53 EXPECT_EQ(FILE_ERROR_OK, error);
73 54
74 // What TransferFileFromLocalToRemote does is to store the local file in 55 // TransferFileFromLocalToRemote stores a copy of the local file in the cache,
75 // the Drive file cache, and mark it as dirty+committed. Here we test that 56 // marks it dirty and requests the observer to upload the file.
76 // the "cache committed" event is indeed fired as a result of this test case.
77 //
78 // In the production environment, SyncClient listens this event and uploads
79 // the file to the remote server in background. This part should be tested in
80 // sync_client_unittest.cc
81 EXPECT_EQ(FILE_ERROR_OK, GetLocalResourceEntry(remote_dest_path, &entry)); 57 EXPECT_EQ(FILE_ERROR_OK, GetLocalResourceEntry(remote_dest_path, &entry));
82 EXPECT_FALSE(cache_observer.last_committed_resource_id().empty()); 58 EXPECT_EQ(1U, observer()->upload_needed_resource_ids().count(
83 EXPECT_EQ(entry.resource_id(), cache_observer.last_committed_resource_id()); 59 entry.resource_id()));
60 FileCacheEntry cache_entry;
61 bool found = false;
62 cache()->GetCacheEntryOnUIThread(
63 entry.resource_id(), std::string(),
64 google_apis::test_util::CreateCopyResultCallback(&found, &cache_entry));
65 google_apis::test_util::RunBlockingPoolTask();
66 EXPECT_TRUE(found);
67 EXPECT_TRUE(cache_entry.is_present());
68 EXPECT_TRUE(cache_entry.is_dirty());
84 69
85 EXPECT_EQ(1U, observer()->get_changed_paths().size()); 70 EXPECT_EQ(1U, observer()->get_changed_paths().size());
86 EXPECT_TRUE(observer()->get_changed_paths().count( 71 EXPECT_TRUE(observer()->get_changed_paths().count(
87 remote_dest_path.DirName())); 72 remote_dest_path.DirName()));
88 } 73 }
89 74
90 TEST_F(CopyOperationTest, TransferFileFromLocalToRemote_HostedDocument) { 75 TEST_F(CopyOperationTest, TransferFileFromLocalToRemote_HostedDocument) {
91 const base::FilePath local_src_path = temp_dir().AppendASCII("local.gdoc"); 76 const base::FilePath local_src_path = temp_dir().AppendASCII("local.gdoc");
92 const base::FilePath remote_dest_path(FILE_PATH_LITERAL( 77 const base::FilePath remote_dest_path(FILE_PATH_LITERAL(
93 "drive/root/Directory 1/Document 1 excludeDir-test.gdoc")); 78 "drive/root/Directory 1/Document 1 excludeDir-test.gdoc"));
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after
244 google_apis::test_util::RunBlockingPoolTask(); 229 google_apis::test_util::RunBlockingPoolTask();
245 EXPECT_EQ(FILE_ERROR_NOT_A_DIRECTORY, error); 230 EXPECT_EQ(FILE_ERROR_NOT_A_DIRECTORY, error);
246 231
247 EXPECT_EQ(FILE_ERROR_OK, GetLocalResourceEntry(src_path, &entry)); 232 EXPECT_EQ(FILE_ERROR_OK, GetLocalResourceEntry(src_path, &entry));
248 EXPECT_EQ(FILE_ERROR_NOT_FOUND, GetLocalResourceEntry(dest_path, &entry)); 233 EXPECT_EQ(FILE_ERROR_NOT_FOUND, GetLocalResourceEntry(dest_path, &entry));
249 EXPECT_TRUE(observer()->get_changed_paths().empty()); 234 EXPECT_TRUE(observer()->get_changed_paths().empty());
250 } 235 }
251 236
252 } // namespace file_system 237 } // namespace file_system
253 } // namespace drive 238 } // namespace drive
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698