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.
5 #include "chrome/browser/chromeos/drive/file_system/move_operation.h"
7 #include "chrome/browser/chromeos/drive/file_system/operation_test_base.h"
8 #include "google_apis/drive/test_util.h"
9 #include "testing/gtest/include/gtest/gtest.h"
12 namespace file_system {
14 class MoveOperationTest : public OperationTestBase {
16 virtual void SetUp() OVERRIDE {
17 OperationTestBase::SetUp();
18 operation_.reset(new MoveOperation(blocking_task_runner(),
23 scoped_ptr<MoveOperation> operation_;
26 TEST_F(MoveOperationTest, MoveFileInSameDirectory) {
27 const base::FilePath src_path(
28 FILE_PATH_LITERAL("drive/root/Directory 1/SubDirectory File 1.txt"));
29 const base::FilePath dest_path(
30 FILE_PATH_LITERAL("drive/root/Directory 1/Test.log"));
32 ResourceEntry src_entry, dest_entry;
33 ASSERT_EQ(FILE_ERROR_OK, GetLocalResourceEntry(src_path, &src_entry));
34 ASSERT_EQ(FILE_ERROR_NOT_FOUND,
35 GetLocalResourceEntry(dest_path, &dest_entry));
37 FileError error = FILE_ERROR_FAILED;
38 operation_->Move(src_path,
40 google_apis::test_util::CreateCopyResultCallback(&error));
41 test_util::RunBlockingPoolTask();
42 EXPECT_EQ(FILE_ERROR_OK, error);
44 EXPECT_EQ(FILE_ERROR_OK, GetLocalResourceEntry(dest_path, &dest_entry));
45 EXPECT_EQ(src_entry.local_id(), dest_entry.local_id());
46 EXPECT_EQ(ResourceEntry::DIRTY, dest_entry.metadata_edit_state());
47 EXPECT_EQ(FILE_ERROR_NOT_FOUND, GetLocalResourceEntry(src_path, &src_entry));
49 EXPECT_EQ(1U, observer()->get_changed_paths().size());
50 EXPECT_TRUE(observer()->get_changed_paths().count(src_path.DirName()));
52 EXPECT_EQ(1U, observer()->updated_local_ids().size());
53 EXPECT_TRUE(observer()->updated_local_ids().count(src_entry.local_id()));
56 TEST_F(MoveOperationTest, MoveFileFromRootToSubDirectory) {
57 base::FilePath src_path(FILE_PATH_LITERAL("drive/root/File 1.txt"));
58 base::FilePath dest_path(
59 FILE_PATH_LITERAL("drive/root/Directory 1/Test.log"));
61 ResourceEntry src_entry, dest_entry;
62 ASSERT_EQ(FILE_ERROR_OK, GetLocalResourceEntry(src_path, &src_entry));
63 ASSERT_EQ(FILE_ERROR_NOT_FOUND,
64 GetLocalResourceEntry(dest_path, &dest_entry));
66 FileError error = FILE_ERROR_FAILED;
67 operation_->Move(src_path,
69 google_apis::test_util::CreateCopyResultCallback(&error));
70 test_util::RunBlockingPoolTask();
71 EXPECT_EQ(FILE_ERROR_OK, error);
73 EXPECT_EQ(FILE_ERROR_OK, GetLocalResourceEntry(dest_path, &dest_entry));
74 EXPECT_EQ(src_entry.local_id(), dest_entry.local_id());
75 EXPECT_EQ(ResourceEntry::DIRTY, dest_entry.metadata_edit_state());
76 EXPECT_EQ(FILE_ERROR_NOT_FOUND, GetLocalResourceEntry(src_path, &src_entry));
78 EXPECT_EQ(2U, observer()->get_changed_paths().size());
79 EXPECT_TRUE(observer()->get_changed_paths().count(src_path.DirName()));
80 EXPECT_TRUE(observer()->get_changed_paths().count(dest_path.DirName()));
82 EXPECT_EQ(1U, observer()->updated_local_ids().size());
83 EXPECT_TRUE(observer()->updated_local_ids().count(src_entry.local_id()));
86 TEST_F(MoveOperationTest, MoveNotExistingFile) {
87 base::FilePath src_path(FILE_PATH_LITERAL("drive/root/Dummy file.txt"));
88 base::FilePath dest_path(FILE_PATH_LITERAL("drive/root/Test.log"));
90 FileError error = FILE_ERROR_OK;
91 operation_->Move(src_path,
93 google_apis::test_util::CreateCopyResultCallback(&error));
94 test_util::RunBlockingPoolTask();
95 EXPECT_EQ(FILE_ERROR_NOT_FOUND, error);
98 EXPECT_EQ(FILE_ERROR_NOT_FOUND, GetLocalResourceEntry(src_path, &entry));
99 EXPECT_EQ(FILE_ERROR_NOT_FOUND, GetLocalResourceEntry(dest_path, &entry));
102 TEST_F(MoveOperationTest, MoveFileToNonExistingDirectory) {
103 base::FilePath src_path(FILE_PATH_LITERAL("drive/root/File 1.txt"));
104 base::FilePath dest_path(FILE_PATH_LITERAL("drive/root/Dummy/Test.log"));
106 FileError error = FILE_ERROR_OK;
107 operation_->Move(src_path,
109 google_apis::test_util::CreateCopyResultCallback(&error));
110 test_util::RunBlockingPoolTask();
111 EXPECT_EQ(FILE_ERROR_NOT_FOUND, error);
114 EXPECT_EQ(FILE_ERROR_OK, GetLocalResourceEntry(src_path, &entry));
115 EXPECT_EQ(FILE_ERROR_NOT_FOUND, GetLocalResourceEntry(dest_path, &entry));
118 // Test the case where the parent of |dest_file_path| is a existing file,
120 TEST_F(MoveOperationTest, MoveFileToInvalidPath) {
121 base::FilePath src_path(FILE_PATH_LITERAL("drive/root/File 1.txt"));
122 base::FilePath dest_path(
123 FILE_PATH_LITERAL("drive/root/Duplicate Name.txt/Test.log"));
125 FileError error = FILE_ERROR_OK;
126 operation_->Move(src_path,
128 google_apis::test_util::CreateCopyResultCallback(&error));
129 test_util::RunBlockingPoolTask();
130 EXPECT_EQ(FILE_ERROR_NOT_A_DIRECTORY, error);
133 EXPECT_EQ(FILE_ERROR_OK, GetLocalResourceEntry(src_path, &entry));
134 EXPECT_EQ(FILE_ERROR_NOT_FOUND, GetLocalResourceEntry(dest_path, &entry));
137 } // namespace file_system