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

Unified Diff: chrome/browser/chromeos/gdata/gdata_file_system_unittest.cc

Issue 9582037: Make document service an interface (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Adding mock for DocumentsService Created 8 years, 9 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/chromeos/gdata/gdata_file_system_unittest.cc
diff --git a/chrome/browser/chromeos/gdata/gdata_file_system_unittest.cc b/chrome/browser/chromeos/gdata/gdata_file_system_unittest.cc
index dbdd76cb09093440b896892a3f7b628f655468d4..98037afdb6bc277cf2fa4d5cef1d81c6bfc1a6b5 100644
--- a/chrome/browser/chromeos/gdata/gdata_file_system_unittest.cc
+++ b/chrome/browser/chromeos/gdata/gdata_file_system_unittest.cc
@@ -8,6 +8,8 @@
#include "base/file_path.h"
#include "base/file_util.h"
#include "base/json/json_file_value_serializer.h"
+#include "base/memory/ref_counted.h"
+#include "base/memory/scoped_ptr.h"
#include "base/message_loop.h"
#include "base/path_service.h"
#include "base/string16.h"
@@ -15,6 +17,7 @@
#include "base/utf_string_conversions.h"
#include "base/values.h"
#include "chrome/browser/chromeos/gdata/gdata_file_system.h"
+#include "chrome/browser/chromeos/gdata/gdata_mock.h"
#include "chrome/browser/chromeos/gdata/gdata_parser.h"
#include "chrome/common/chrome_paths.h"
#include "chrome/test/base/testing_profile.h"
@@ -31,6 +34,8 @@ using base::Value;
using base::DictionaryValue;
using base::ListValue;
+#define FPL(x) FILE_PATH_LITERAL(x)
zel 2012/03/08 00:02:03 please avoid #define , especially those that are m
Greg Spencer (Chromium) 2012/03/08 01:10:39 I agree, but this is a fairly common thing to do i
satorux1 2012/03/08 01:48:37 I'm with zel. we already use FILE_PATH_LITERAL in
Greg Spencer (Chromium) 2012/03/08 19:06:35 Two against. It's outta there.
+
namespace gdata {
class GDataFileSystemTest : public testing::Test {
@@ -39,14 +44,27 @@ class GDataFileSystemTest : public testing::Test {
: ui_thread_(content::BrowserThread::UI, &message_loop_) {
}
- virtual void SetUp() {
+ virtual void SetUp() OVERRIDE {
+ callback_helper_ = new CallbackHelper;
profile_.reset(new TestingProfile);
file_system_ = GDataFileSystemFactory::GetForProfile(profile_.get());
+
+ // Allocate and keep a weak pointer to the mock.
+ mock_doc_service_ = new MockDocumentsService;
+ EXPECT_CALL(*mock_doc_service_, Initialize(profile_.get())).Times(1);
+
+ // Pass the service for the filesystem to own.
+ scoped_ptr<DocumentsServiceInterface> service(mock_doc_service_);
+ file_system_->ReplaceDocumentsService(service.Pass());
+ }
+
+ virtual void TearDown() OVERRIDE {
+ EXPECT_CALL(*mock_doc_service_, CancelAll()).Times(1);
}
// Loads test json file as root ("/gdata") element.
void LoadRootFeedDocument(const std::string& filename) {
- LoadSubdirFeedDocument(FilePath(FILE_PATH_LITERAL("gdata")), filename);
+ LoadSubdirFeedDocument(FilePath(FPL("gdata")), filename);
}
// Loads test json file as subdirectory content of |directory_path|.
@@ -139,10 +157,30 @@ class GDataFileSystemTest : public testing::Test {
return value;
}
+ class CallbackHelper
+ : public base::RefCountedThreadSafe<CallbackHelper> {
+ public:
+ CallbackHelper() : last_error_(base::PLATFORM_FILE_OK) {}
+ virtual ~CallbackHelper() {}
+ virtual void GetFileCallback(base::PlatformFileError error,
+ const FilePath& file_path) {
+ last_error_ = error;
+ download_path_ = file_path;
+ }
+ virtual void FileOperationCallback(base::PlatformFileError error) {
+ last_error_ = error;
+ }
+
+ base::PlatformFileError last_error_;
+ FilePath download_path_;
+ };
+
MessageLoopForUI message_loop_;
content::TestBrowserThread ui_thread_;
scoped_ptr<TestingProfile> profile_;
+ scoped_refptr<CallbackHelper> callback_helper_;
GDataFileSystem* file_system_;
+ MockDocumentsService* mock_doc_service_;
};
@@ -168,10 +206,10 @@ TEST_F(GDataFileSystemTest, SearchRootDirectory) {
new MockFindFileDelegate();
EXPECT_CALL(*mock_find_file_delegate.get(),
- OnDirectoryFound(FilePath(FILE_PATH_LITERAL("gdata")), _))
+ OnDirectoryFound(FilePath(FPL("gdata")), _))
.Times(1);
- file_system_->FindFileByPath(FilePath(FILE_PATH_LITERAL("gdata")),
+ file_system_->FindFileByPath(FilePath(FPL("gdata")),
mock_find_file_delegate);
}
@@ -181,13 +219,13 @@ TEST_F(GDataFileSystemTest, SearchExistingFile) {
new MockFindFileDelegate();
EXPECT_CALL(*mock_find_file_delegate.get(),
- OnEnterDirectory(FilePath(FILE_PATH_LITERAL("gdata")), _))
+ OnEnterDirectory(FilePath(FPL("gdata")), _))
.Times(1)
.WillOnce(Return(FindFileDelegate::FIND_FILE_CONTINUES));
EXPECT_CALL(*mock_find_file_delegate.get(), OnFileFound(_))
.Times(1);
- file_system_->FindFileByPath(FilePath(FILE_PATH_LITERAL("gdata/File 1.txt")),
+ file_system_->FindFileByPath(FilePath(FPL("gdata/File 1.txt")),
mock_find_file_delegate);
}
@@ -197,14 +235,14 @@ TEST_F(GDataFileSystemTest, SearchExistingDocument) {
new MockFindFileDelegate();
EXPECT_CALL(*mock_find_file_delegate.get(),
- OnEnterDirectory(FilePath(FILE_PATH_LITERAL("gdata")), _))
+ OnEnterDirectory(FilePath(FPL("gdata")), _))
.Times(1)
.WillOnce(Return(FindFileDelegate::FIND_FILE_CONTINUES));
EXPECT_CALL(*mock_find_file_delegate.get(), OnFileFound(_))
.Times(1);
file_system_->FindFileByPath(
- FilePath(FILE_PATH_LITERAL("gdata/Document 1.gdoc")),
+ FilePath(FPL("gdata/Document 1.gdoc")),
mock_find_file_delegate);
}
@@ -214,25 +252,25 @@ TEST_F(GDataFileSystemTest, SearchDuplicateNames) {
scoped_refptr<MockFindFileDelegate> mock_find_file_delegate =
new MockFindFileDelegate();
EXPECT_CALL(*mock_find_file_delegate.get(),
- OnEnterDirectory(FilePath(FILE_PATH_LITERAL("gdata")), _))
+ OnEnterDirectory(FilePath(FPL("gdata")), _))
.Times(1)
.WillOnce(Return(FindFileDelegate::FIND_FILE_CONTINUES));
EXPECT_CALL(*mock_find_file_delegate.get(), OnFileFound(_))
.Times(1);
file_system_->FindFileByPath(
- FilePath(FILE_PATH_LITERAL("gdata/Duplicate Name.txt")),
+ FilePath(FPL("gdata/Duplicate Name.txt")),
mock_find_file_delegate);
scoped_refptr<MockFindFileDelegate> mock_find_file_delegate2 =
new MockFindFileDelegate();
EXPECT_CALL(*mock_find_file_delegate2.get(),
- OnEnterDirectory(FilePath(FILE_PATH_LITERAL("gdata")), _))
+ OnEnterDirectory(FilePath(FPL("gdata")), _))
.Times(1)
.WillOnce(Return(FindFileDelegate::FIND_FILE_CONTINUES));
EXPECT_CALL(*mock_find_file_delegate2.get(), OnFileFound(_))
.Times(1);
file_system_->FindFileByPath(
- FilePath(FILE_PATH_LITERAL("gdata/Duplicate Name (2).txt")),
+ FilePath(FPL("gdata/Duplicate Name (2).txt")),
mock_find_file_delegate2);
}
@@ -242,13 +280,13 @@ TEST_F(GDataFileSystemTest, SearchExistingDirectory) {
new MockFindFileDelegate();
EXPECT_CALL(*mock_find_file_delegate.get(),
- OnEnterDirectory(FilePath(FILE_PATH_LITERAL("gdata")), _))
+ OnEnterDirectory(FilePath(FPL("gdata")), _))
.Times(1)
.WillOnce(Return(FindFileDelegate::FIND_FILE_CONTINUES));
EXPECT_CALL(*mock_find_file_delegate.get(), OnDirectoryFound(_, _))
.Times(1);
- file_system_->FindFileByPath(FilePath(FILE_PATH_LITERAL("gdata/Directory 1")),
+ file_system_->FindFileByPath(FilePath(FPL("gdata/Directory 1")),
mock_find_file_delegate);
}
@@ -259,7 +297,7 @@ TEST_F(GDataFileSystemTest, SearchNonExistingFile) {
new MockFindFileDelegate();
EXPECT_CALL(*mock_find_file_delegate.get(),
- OnEnterDirectory(FilePath(FILE_PATH_LITERAL("gdata")), _))
+ OnEnterDirectory(FilePath(FPL("gdata")), _))
.Times(1)
.WillOnce(Return(FindFileDelegate::FIND_FILE_CONTINUES));
EXPECT_CALL(*mock_find_file_delegate.get(),
@@ -267,7 +305,7 @@ TEST_F(GDataFileSystemTest, SearchNonExistingFile) {
.Times(1);
file_system_->FindFileByPath(
- FilePath(FILE_PATH_LITERAL("gdata/nonexisting.file")),
+ FilePath(FPL("gdata/nonexisting.file")),
mock_find_file_delegate);
}
@@ -278,29 +316,29 @@ TEST_F(GDataFileSystemTest, StopFileSearch) {
// Stop on first directory entry.
EXPECT_CALL(*mock_find_file_delegate.get(),
- OnEnterDirectory(FilePath(FILE_PATH_LITERAL("gdata")), _))
+ OnEnterDirectory(FilePath(FPL("gdata")), _))
.Times(1)
.WillOnce(Return(FindFileDelegate::FIND_FILE_TERMINATES));
- file_system_->FindFileByPath(FilePath(FILE_PATH_LITERAL("gdata/Directory 1")),
+ file_system_->FindFileByPath(FilePath(FPL("gdata/Directory 1")),
mock_find_file_delegate);
}
TEST_F(GDataFileSystemTest, SearchInSubdir) {
LoadRootFeedDocument("root_feed.json");
- LoadSubdirFeedDocument(FilePath(FILE_PATH_LITERAL("gdata/Directory 1")),
+ LoadSubdirFeedDocument(FilePath(FPL("gdata/Directory 1")),
"subdir_feed.json");
scoped_refptr<MockFindFileDelegate> mock_find_file_delegate =
new MockFindFileDelegate();
EXPECT_CALL(*mock_find_file_delegate.get(),
- OnEnterDirectory(FilePath(FILE_PATH_LITERAL("gdata")), _))
+ OnEnterDirectory(FilePath(FPL("gdata")), _))
.Times(1)
.WillOnce(Return(FindFileDelegate::FIND_FILE_CONTINUES));
EXPECT_CALL(*mock_find_file_delegate.get(),
- OnEnterDirectory(FilePath(FILE_PATH_LITERAL("gdata/Directory 1")),
+ OnEnterDirectory(FilePath(FPL("gdata/Directory 1")),
_))
.Times(1)
.WillOnce(Return(FindFileDelegate::FIND_FILE_CONTINUES));
@@ -309,31 +347,31 @@ TEST_F(GDataFileSystemTest, SearchInSubdir) {
.Times(1);
file_system_->FindFileByPath(
- FilePath(FILE_PATH_LITERAL("gdata/Directory 1/SubDirectory File 1.txt")),
+ FilePath(FPL("gdata/Directory 1/SubDirectory File 1.txt")),
mock_find_file_delegate);
}
TEST_F(GDataFileSystemTest, FilePathTests) {
LoadRootFeedDocument("root_feed.json");
- LoadSubdirFeedDocument(FilePath(FILE_PATH_LITERAL("gdata/Directory 1")),
+ LoadSubdirFeedDocument(FilePath(FPL("gdata/Directory 1")),
"subdir_feed.json");
- FindAndTestFilePath(FilePath(FILE_PATH_LITERAL("gdata/File 1.txt")));
- FindAndTestFilePath(FilePath(FILE_PATH_LITERAL("gdata/Directory 1")));
+ FindAndTestFilePath(FilePath(FPL("gdata/File 1.txt")));
+ FindAndTestFilePath(FilePath(FPL("gdata/Directory 1")));
FindAndTestFilePath(
- FilePath(FILE_PATH_LITERAL("gdata/Directory 1/SubDirectory File 1.txt")));
+ FilePath(FPL("gdata/Directory 1/SubDirectory File 1.txt")));
}
TEST_F(GDataFileSystemTest, RemoveFiles) {
LoadRootFeedDocument("root_feed.json");
- LoadSubdirFeedDocument(FilePath(FILE_PATH_LITERAL("gdata/Directory 1")),
+ LoadSubdirFeedDocument(FilePath(FPL("gdata/Directory 1")),
"subdir_feed.json");
- FilePath nonexisting_file(FILE_PATH_LITERAL("gdata/Dummy file.txt"));
- FilePath file_in_root(FILE_PATH_LITERAL("gdata/File 1.txt"));
- FilePath dir_in_root(FILE_PATH_LITERAL("gdata/Directory 1"));
+ FilePath nonexisting_file(FPL("gdata/Dummy file.txt"));
+ FilePath file_in_root(FPL("gdata/File 1.txt"));
+ FilePath dir_in_root(FPL("gdata/Directory 1"));
FilePath file_in_subdir(
- FILE_PATH_LITERAL("gdata/Directory 1/SubDirectory File 1.txt"));
+ FPL("gdata/Directory 1/SubDirectory File 1.txt"));
EXPECT_TRUE(FindFile(file_in_root) != NULL);
EXPECT_TRUE(FindFile(dir_in_root) != NULL);
@@ -358,22 +396,22 @@ TEST_F(GDataFileSystemTest, RemoveFiles) {
EXPECT_FALSE(RemoveFile(nonexisting_file));
// Try removing root file element.
- EXPECT_FALSE(RemoveFile(FilePath(FILE_PATH_LITERAL("gdata"))));
+ EXPECT_FALSE(RemoveFile(FilePath(FPL("gdata"))));
}
TEST_F(GDataFileSystemTest, CreateDirectory) {
LoadRootFeedDocument("root_feed.json");
- LoadSubdirFeedDocument(FilePath(FILE_PATH_LITERAL("gdata/Directory 1")),
+ LoadSubdirFeedDocument(FilePath(FPL("gdata/Directory 1")),
"subdir_feed.json");
// Create directory in root.
- FilePath dir_path(FILE_PATH_LITERAL("gdata/New Folder 1"));
+ FilePath dir_path(FPL("gdata/New Folder 1"));
EXPECT_TRUE(FindFile(dir_path) == NULL);
AddDirectoryFromFile(dir_path, "directory_entry_atom.json");
EXPECT_TRUE(FindFile(dir_path) != NULL);
// Create directory in a sub dirrectory.
- FilePath subdir_path(FILE_PATH_LITERAL("gdata/New Folder 1/New Folder 2"));
+ FilePath subdir_path(FPL("gdata/New Folder 1/New Folder 2"));
EXPECT_TRUE(FindFile(subdir_path) == NULL);
AddDirectoryFromFile(subdir_path, "directory_entry_atom.json");
EXPECT_TRUE(FindFile(subdir_path) != NULL);
@@ -381,42 +419,42 @@ TEST_F(GDataFileSystemTest, CreateDirectory) {
TEST_F(GDataFileSystemTest, FindFirstMissingParentDirectory) {
LoadRootFeedDocument("root_feed.json");
- LoadSubdirFeedDocument(FilePath(FILE_PATH_LITERAL("gdata/Directory 1")),
+ LoadSubdirFeedDocument(FilePath(FPL("gdata/Directory 1")),
"subdir_feed.json");
GURL last_dir_content_url;
FilePath first_missing_parent_path;
// Create directory in root.
- FilePath dir_path(FILE_PATH_LITERAL("gdata/New Folder 1"));
+ FilePath dir_path(FPL("gdata/New Folder 1"));
EXPECT_EQ(
GDataFileSystem::FOUND_MISSING,
file_system_->FindFirstMissingParentDirectory(dir_path,
&last_dir_content_url,
&first_missing_parent_path));
- EXPECT_EQ(FilePath(FILE_PATH_LITERAL("gdata/New Folder 1")),
+ EXPECT_EQ(FilePath(FPL("gdata/New Folder 1")),
first_missing_parent_path);
EXPECT_TRUE(last_dir_content_url.is_empty()); // root directory.
// Missing folders in subdir of an existing folder.
- FilePath dir_path2(FILE_PATH_LITERAL("gdata/Directory 1/New Folder 2"));
+ FilePath dir_path2(FPL("gdata/Directory 1/New Folder 2"));
EXPECT_EQ(
GDataFileSystem::FOUND_MISSING,
file_system_->FindFirstMissingParentDirectory(dir_path2,
&last_dir_content_url,
&first_missing_parent_path));
- EXPECT_EQ(FilePath(FILE_PATH_LITERAL("gdata/Directory 1/New Folder 2")),
+ EXPECT_EQ(FilePath(FPL("gdata/Directory 1/New Folder 2")),
first_missing_parent_path);
EXPECT_FALSE(last_dir_content_url.is_empty()); // non-root directory.
// Missing two folders on the path.
- FilePath dir_path3 = dir_path2.Append(FILE_PATH_LITERAL("Another Foder"));
+ FilePath dir_path3 = dir_path2.Append(FPL("Another Folder"));
EXPECT_EQ(
GDataFileSystem::FOUND_MISSING,
file_system_->FindFirstMissingParentDirectory(dir_path3,
&last_dir_content_url,
&first_missing_parent_path));
- EXPECT_EQ(FilePath(FILE_PATH_LITERAL("gdata/Directory 1/New Folder 2")),
+ EXPECT_EQ(FilePath(FPL("gdata/Directory 1/New Folder 2")),
first_missing_parent_path);
EXPECT_FALSE(last_dir_content_url.is_empty()); // non-root directory.
@@ -424,7 +462,7 @@ TEST_F(GDataFileSystemTest, FindFirstMissingParentDirectory) {
EXPECT_EQ(
GDataFileSystem::FOUND_INVALID,
file_system_->FindFirstMissingParentDirectory(
- FilePath(FILE_PATH_LITERAL("gdata/File 1.txt/BadDir")),
+ FilePath(FPL("gdata/File 1.txt/BadDir")),
&last_dir_content_url,
&first_missing_parent_path));
@@ -432,26 +470,57 @@ TEST_F(GDataFileSystemTest, FindFirstMissingParentDirectory) {
EXPECT_EQ(
GDataFileSystem::DIRECTORY_ALREADY_PRESENT,
file_system_->FindFirstMissingParentDirectory(
- FilePath(FILE_PATH_LITERAL("gdata/Directory 1")),
+ FilePath(FPL("gdata/Directory 1")),
&last_dir_content_url,
&first_missing_parent_path));
}
-// TODO(satorux): Write a test for GetFile() once DocumentsService is
-// mockable.
-
TEST_F(GDataFileSystemTest, GetGDataFileInfoFromPath) {
LoadRootFeedDocument("root_feed.json");
GDataFileBase* file_info = file_system_->GetGDataFileInfoFromPath(
- FilePath(FILE_PATH_LITERAL("gdata/File 1.txt")));
+ FilePath(FPL("gdata/File 1.txt")));
ASSERT_TRUE(file_info != NULL);
EXPECT_EQ("https://file_link_self/", file_info->self_url().spec());
EXPECT_EQ("https://file_content_url/", file_info->content_url().spec());
GDataFileBase* non_existent = file_system_->GetGDataFileInfoFromPath(
- FilePath(FILE_PATH_LITERAL("gdata/Nonexistent.txt")));
+ FilePath(FPL("gdata/Nonexistent.txt")));
ASSERT_TRUE(non_existent == NULL);
}
+// Create a directory through the document service
+TEST_F(GDataFileSystemTest, CreateDirectoryWithService) {
+ LoadRootFeedDocument("root_feed.json");
+ EXPECT_CALL(*mock_doc_service_,
+ CreateDirectory(_, "Sample Directory Title", _)).Times(1);
+
+ // Set last error so it's not a valid error code.
+ callback_helper_->last_error_ = static_cast<base::PlatformFileError>(1);
+ file_system_->CreateDirectory(
+ FilePath(FPL("gdata/Sample Directory Title")),
+ false, // is_exclusive
+ true, // is_recursive
+ base::Bind(&CallbackHelper::FileOperationCallback,
+ callback_helper_.get()));
+ // TODO(gspencer): Uncomment this when we get a blob that
zel 2012/03/08 00:02:03 yes, we should wait for the callback to be signale
+ // works that can be returned from the mock.
+ // EXPECT_EQ(base::PLATFORM_FILE_OK, callback_helper_->last_error_);
+}
+
+TEST_F(GDataFileSystemTest, GetFile) {
+ LoadRootFeedDocument("root_feed.json");
+
+ GDataFileSystem::GetFileCallback callback =
+ base::Bind(&CallbackHelper::GetFileCallback,
+ callback_helper_.get());
+
+ EXPECT_CALL(*mock_doc_service_,
+ DownloadFile(GURL("https://file_content_url/"), _));
+
+ FilePath file_in_root(FPL("gdata/File 1.txt"));
+ file_system_->GetFile(file_in_root, callback);
+ EXPECT_STREQ("file_content_url/",
+ callback_helper_->download_path_.value().c_str());
+}
} // namespace gdata

Powered by Google App Engine
This is Rietveld 408576698