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

Side by Side Diff: components/doodle/doodle_fetcher_impl_unittest.cc

Issue 2707293002: [Doodle] Split DoodleFetcher into interface + Impl (Closed)
Patch Set: review Created 3 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
« no previous file with comments | « components/doodle/doodle_fetcher_impl.cc ('k') | components/doodle/doodle_fetcher_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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 "components/doodle/doodle_fetcher.h" 5 #include "components/doodle/doodle_fetcher_impl.h"
6 6
7 #include <string> 7 #include <string>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
11 #include "base/command_line.h" 11 #include "base/command_line.h"
12 #include "base/json/json_reader.h" 12 #include "base/json/json_reader.h"
13 #include "base/memory/ptr_util.h" 13 #include "base/memory/ptr_util.h"
14 #include "base/message_loop/message_loop.h" 14 #include "base/message_loop/message_loop.h"
15 #include "base/test/simple_test_clock.h" 15 #include "base/test/simple_test_clock.h"
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
61 std::unique_ptr<base::Value> value = json_reader.ReadToValue(json); 61 std::unique_ptr<base::Value> value = json_reader.ReadToValue(json);
62 if (value) { 62 if (value) {
63 success.Run(std::move(value)); 63 success.Run(std::move(value));
64 } else { 64 } else {
65 error.Run(json_reader.GetErrorMessage()); 65 error.Run(json_reader.GetErrorMessage());
66 } 66 }
67 } 67 }
68 68
69 } // namespace 69 } // namespace
70 70
71 class DoodleFetcherTest : public testing::Test { 71 class DoodleFetcherImplTest : public testing::Test {
72 public: 72 public:
73 DoodleFetcherTest() 73 DoodleFetcherImplTest()
74 : url_(GURL(GoogleURLTracker::kDefaultGoogleHomepage)), 74 : url_(GURL(GoogleURLTracker::kDefaultGoogleHomepage)),
75 google_url_tracker_(base::MakeUnique<GoogleURLTrackerClientStub>(), 75 google_url_tracker_(base::MakeUnique<GoogleURLTrackerClientStub>(),
76 GoogleURLTracker::UNIT_TEST_MODE), 76 GoogleURLTracker::UNIT_TEST_MODE),
77 doodle_fetcher_( 77 doodle_fetcher_(
78 new net::TestURLRequestContextGetter(message_loop_.task_runner()), 78 new net::TestURLRequestContextGetter(message_loop_.task_runner()),
79 &google_url_tracker_, 79 &google_url_tracker_,
80 base::Bind(ParseJson)) { 80 base::Bind(ParseJson)) {
81 // Random difference to ensure that expiry_dates are really relative. 81 // Random difference to ensure that expiry_dates are really relative.
82 auto clock = base::MakeUnique<base::SimpleTestClock>(); 82 auto clock = base::MakeUnique<base::SimpleTestClock>();
83 clock_ = clock.get(); 83 clock_ = clock.get();
(...skipping 22 matching lines...) Expand all
106 url_fetcher->delegate()->OnURLFetchComplete(url_fetcher); 106 url_fetcher->delegate()->OnURLFetchComplete(url_fetcher);
107 } 107 }
108 108
109 net::TestURLFetcher* GetRunningFetcher() { 109 net::TestURLFetcher* GetRunningFetcher() {
110 // All created TestURLFetchers have ID 0 by default. 110 // All created TestURLFetchers have ID 0 by default.
111 net::TestURLFetcher* url_fetcher = url_fetcher_factory_.GetFetcherByID(0); 111 net::TestURLFetcher* url_fetcher = url_fetcher_factory_.GetFetcherByID(0);
112 DCHECK(url_fetcher); 112 DCHECK(url_fetcher);
113 return url_fetcher; 113 return url_fetcher;
114 } 114 }
115 115
116 DoodleFetcher::FinishedCallback CreateResponseSavingCallback( 116 DoodleFetcherImpl::FinishedCallback CreateResponseSavingCallback(
117 DoodleState* state_out, 117 DoodleState* state_out,
118 base::Optional<DoodleConfig>* config_out) { 118 base::Optional<DoodleConfig>* config_out) {
119 return base::BindOnce( 119 return base::BindOnce(
120 [](DoodleState* state_out, base::Optional<DoodleConfig>* config_out, 120 [](DoodleState* state_out, base::Optional<DoodleConfig>* config_out,
121 DoodleState state, const base::Optional<DoodleConfig>& config) { 121 DoodleState state, const base::Optional<DoodleConfig>& config) {
122 if (state_out) { 122 if (state_out) {
123 *state_out = state; 123 *state_out = state;
124 } 124 }
125 if (config_out) { 125 if (config_out) {
126 *config_out = config; 126 *config_out = config;
127 } 127 }
128 }, 128 },
129 state_out, config_out); 129 state_out, config_out);
130 } 130 }
131 131
132 DoodleFetcher* doodle_fetcher() { return &doodle_fetcher_; } 132 DoodleFetcherImpl* doodle_fetcher() { return &doodle_fetcher_; }
133 133
134 GURL GetGoogleBaseURL() { return google_url_tracker_.google_url(); } 134 GURL GetGoogleBaseURL() { return google_url_tracker_.google_url(); }
135 135
136 base::Time TimeFromNow(uint64_t milliseconds) { 136 base::Time TimeFromNow(uint64_t milliseconds) {
137 return clock_->Now() + base::TimeDelta::FromMilliseconds(milliseconds); 137 return clock_->Now() + base::TimeDelta::FromMilliseconds(milliseconds);
138 } 138 }
139 139
140 private: 140 private:
141 base::MessageLoop message_loop_; 141 base::MessageLoop message_loop_;
142 GURL url_; 142 GURL url_;
143 net::TestURLFetcherFactory url_fetcher_factory_; 143 net::TestURLFetcherFactory url_fetcher_factory_;
144 base::SimpleTestClock* clock_; // Owned by the doodle_fetcher. 144 base::SimpleTestClock* clock_; // Owned by the doodle_fetcher.
145 GoogleURLTracker google_url_tracker_; 145 GoogleURLTracker google_url_tracker_;
146 DoodleFetcher doodle_fetcher_; 146 DoodleFetcherImpl doodle_fetcher_;
147 }; 147 };
148 148
149 TEST_F(DoodleFetcherTest, ReturnsFromFetchWithoutError) { 149 TEST_F(DoodleFetcherImplTest, ReturnsFromFetchWithoutError) {
150 DoodleState state(DoodleState::NO_DOODLE); 150 DoodleState state(DoodleState::NO_DOODLE);
151 base::Optional<DoodleConfig> response; 151 base::Optional<DoodleConfig> response;
152 152
153 doodle_fetcher()->FetchDoodle( 153 doodle_fetcher()->FetchDoodle(
154 CreateResponseSavingCallback(&state, &response)); 154 CreateResponseSavingCallback(&state, &response));
155 RespondWithData(R"json({"ddljson": { 155 RespondWithData(R"json({"ddljson": {
156 "time_to_live_ms":55000, 156 "time_to_live_ms":55000,
157 "large_image": {"url":"/logos/doodles/2015/some.gif"} 157 "large_image": {"url":"/logos/doodles/2015/some.gif"}
158 }})json"); 158 }})json");
159 159
160 EXPECT_THAT(state, Eq(DoodleState::AVAILABLE)); 160 EXPECT_THAT(state, Eq(DoodleState::AVAILABLE));
161 EXPECT_TRUE(response.has_value()); 161 EXPECT_TRUE(response.has_value());
162 } 162 }
163 163
164 TEST_F(DoodleFetcherTest, ReturnsFrom404FetchWithError) { 164 TEST_F(DoodleFetcherImplTest, ReturnsFrom404FetchWithError) {
165 DoodleState state(DoodleState::NO_DOODLE); 165 DoodleState state(DoodleState::NO_DOODLE);
166 base::Optional<DoodleConfig> response; 166 base::Optional<DoodleConfig> response;
167 167
168 doodle_fetcher()->FetchDoodle( 168 doodle_fetcher()->FetchDoodle(
169 CreateResponseSavingCallback(&state, &response)); 169 CreateResponseSavingCallback(&state, &response));
170 RespondWithError(net::ERR_FILE_NOT_FOUND); 170 RespondWithError(net::ERR_FILE_NOT_FOUND);
171 171
172 EXPECT_THAT(state, Eq(DoodleState::DOWNLOAD_ERROR)); 172 EXPECT_THAT(state, Eq(DoodleState::DOWNLOAD_ERROR));
173 EXPECT_FALSE(response.has_value()); 173 EXPECT_FALSE(response.has_value());
174 } 174 }
175 175
176 TEST_F(DoodleFetcherTest, ReturnsErrorForInvalidJson) { 176 TEST_F(DoodleFetcherImplTest, ReturnsErrorForInvalidJson) {
177 DoodleState state(DoodleState::NO_DOODLE); 177 DoodleState state(DoodleState::NO_DOODLE);
178 base::Optional<DoodleConfig> response; 178 base::Optional<DoodleConfig> response;
179 179
180 doodle_fetcher()->FetchDoodle( 180 doodle_fetcher()->FetchDoodle(
181 CreateResponseSavingCallback(&state, &response)); 181 CreateResponseSavingCallback(&state, &response));
182 RespondWithData("}"); 182 RespondWithData("}");
183 183
184 EXPECT_THAT(state, Eq(DoodleState::PARSING_ERROR)); 184 EXPECT_THAT(state, Eq(DoodleState::PARSING_ERROR));
185 EXPECT_FALSE(response.has_value()); 185 EXPECT_FALSE(response.has_value());
186 } 186 }
187 187
188 TEST_F(DoodleFetcherTest, ReturnsErrorForIncompleteJson) { 188 TEST_F(DoodleFetcherImplTest, ReturnsErrorForIncompleteJson) {
189 DoodleState state(DoodleState::NO_DOODLE); 189 DoodleState state(DoodleState::NO_DOODLE);
190 base::Optional<DoodleConfig> response; 190 base::Optional<DoodleConfig> response;
191 191
192 doodle_fetcher()->FetchDoodle( 192 doodle_fetcher()->FetchDoodle(
193 CreateResponseSavingCallback(&state, &response)); 193 CreateResponseSavingCallback(&state, &response));
194 RespondWithData("{}"); 194 RespondWithData("{}");
195 195
196 EXPECT_THAT(state, Eq(DoodleState::PARSING_ERROR)); 196 EXPECT_THAT(state, Eq(DoodleState::PARSING_ERROR));
197 EXPECT_FALSE(response.has_value()); 197 EXPECT_FALSE(response.has_value());
198 } 198 }
199 199
200 TEST_F(DoodleFetcherTest, ResponseContainsValidBaseInformation) { 200 TEST_F(DoodleFetcherImplTest, ResponseContainsValidBaseInformation) {
201 DoodleState state(DoodleState::NO_DOODLE); 201 DoodleState state(DoodleState::NO_DOODLE);
202 base::Optional<DoodleConfig> response; 202 base::Optional<DoodleConfig> response;
203 203
204 doodle_fetcher()->FetchDoodle( 204 doodle_fetcher()->FetchDoodle(
205 CreateResponseSavingCallback(&state, &response)); 205 CreateResponseSavingCallback(&state, &response));
206 RespondWithData(R"json()]}'{ 206 RespondWithData(R"json()]}'{
207 "ddljson": { 207 "ddljson": {
208 "alt_text":"Mouseover Text", 208 "alt_text":"Mouseover Text",
209 "doodle_type":"SIMPLE", 209 "doodle_type":"SIMPLE",
210 "interactive_html":"\u003cstyle\u003e\u003c\/style\u003e", 210 "interactive_html":"\u003cstyle\u003e\u003c\/style\u003e",
(...skipping 17 matching lines...) Expand all
228 Eq(Resolve("/search?q\u003dtest\u0026sa\u003dX\u0026ved\u003d" 228 Eq(Resolve("/search?q\u003dtest\u0026sa\u003dX\u0026ved\u003d"
229 "0ahUKEw"))); 229 "0ahUKEw")));
230 EXPECT_THAT(config.doodle_type, Eq(DoodleType::SIMPLE)); 230 EXPECT_THAT(config.doodle_type, Eq(DoodleType::SIMPLE));
231 EXPECT_THAT(config.alt_text, Eq("Mouseover Text")); 231 EXPECT_THAT(config.alt_text, Eq("Mouseover Text"));
232 EXPECT_THAT(config.interactive_html, 232 EXPECT_THAT(config.interactive_html,
233 Eq("\u003cstyle\u003e\u003c/style\u003e")); 233 Eq("\u003cstyle\u003e\u003c/style\u003e"));
234 234
235 EXPECT_THAT(config.expiry_date, Eq(TimeFromNow(55000))); 235 EXPECT_THAT(config.expiry_date, Eq(TimeFromNow(55000)));
236 } 236 }
237 237
238 TEST_F(DoodleFetcherTest, DoodleExpiresWithinThirtyDaysForTooLargeTTL) { 238 TEST_F(DoodleFetcherImplTest, DoodleExpiresWithinThirtyDaysForTooLargeTTL) {
239 DoodleState state(DoodleState::NO_DOODLE); 239 DoodleState state(DoodleState::NO_DOODLE);
240 base::Optional<DoodleConfig> response; 240 base::Optional<DoodleConfig> response;
241 241
242 doodle_fetcher()->FetchDoodle( 242 doodle_fetcher()->FetchDoodle(
243 CreateResponseSavingCallback(&state, &response)); 243 CreateResponseSavingCallback(&state, &response));
244 RespondWithData(R"json({"ddljson": { 244 RespondWithData(R"json({"ddljson": {
245 "time_to_live_ms":5184000000, 245 "time_to_live_ms":5184000000,
246 "large_image": {"url":"/logos/doodles/2015/some.gif"} 246 "large_image": {"url":"/logos/doodles/2015/some.gif"}
247 }})json"); // 60 days 247 }})json"); // 60 days
248 248
249 EXPECT_THAT(state, Eq(DoodleState::AVAILABLE)); 249 EXPECT_THAT(state, Eq(DoodleState::AVAILABLE));
250 ASSERT_TRUE(response.has_value()); 250 ASSERT_TRUE(response.has_value());
251 EXPECT_THAT(response.value().expiry_date, 251 EXPECT_THAT(response.value().expiry_date,
252 Eq(TimeFromNow(30ul * 24 * 60 * 60 * 1000 /* ms */))); // 30 days 252 Eq(TimeFromNow(30ul * 24 * 60 * 60 * 1000 /* ms */))); // 30 days
253 } 253 }
254 254
255 TEST_F(DoodleFetcherTest, DoodleExpiresNowWithNegativeTTL) { 255 TEST_F(DoodleFetcherImplTest, DoodleExpiresNowWithNegativeTTL) {
256 DoodleState state(DoodleState::NO_DOODLE); 256 DoodleState state(DoodleState::NO_DOODLE);
257 base::Optional<DoodleConfig> response; 257 base::Optional<DoodleConfig> response;
258 258
259 doodle_fetcher()->FetchDoodle( 259 doodle_fetcher()->FetchDoodle(
260 CreateResponseSavingCallback(&state, &response)); 260 CreateResponseSavingCallback(&state, &response));
261 RespondWithData(R"json({"ddljson": { 261 RespondWithData(R"json({"ddljson": {
262 "time_to_live_ms":-1, 262 "time_to_live_ms":-1,
263 "large_image": {"url":"/logos/doodles/2015/some.gif"} 263 "large_image": {"url":"/logos/doodles/2015/some.gif"}
264 }})json"); 264 }})json");
265 265
266 EXPECT_THAT(state, Eq(DoodleState::AVAILABLE)); 266 EXPECT_THAT(state, Eq(DoodleState::AVAILABLE));
267 ASSERT_TRUE(response.has_value()); 267 ASSERT_TRUE(response.has_value());
268 EXPECT_THAT(response.value().expiry_date, Eq(TimeFromNow(0))); 268 EXPECT_THAT(response.value().expiry_date, Eq(TimeFromNow(0)));
269 } 269 }
270 270
271 TEST_F(DoodleFetcherTest, DoodleExpiresNowWithoutValidTTL) { 271 TEST_F(DoodleFetcherImplTest, DoodleExpiresNowWithoutValidTTL) {
272 DoodleState state(DoodleState::NO_DOODLE); 272 DoodleState state(DoodleState::NO_DOODLE);
273 base::Optional<DoodleConfig> response; 273 base::Optional<DoodleConfig> response;
274 274
275 doodle_fetcher()->FetchDoodle( 275 doodle_fetcher()->FetchDoodle(
276 CreateResponseSavingCallback(&state, &response)); 276 CreateResponseSavingCallback(&state, &response));
277 RespondWithData(R"json({"ddljson": { 277 RespondWithData(R"json({"ddljson": {
278 "large_image": {"url":"/logos/doodles/2015/some.gif"} 278 "large_image": {"url":"/logos/doodles/2015/some.gif"}
279 }})json"); 279 }})json");
280 280
281 EXPECT_THAT(state, Eq(DoodleState::AVAILABLE)); 281 EXPECT_THAT(state, Eq(DoodleState::AVAILABLE));
282 ASSERT_TRUE(response.has_value()); 282 ASSERT_TRUE(response.has_value());
283 EXPECT_THAT(response.value().expiry_date, Eq(TimeFromNow(0))); 283 EXPECT_THAT(response.value().expiry_date, Eq(TimeFromNow(0)));
284 } 284 }
285 285
286 TEST_F(DoodleFetcherTest, ReturnsNoDoodleForMissingLargeImageUrl) { 286 TEST_F(DoodleFetcherImplTest, ReturnsNoDoodleForMissingLargeImageUrl) {
287 DoodleState state(DoodleState::AVAILABLE); 287 DoodleState state(DoodleState::AVAILABLE);
288 base::Optional<DoodleConfig> response; 288 base::Optional<DoodleConfig> response;
289 289
290 doodle_fetcher()->FetchDoodle( 290 doodle_fetcher()->FetchDoodle(
291 CreateResponseSavingCallback(&state, &response)); 291 CreateResponseSavingCallback(&state, &response));
292 RespondWithData(R"json({"ddljson": { 292 RespondWithData(R"json({"ddljson": {
293 "time_to_live_ms":55000, 293 "time_to_live_ms":55000,
294 "large_image": {} 294 "large_image": {}
295 }})json"); 295 }})json");
296 296
297 EXPECT_THAT(state, Eq(DoodleState::NO_DOODLE)); 297 EXPECT_THAT(state, Eq(DoodleState::NO_DOODLE));
298 EXPECT_FALSE(response.has_value()); 298 EXPECT_FALSE(response.has_value());
299 } 299 }
300 300
301 TEST_F(DoodleFetcherTest, EmptyResponsesCausesNoDoodleState) { 301 TEST_F(DoodleFetcherImplTest, EmptyResponsesCausesNoDoodleState) {
302 DoodleState state(DoodleState::AVAILABLE); 302 DoodleState state(DoodleState::AVAILABLE);
303 base::Optional<DoodleConfig> response; 303 base::Optional<DoodleConfig> response;
304 304
305 doodle_fetcher()->FetchDoodle( 305 doodle_fetcher()->FetchDoodle(
306 CreateResponseSavingCallback(&state, &response)); 306 CreateResponseSavingCallback(&state, &response));
307 RespondWithData("{\"ddljson\":{}}"); 307 RespondWithData("{\"ddljson\":{}}");
308 308
309 EXPECT_THAT(state, Eq(DoodleState::NO_DOODLE)); 309 EXPECT_THAT(state, Eq(DoodleState::NO_DOODLE));
310 EXPECT_FALSE(response.has_value()); 310 EXPECT_FALSE(response.has_value());
311 } 311 }
312 312
313 TEST_F(DoodleFetcherTest, ResponseContainsExactlyTheSampleImages) { 313 TEST_F(DoodleFetcherImplTest, ResponseContainsExactlyTheSampleImages) {
314 DoodleState state(DoodleState::NO_DOODLE); 314 DoodleState state(DoodleState::NO_DOODLE);
315 base::Optional<DoodleConfig> response; 315 base::Optional<DoodleConfig> response;
316 316
317 doodle_fetcher()->FetchDoodle( 317 doodle_fetcher()->FetchDoodle(
318 CreateResponseSavingCallback(&state, &response)); 318 CreateResponseSavingCallback(&state, &response));
319 RespondWithData(R"json()]}'{ 319 RespondWithData(R"json()]}'{
320 "ddljson": { 320 "ddljson": {
321 "time_to_live_ms":55000, 321 "time_to_live_ms":55000,
322 "large_image": { 322 "large_image": {
323 "height":225, 323 "height":225,
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
367 EXPECT_TRUE(config.large_cta_image.url.is_valid()); 367 EXPECT_TRUE(config.large_cta_image.url.is_valid());
368 EXPECT_THAT(config.large_cta_image.url.spec(), 368 EXPECT_THAT(config.large_cta_image.url.spec(),
369 Eq(Resolve("/logos/doodles/2015/new-years-eve-2015-5985438795" 369 Eq(Resolve("/logos/doodles/2015/new-years-eve-2015-5985438795"
370 "8251-cta.gif"))); 370 "8251-cta.gif")));
371 EXPECT_THAT(config.large_cta_image.width, Eq(489)); 371 EXPECT_THAT(config.large_cta_image.width, Eq(489));
372 EXPECT_THAT(config.large_cta_image.height, Eq(225)); 372 EXPECT_THAT(config.large_cta_image.height, Eq(225));
373 EXPECT_TRUE(config.large_cta_image.is_animated_gif); 373 EXPECT_TRUE(config.large_cta_image.is_animated_gif);
374 EXPECT_TRUE(config.large_cta_image.is_cta); 374 EXPECT_TRUE(config.large_cta_image.is_cta);
375 } 375 }
376 376
377 TEST_F(DoodleFetcherTest, RespondsToMultipleRequestsWithSameFetcher) { 377 TEST_F(DoodleFetcherImplTest, RespondsToMultipleRequestsWithSameFetcher) {
378 DoodleState state1(DoodleState::NO_DOODLE); 378 DoodleState state1(DoodleState::NO_DOODLE);
379 DoodleState state2(DoodleState::NO_DOODLE); 379 DoodleState state2(DoodleState::NO_DOODLE);
380 base::Optional<DoodleConfig> response1; 380 base::Optional<DoodleConfig> response1;
381 base::Optional<DoodleConfig> response2; 381 base::Optional<DoodleConfig> response2;
382 382
383 // Trigger two requests. 383 // Trigger two requests.
384 doodle_fetcher()->FetchDoodle( 384 doodle_fetcher()->FetchDoodle(
385 CreateResponseSavingCallback(&state1, &response1)); 385 CreateResponseSavingCallback(&state1, &response1));
386 net::URLFetcher* first_created_fetcher = GetRunningFetcher(); 386 net::URLFetcher* first_created_fetcher = GetRunningFetcher();
387 doodle_fetcher()->FetchDoodle( 387 doodle_fetcher()->FetchDoodle(
388 CreateResponseSavingCallback(&state2, &response2)); 388 CreateResponseSavingCallback(&state2, &response2));
389 net::URLFetcher* second_created_fetcher = GetRunningFetcher(); 389 net::URLFetcher* second_created_fetcher = GetRunningFetcher();
390 390
391 // Expect that only one fetcher handles both requests. 391 // Expect that only one fetcher handles both requests.
392 EXPECT_THAT(first_created_fetcher, Eq(second_created_fetcher)); 392 EXPECT_THAT(first_created_fetcher, Eq(second_created_fetcher));
393 393
394 RespondWithData(R"json({"ddljson": { 394 RespondWithData(R"json({"ddljson": {
395 "time_to_live_ms":55000, 395 "time_to_live_ms":55000,
396 "large_image": {"url":"/logos/doodles/2015/some.gif"} 396 "large_image": {"url":"/logos/doodles/2015/some.gif"}
397 }})json"); 397 }})json");
398 398
399 // Ensure that both requests received a response. 399 // Ensure that both requests received a response.
400 EXPECT_THAT(state1, Eq(DoodleState::AVAILABLE)); 400 EXPECT_THAT(state1, Eq(DoodleState::AVAILABLE));
401 EXPECT_TRUE(response1.has_value()); 401 EXPECT_TRUE(response1.has_value());
402 EXPECT_THAT(state2, Eq(DoodleState::AVAILABLE)); 402 EXPECT_THAT(state2, Eq(DoodleState::AVAILABLE));
403 EXPECT_TRUE(response2.has_value()); 403 EXPECT_TRUE(response2.has_value());
404 } 404 }
405 405
406 TEST_F(DoodleFetcherTest, ReceivesBaseUrlFromTracker) { 406 TEST_F(DoodleFetcherImplTest, ReceivesBaseUrlFromTracker) {
407 doodle_fetcher()->FetchDoodle( 407 doodle_fetcher()->FetchDoodle(
408 CreateResponseSavingCallback(/*state=*/nullptr, /*response=*/nullptr)); 408 CreateResponseSavingCallback(/*state=*/nullptr, /*response=*/nullptr));
409 409
410 EXPECT_THAT(GetRunningFetcher()->GetOriginalURL(), 410 EXPECT_THAT(GetRunningFetcher()->GetOriginalURL(),
411 Eq(GetGoogleBaseURL().Resolve(kDoodleConfigPath))); 411 Eq(GetGoogleBaseURL().Resolve(kDoodleConfigPath)));
412 } 412 }
413 413
414 TEST_F(DoodleFetcherTest, OverridesBaseUrlWithCommandLineArgument) { 414 TEST_F(DoodleFetcherImplTest, OverridesBaseUrlWithCommandLineArgument) {
415 base::CommandLine::ForCurrentProcess()->AppendSwitchASCII( 415 base::CommandLine::ForCurrentProcess()->AppendSwitchASCII(
416 switches::kGoogleBaseURL, "http://www.google.kz"); 416 switches::kGoogleBaseURL, "http://www.google.kz");
417 417
418 doodle_fetcher()->FetchDoodle( 418 doodle_fetcher()->FetchDoodle(
419 CreateResponseSavingCallback(/*state=*/nullptr, /*response=*/nullptr)); 419 CreateResponseSavingCallback(/*state=*/nullptr, /*response=*/nullptr));
420 420
421 EXPECT_THAT(GetRunningFetcher()->GetOriginalURL(), 421 EXPECT_THAT(GetRunningFetcher()->GetOriginalURL(),
422 Eq(GURL("http://www.google.kz").Resolve(kDoodleConfigPath))); 422 Eq(GURL("http://www.google.kz").Resolve(kDoodleConfigPath)));
423 } 423 }
424 424
425 } // namespace doodle 425 } // namespace doodle
OLDNEW
« no previous file with comments | « components/doodle/doodle_fetcher_impl.cc ('k') | components/doodle/doodle_fetcher_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698