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

Unified Diff: components/feedback/feedback_data_unittest.cc

Issue 296173003: Refactor FeedbackData and add tests. Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: add feedback.gypi to OWNERS file Created 6 years, 7 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 | « components/feedback/feedback_data.cc ('k') | components/feedback/feedback_util.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: components/feedback/feedback_data_unittest.cc
diff --git a/components/feedback/feedback_data_unittest.cc b/components/feedback/feedback_data_unittest.cc
new file mode 100644
index 0000000000000000000000000000000000000000..0df17511f69ea194e2f6942efae59c73a5ab6876
--- /dev/null
+++ b/components/feedback/feedback_data_unittest.cc
@@ -0,0 +1,113 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "components/feedback/feedback_data.h"
+
+#include <set>
+
+#include "base/message_loop/message_loop.h"
+#include "base/prefs/testing_pref_service.h"
+#include "base/run_loop.h"
+#include "components/feedback/feedback_uploader.h"
+#include "components/feedback/feedback_uploader_factory.h"
+#include "components/keyed_service/core/keyed_service.h"
+#include "components/user_prefs/user_prefs.h"
+#include "content/public/test/test_browser_context.h"
+#include "content/public/test/test_browser_thread.h"
+#include "testing/gmock/include/gmock/gmock.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace {
+
+const char kHistograms[] = "";
+const char kImageData[] = "";
+const char kFileData[] = "";
+
+const base::TimeDelta kRetryDelayForTest =
+ base::TimeDelta::FromMilliseconds(100);
+
+using content::BrowserThread;
+
+class MockUploader : public feedback::FeedbackUploader, public KeyedService {
+ public:
+ MockUploader(content::BrowserContext* context)
+ : FeedbackUploader(context ? context->GetPath() : base::FilePath(),
+ BrowserThread::GetBlockingPool()) {}
+
+ MOCK_METHOD1(DispatchReport, void(const std::string&));
+};
+
+MockUploader *g_uploader;
+
+KeyedService* CreateFeedbackUploaderService(content::BrowserContext* context) {
+ if (!g_uploader)
+ g_uploader = new MockUploader(context);
+ EXPECT_CALL(*g_uploader, DispatchReport(testing::_)).Times(1);
+ return g_uploader;
+}
+
+scoped_ptr<std::string> MakeScoped(const char* str) {
+ return scoped_ptr<std::string>(new std::string(str));
+}
+
+} // namespace
+
+namespace feedback {
+
+class FeedbackDataTest : public testing::Test {
+ protected:
+ FeedbackDataTest()
+ : context_(new content::TestBrowserContext()),
+ data_(new FeedbackData()),
+ ui_thread_(content::BrowserThread::UI, &message_loop_) {
+ user_prefs::UserPrefs::Set(context_.get(), new TestingPrefServiceSimple());
+ data_->set_context(context_.get());
+ data_->set_send_report_callback(base::Bind(
+ &FeedbackDataTest::set_send_report_callback, base::Unretained(this)));
+
+ FeedbackUploaderFactory::GetInstance()->SetTestingFactory(
+ context_.get(), &CreateFeedbackUploaderService);
+ }
+
+ void Send() {
+ bool attached_file_completed =
+ data_->attached_file_uuid().empty();
+ bool screenshot_completed =
+ data_->screenshot_uuid().empty();
+
+ if (screenshot_completed && attached_file_completed) {
+ data_->OnFeedbackPageDataComplete();
+ }
+ }
+
+ void RunMessageLoop() {
+ run_loop_.reset(new base::RunLoop());
+ quit_closure_ = run_loop_->QuitClosure();
+ run_loop_->Run();
+ }
+
+ void set_send_report_callback(scoped_refptr<FeedbackData> data) {
+ quit_closure_.Run();
+ }
+
+ base::Closure quit_closure_;
+ scoped_ptr<base::RunLoop> run_loop_;
+ scoped_ptr<content::TestBrowserContext> context_;
+ scoped_refptr<FeedbackData> data_;
+ base::MessageLoop message_loop_;
+ content::TestBrowserThread ui_thread_;
+};
+
+TEST_F(FeedbackDataTest, ReportSending) {
+ data_->SetAndCompressHistograms(MakeScoped(kHistograms).Pass());
+ data_->set_image(MakeScoped(kImageData).Pass());
+ data_->AttachAndCompressFileData(MakeScoped(kFileData).Pass());
+ Send();
+ RunMessageLoop();
+ EXPECT_TRUE(data_->IsDataComplete());
+ delete g_uploader;
+ g_uploader = NULL;
+}
+
+} // namespace feedback
« no previous file with comments | « components/feedback/feedback_data.cc ('k') | components/feedback/feedback_util.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698