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

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: Upload after merge 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
« no previous file with comments | « chrome/browser/chromeos/gdata/gdata_file_system.cc ('k') | chrome/browser/chromeos/gdata/gdata_mock.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 a0ed302dd6a14ef329b8d1543851a98f927f9c74..fa820125d82917973d6ef684acc5e26fb0a10523 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"
@@ -36,12 +39,30 @@ namespace gdata {
class GDataFileSystemTest : public testing::Test {
protected:
GDataFileSystemTest()
- : ui_thread_(content::BrowserThread::UI, &message_loop_) {
+ : ui_thread_(content::BrowserThread::UI, &message_loop_),
+ file_system_(NULL) {
}
- 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, and inject it into the
+ // GDataFileSystem object.
+ mock_doc_service_ = new MockDocumentsService;
+
+ EXPECT_CALL(*mock_doc_service_, Initialize(profile_.get())).Times(1);
+
+ ASSERT_FALSE(file_system_);
+ file_system_ = new GDataFileSystem(profile_.get(), mock_doc_service_);
+ }
+
+ virtual void TearDown() OVERRIDE {
+ ASSERT_TRUE(file_system_);
+ EXPECT_CALL(*mock_doc_service_, CancelAll()).Times(1);
+ file_system_->Shutdown();
+ delete file_system_;
+ file_system_ = NULL;
}
// Loads test json file as root ("/gdata") element.
@@ -138,10 +159,33 @@ class GDataFileSystemTest : public testing::Test {
return value;
}
+ // This is used as a helper for registering callbacks that need to be
+ // RefCountedThreadSafe, and a place where we can fetch results from various
+ // operations.
+ 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_;
};
@@ -425,7 +469,7 @@ TEST_F(GDataFileSystemTest, FindFirstMissingParentDirectory) {
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(FILE_PATH_LITERAL("Another Folder"));
EXPECT_EQ(
GDataFileSystem::FOUND_MISSING,
file_system_->FindFirstMissingParentDirectory(dir_path3,
@@ -452,9 +496,6 @@ TEST_F(GDataFileSystemTest, FindFirstMissingParentDirectory) {
&first_missing_parent_path));
}
-// TODO(satorux): Write a test for GetFile() once DocumentsService is
-// mockable.
-
TEST_F(GDataFileSystemTest, GetGDataFileInfoFromPath) {
LoadRootFeedDocument("root_feed.json");
@@ -469,4 +510,40 @@ TEST_F(GDataFileSystemTest, GetGDataFileInfoFromPath) {
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(FILE_PATH_LITERAL("gdata/Sample Directory Title")),
+ false, // is_exclusive
+ true, // is_recursive
+ base::Bind(&CallbackHelper::FileOperationCallback,
+ callback_helper_.get()));
+ message_loop_.RunAllPending(); // Wait to get our result.
+ // TODO(gspencer): Uncomment this when we get a blob that
+ // 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(FILE_PATH_LITERAL("gdata/File 1.txt"));
+ file_system_->GetFile(file_in_root, callback);
+ message_loop_.RunAllPending(); // Wait to get our result.
+ EXPECT_STREQ("file_content_url/",
+ callback_helper_->download_path_.value().c_str());
+}
} // namespace gdata
« no previous file with comments | « chrome/browser/chromeos/gdata/gdata_file_system.cc ('k') | chrome/browser/chromeos/gdata/gdata_mock.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698