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

Side by Side Diff: components/ntp_snippets/ntp_snippets_service_unittest.cc

Issue 1677073002: Fetch snippets from ChromeReader and show them on the NTP (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Review comments Created 4 years, 10 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
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 "base/macros.h" 5 #include "base/macros.h"
6 #include "base/message_loop/message_loop.h"
7 #include "base/thread_task_runner_handle.h"
6 #include "base/time/time.h" 8 #include "base/time/time.h"
7 #include "components/ntp_snippets/ntp_snippet.h" 9 #include "components/ntp_snippets/ntp_snippet.h"
10 #include "components/ntp_snippets/ntp_snippets_fetcher.h"
8 #include "components/ntp_snippets/ntp_snippets_service.h" 11 #include "components/ntp_snippets/ntp_snippets_service.h"
12 #include "components/signin/core/browser/account_tracker_service.h"
13 #include "components/signin/core/browser/fake_profile_oauth2_token_service.h"
14 #include "components/signin/core/browser/fake_signin_manager.h"
15 #include "components/signin/core/browser/test_signin_client.h"
16 #include "net/url_request/url_request_test_util.h"
9 #include "testing/gtest/include/gtest/gtest.h" 17 #include "testing/gtest/include/gtest/gtest.h"
10 18
11 namespace { 19 namespace ntp_snippets {
12 20
13 class SnippetObserver : public ntp_snippets::NTPSnippetsServiceObserver { 21 class SnippetObserver : public NTPSnippetsServiceObserver {
14 public: 22 public:
15 SnippetObserver() : loaded_(false), shutdown_(false) {} 23 SnippetObserver() : loaded_(false), shutdown_(false) {}
16 ~SnippetObserver() override {} 24 ~SnippetObserver() override {}
17 25
18 void NTPSnippetsServiceLoaded( 26 void NTPSnippetsServiceLoaded(NTPSnippetsService* service) override {
19 ntp_snippets::NTPSnippetsService* service) override {
20 loaded_ = true; 27 loaded_ = true;
21 } 28 }
22 29
23 void NTPSnippetsServiceShutdown( 30 void NTPSnippetsServiceShutdown(NTPSnippetsService* service) override {
24 ntp_snippets::NTPSnippetsService* service) override {
25 shutdown_ = true; 31 shutdown_ = true;
26 loaded_ = false; 32 loaded_ = false;
27 } 33 }
28 34
29 bool loaded_; 35 bool loaded_;
30 bool shutdown_; 36 bool shutdown_;
31 37
32 private: 38 private:
33 DISALLOW_COPY_AND_ASSIGN(SnippetObserver); 39 DISALLOW_COPY_AND_ASSIGN(SnippetObserver);
34 }; 40 };
35 41
36 class NTPSnippetsServiceTest : public testing::Test { 42 class NTPSnippetsServiceTest : public testing::Test {
37 public: 43 public:
38 NTPSnippetsServiceTest() {} 44 NTPSnippetsServiceTest() {}
39 ~NTPSnippetsServiceTest() override {} 45 ~NTPSnippetsServiceTest() override {}
40 46
47 void SetUp() override {
48 signin_client_.reset(new TestSigninClient(nullptr));
49 account_tracker_.reset(new AccountTrackerService());
50 }
51
52 protected:
53 scoped_ptr<NTPSnippetsService> CreateSnippetService() {
54 scoped_refptr<base::SingleThreadTaskRunner> task_runner(
55 base::ThreadTaskRunnerHandle::Get());
56 scoped_refptr<net::TestURLRequestContextGetter> request_context_getter =
57 new net::TestURLRequestContextGetter(task_runner.get());
58 FakeProfileOAuth2TokenService* token_service =
59 new FakeProfileOAuth2TokenService();
60 FakeSigninManagerBase* signin_manager = new FakeSigninManagerBase(
61 signin_client_.get(), account_tracker_.get());
62
63 scoped_ptr<NTPSnippetsService> service(
64 new NTPSnippetsService(task_runner.get(), std::string("fr"),
65 make_scoped_ptr(new NTPSnippetsFetcher(task_runner.get(),
66 signin_manager, token_service, request_context_getter,
67 base::FilePath()))));
68 return service;
69 }
70
41 private: 71 private:
72 scoped_ptr<AccountTrackerService> account_tracker_;
73 scoped_ptr<TestSigninClient> signin_client_;
74 base::MessageLoop message_loop_;
42 DISALLOW_COPY_AND_ASSIGN(NTPSnippetsServiceTest); 75 DISALLOW_COPY_AND_ASSIGN(NTPSnippetsServiceTest);
43 }; 76 };
44 77
78
45 TEST_F(NTPSnippetsServiceTest, Create) { 79 TEST_F(NTPSnippetsServiceTest, Create) {
46 std::string language_code("fr"); 80 scoped_ptr<NTPSnippetsService> service(CreateSnippetService());
47 scoped_ptr<ntp_snippets::NTPSnippetsService> service(
48 new ntp_snippets::NTPSnippetsService(language_code));
49
50 EXPECT_FALSE(service->is_loaded()); 81 EXPECT_FALSE(service->is_loaded());
51 } 82 }
52 83
53 TEST_F(NTPSnippetsServiceTest, Loop) { 84 TEST_F(NTPSnippetsServiceTest, Loop) {
54 std::string language_code("fr"); 85 scoped_ptr<NTPSnippetsService> service(CreateSnippetService());
55 scoped_ptr<ntp_snippets::NTPSnippetsService> service(
56 new ntp_snippets::NTPSnippetsService(language_code));
57 86
58 EXPECT_FALSE(service->is_loaded()); 87 EXPECT_FALSE(service->is_loaded());
59 88
60 std::string json_str( 89 std::string json_str(
61 "{ \"recos\": [ " 90 "{ \"recos\": [ "
62 "{ \"contentInfo\": { \"url\" : \"http://localhost/foobar\" }}" 91 "{ \"contentInfo\": { \"url\" : \"http://localhost/foobar\" }}"
63 "]}"); 92 "]}");
64 EXPECT_TRUE(service->LoadFromJSONString(json_str)); 93 EXPECT_TRUE(service->LoadFromJSONString(json_str));
65 94
66 EXPECT_TRUE(service->is_loaded()); 95 EXPECT_TRUE(service->is_loaded());
67 96
68 // The same for loop without the '&' should not compile. 97 // The same for loop without the '&' should not compile.
69 for (auto& snippet : *service) { 98 for (auto& snippet : *service) {
70 // Snippet here is a const. 99 // Snippet here is a const.
71 EXPECT_EQ(snippet.url(), GURL("http://localhost/foobar")); 100 EXPECT_EQ(snippet.url(), GURL("http://localhost/foobar"));
72 } 101 }
73 // Without the const, this should not compile. 102 // Without the const, this should not compile.
74 for (const ntp_snippets::NTPSnippet& snippet : *service) { 103 for (const NTPSnippet& snippet : *service) {
75 EXPECT_EQ(snippet.url(), GURL("http://localhost/foobar")); 104 EXPECT_EQ(snippet.url(), GURL("http://localhost/foobar"));
76 } 105 }
77 } 106 }
78 107
79 TEST_F(NTPSnippetsServiceTest, Full) { 108 TEST_F(NTPSnippetsServiceTest, Full) {
80 std::string language_code("fr"); 109 scoped_ptr<NTPSnippetsService> service(CreateSnippetService());
81 scoped_ptr<ntp_snippets::NTPSnippetsService> service(
82 new ntp_snippets::NTPSnippetsService(language_code));
83 110
84 std::string json_str( 111 std::string json_str(
85 "{ \"recos\": [ " 112 "{ \"recos\": [ "
86 "{ \"contentInfo\": {" 113 "{ \"contentInfo\": {"
87 "\"url\" : \"http://localhost/foobar\"," 114 "\"url\" : \"http://localhost/foobar\","
88 "\"site_title\" : \"Site Title\"," 115 "\"site_title\" : \"Site Title\","
89 "\"favicon_url\" : \"http://localhost/favicon\"," 116 "\"favicon_url\" : \"http://localhost/favicon\","
90 "\"title\" : \"Title\"," 117 "\"title\" : \"Title\","
91 "\"snippet\" : \"Snippet\"," 118 "\"snippet\" : \"Snippet\","
92 "\"thumbnailUrl\" : \"http://localhost/salient_image\"," 119 "\"thumbnailUrl\" : \"http://localhost/salient_image\","
(...skipping 12 matching lines...) Expand all
105 EXPECT_EQ(snippet.snippet(), "Snippet"); 132 EXPECT_EQ(snippet.snippet(), "Snippet");
106 EXPECT_EQ(snippet.salient_image_url(), 133 EXPECT_EQ(snippet.salient_image_url(),
107 GURL("http://localhost/salient_image")); 134 GURL("http://localhost/salient_image"));
108 base::Time then = 135 base::Time then =
109 base::Time::FromUTCExploded({2015, 11, 4, 25, 13, 46, 45}); 136 base::Time::FromUTCExploded({2015, 11, 4, 25, 13, 46, 45});
110 EXPECT_EQ(then, snippet.publish_date()); 137 EXPECT_EQ(then, snippet.publish_date());
111 } 138 }
112 } 139 }
113 140
114 TEST_F(NTPSnippetsServiceTest, ObserverNotLoaded) { 141 TEST_F(NTPSnippetsServiceTest, ObserverNotLoaded) {
115 std::string language_code("fr"); 142 scoped_ptr<NTPSnippetsService> service(CreateSnippetService());
116 scoped_ptr<ntp_snippets::NTPSnippetsService> service(
117 new ntp_snippets::NTPSnippetsService(language_code));
118 143
119 SnippetObserver observer; 144 SnippetObserver observer;
120 service->AddObserver(&observer); 145 service->AddObserver(&observer);
121 EXPECT_FALSE(observer.loaded_); 146 EXPECT_FALSE(observer.loaded_);
122 147
123 std::string json_str( 148 std::string json_str(
124 "{ \"recos\": [ " 149 "{ \"recos\": [ "
125 "{ \"contentInfo\": { \"url\" : \"http://localhost/foobar\" }}" 150 "{ \"contentInfo\": { \"url\" : \"http://localhost/foobar\" }}"
126 "]}"); 151 "]}");
127 EXPECT_TRUE(service->LoadFromJSONString(json_str)); 152 EXPECT_TRUE(service->LoadFromJSONString(json_str));
128 EXPECT_TRUE(observer.loaded_); 153 EXPECT_TRUE(observer.loaded_);
129 154
130 service->RemoveObserver(&observer); 155 service->RemoveObserver(&observer);
131 } 156 }
132 157
133 TEST_F(NTPSnippetsServiceTest, ObserverLoaded) { 158 TEST_F(NTPSnippetsServiceTest, ObserverLoaded) {
134 std::string language_code("fr"); 159 scoped_ptr<NTPSnippetsService> service(CreateSnippetService());
135 scoped_ptr<ntp_snippets::NTPSnippetsService> service(
136 new ntp_snippets::NTPSnippetsService(language_code));
137 160
138 std::string json_str( 161 std::string json_str(
139 "{ \"recos\": [ " 162 "{ \"recos\": [ "
140 "{ \"contentInfo\": { \"url\" : \"http://localhost/foobar\" }}" 163 "{ \"contentInfo\": { \"url\" : \"http://localhost/foobar\" }}"
141 "]}"); 164 "]}");
142 EXPECT_TRUE(service->LoadFromJSONString(json_str)); 165 EXPECT_TRUE(service->LoadFromJSONString(json_str));
143 166
144 SnippetObserver observer; 167 SnippetObserver observer;
145 service->AddObserver(&observer); 168 service->AddObserver(&observer);
146 169
147 EXPECT_TRUE(observer.loaded_); 170 EXPECT_TRUE(observer.loaded_);
148 171
149 service->RemoveObserver(&observer); 172 service->RemoveObserver(&observer);
150 } 173 }
151 } // namespace 174 } // namespace ntp_snippets
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698