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

Side by Side Diff: chrome/browser/web_resource/promo_resource_service_unittest.cc

Issue 10790089: Preferences support for multiple promos. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 8 years, 5 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 | Annotate | Revision Log
« no previous file with comments | « chrome/browser/web_resource/notification_promo.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 <vector>
6
5 #include "base/json/json_reader.h" 7 #include "base/json/json_reader.h"
6 #include "base/message_loop.h" 8 #include "base/message_loop.h"
7 #include "base/string_number_conversions.h" 9 #include "base/string_number_conversions.h"
8 #include "base/time.h" 10 #include "base/time.h"
9 #include "base/utf_string_conversions.h" 11 #include "base/utf_string_conversions.h"
10 #include "base/values.h" 12 #include "base/values.h"
11 #include "chrome/browser/browser_process.h" 13 #include "chrome/browser/browser_process.h"
12 #include "chrome/browser/prefs/browser_prefs.h" 14 #include "chrome/browser/prefs/browser_prefs.h"
13 #include "chrome/browser/prefs/pref_service.h" 15 #include "chrome/browser/prefs/pref_service.h"
14 #include "chrome/browser/web_resource/notification_promo.h" 16 #include "chrome/browser/web_resource/notification_promo.h"
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
101 received_notification_ = false; 103 received_notification_ = false;
102 } 104 }
103 105
104 void InitPromoFromJson(bool should_receive_notification) { 106 void InitPromoFromJson(bool should_receive_notification) {
105 notification_promo_.InitFromJson(*test_json_); 107 notification_promo_.InitFromJson(*test_json_);
106 EXPECT_EQ(should_receive_notification, 108 EXPECT_EQ(should_receive_notification,
107 notification_promo_.new_notification()); 109 notification_promo_.new_notification());
108 110
109 // Test the fields. 111 // Test the fields.
110 TestNotification(); 112 TestNotification();
111 TestPrefs();
112 } 113 }
113 114
114 void TestNotification() { 115 void TestNotification() {
115 // Check values. 116 // Check values.
116 EXPECT_EQ(notification_promo_.promo_text_, promo_text_); 117 EXPECT_EQ(notification_promo_.promo_text_, promo_text_);
117 118
118 #if defined(OS_ANDROID) 119 #if defined(OS_ANDROID)
119 EXPECT_EQ(notification_promo_.promo_text_long_, promo_text_long_); 120 EXPECT_EQ(notification_promo_.promo_text_long_, promo_text_long_);
120 EXPECT_EQ(notification_promo_.promo_action_type_, promo_action_type_); 121 EXPECT_EQ(notification_promo_.promo_action_type_, promo_action_type_);
121 EXPECT_TRUE(notification_promo_.promo_action_args_.get() != NULL); 122 EXPECT_TRUE(notification_promo_.promo_action_args_.get() != NULL);
(...skipping 22 matching lines...) Expand all
144 // Check group within bounds. 145 // Check group within bounds.
145 EXPECT_GE(notification_promo_.group_, 0); 146 EXPECT_GE(notification_promo_.group_, 0);
146 EXPECT_LT(notification_promo_.group_, num_groups_); 147 EXPECT_LT(notification_promo_.group_, num_groups_);
147 148
148 // Views should be 0 for now. 149 // Views should be 0 for now.
149 EXPECT_EQ(notification_promo_.views_, 0); 150 EXPECT_EQ(notification_promo_.views_, 0);
150 151
151 EXPECT_EQ(notification_promo_.gplus_required_, gplus_required_); 152 EXPECT_EQ(notification_promo_.gplus_required_, gplus_required_);
152 } 153 }
153 154
154 void TestPrefs() {
155 EXPECT_EQ(prefs_->GetString(prefs::kNtpPromoLine), promo_text_);
156 #if defined(OS_ANDROID)
157 EXPECT_EQ(prefs_->GetString(prefs::kNtpPromoLineLong), promo_text_long_);
158 EXPECT_EQ(prefs_->GetString(prefs::kNtpPromoActionType),
159 promo_action_type_);
160 const base::ListValue* lv = prefs_->GetList(prefs::kNtpPromoActionArgs);
161 EXPECT_TRUE(lv != NULL);
162 EXPECT_EQ(lv->GetSize(), promo_action_args_.size());
163 for (std::size_t i = 0; i < lv->GetSize(); ++i) {
164 std::string value;
165 EXPECT_TRUE(lv->GetString(i, &value));
166 EXPECT_EQ(value, promo_action_args_[i]);
167 }
168 #endif // defined(OS_ANDROID)
169
170 EXPECT_EQ(prefs_->GetDouble(prefs::kNtpPromoStart), start_);
171 EXPECT_EQ(prefs_->GetDouble(prefs::kNtpPromoEnd), end_);
172
173 EXPECT_EQ(prefs_->GetInteger(prefs::kNtpPromoNumGroups), num_groups_);
174 EXPECT_EQ(prefs_->GetInteger(prefs::kNtpPromoInitialSegment),
175 initial_segment_);
176 EXPECT_EQ(prefs_->GetInteger(prefs::kNtpPromoIncrement), increment_);
177 EXPECT_EQ(prefs_->GetInteger(prefs::kNtpPromoGroupTimeSlice), time_slice_);
178 EXPECT_EQ(prefs_->GetInteger(prefs::kNtpPromoGroupMax), max_group_);
179
180 EXPECT_EQ(prefs_->GetInteger(prefs::kNtpPromoViewsMax), max_views_);
181 EXPECT_EQ(prefs_->GetBoolean(prefs::kNtpPromoClosed), closed_);
182
183 EXPECT_EQ(prefs_->GetInteger(prefs::kNtpPromoGroup),
184 notification_promo_.group_);
185 EXPECT_EQ(prefs_->GetInteger(prefs::kNtpPromoViews), 0);
186
187 EXPECT_EQ(prefs_->GetBoolean(prefs::kNtpPromoGplusRequired),
188 gplus_required_);
189 }
190
191 // Create a new NotificationPromo from prefs and compare to current 155 // Create a new NotificationPromo from prefs and compare to current
192 // notification. 156 // notification.
193 void TestInitFromPrefs() { 157 void TestInitFromPrefs() {
194 NotificationPromo prefs_notification_promo(profile_); 158 NotificationPromo prefs_notification_promo(profile_);
195 prefs_notification_promo.InitFromPrefs(); 159 prefs_notification_promo.InitFromPrefs();
196 160
197 EXPECT_EQ(notification_promo_.prefs_, 161 EXPECT_EQ(notification_promo_.prefs_,
198 prefs_notification_promo.prefs_); 162 prefs_notification_promo.prefs_);
199 EXPECT_EQ(notification_promo_.promo_text_, 163 EXPECT_EQ(notification_promo_.promo_text_,
200 prefs_notification_promo.promo_text_); 164 prefs_notification_promo.promo_text_);
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
258 notification_promo_.group_ = i; 222 notification_promo_.group_ = i;
259 EXPECT_TRUE(notification_promo_.CanShow()); 223 EXPECT_TRUE(notification_promo_.CanShow());
260 } 224 }
261 225
262 // When max_group_ is 0, all groups pass. 226 // When max_group_ is 0, all groups pass.
263 notification_promo_.max_group_ = 0; 227 notification_promo_.max_group_ = 0;
264 for (int i = 0; i < num_groups_; i += incr) { 228 for (int i = 0; i < num_groups_; i += incr) {
265 notification_promo_.group_ = i; 229 notification_promo_.group_ = i;
266 EXPECT_TRUE(notification_promo_.CanShow()); 230 EXPECT_TRUE(notification_promo_.CanShow());
267 } 231 }
232 notification_promo_.WritePrefs();
268 } 233 }
269 234
270 void TestViews() { 235 void TestViews() {
236 notification_promo_.views_ = notification_promo_.max_views_ - 2;
237 notification_promo_.WritePrefs();
238
239 NotificationPromo new_promo(profile_);
240 new_promo.HandleViewed();
241 EXPECT_TRUE(new_promo.CanShow());
242 new_promo.HandleViewed();
243 EXPECT_FALSE(new_promo.CanShow());
244
245 notification_promo_.InitFromPrefs();
246 EXPECT_FALSE(notification_promo_.CanShow());
247
271 // Test out of range views. 248 // Test out of range views.
272 for (int i = max_views_; i < max_views_ * 2; ++i) { 249 for (int i = max_views_; i < max_views_ * 2; ++i) {
273 notification_promo_.views_ = i; 250 notification_promo_.views_ = i;
274 EXPECT_FALSE(notification_promo_.CanShow()); 251 EXPECT_FALSE(notification_promo_.CanShow());
275 } 252 }
276 253
277 // Test in range views. 254 // Test in range views.
278 for (int i = 0; i < max_views_; ++i) { 255 for (int i = 0; i < max_views_; ++i) {
279 notification_promo_.views_ = i; 256 notification_promo_.views_ = i;
280 EXPECT_TRUE(notification_promo_.CanShow()); 257 EXPECT_TRUE(notification_promo_.CanShow());
281 } 258 }
259 notification_promo_.WritePrefs();
282 } 260 }
283 261
284 void TestClosed() { 262 void TestClosed() {
263 NotificationPromo new_promo(profile_);
264 new_promo.InitFromPrefs();
265 EXPECT_TRUE(new_promo.CanShow());
266 new_promo.HandleClosed();
267 EXPECT_FALSE(new_promo.CanShow());
268 new_promo.InitFromPrefs();
269 EXPECT_FALSE(new_promo.CanShow());
270
285 notification_promo_.closed_ = true; 271 notification_promo_.closed_ = true;
286 EXPECT_FALSE(notification_promo_.CanShow()); 272 EXPECT_FALSE(notification_promo_.CanShow());
287 273
288 notification_promo_.closed_ = false; 274 notification_promo_.closed_ = false;
289 EXPECT_TRUE(notification_promo_.CanShow()); 275 EXPECT_TRUE(notification_promo_.CanShow());
276 notification_promo_.WritePrefs();
290 } 277 }
291 278
292 void TestPromoText() { 279 void TestPromoText() {
293 notification_promo_.promo_text_.clear(); 280 notification_promo_.promo_text_.clear();
294 EXPECT_FALSE(notification_promo_.CanShow()); 281 EXPECT_FALSE(notification_promo_.CanShow());
295 282
296 notification_promo_.promo_text_ = promo_text_; 283 notification_promo_.promo_text_ = promo_text_;
297 EXPECT_TRUE(notification_promo_.CanShow()); 284 EXPECT_TRUE(notification_promo_.CanShow());
298 } 285 }
299 286
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
414 bool gplus_required_; 401 bool gplus_required_;
415 }; 402 };
416 403
417 TEST_F(PromoResourceServiceTest, NotificationPromoTest) { 404 TEST_F(PromoResourceServiceTest, NotificationPromoTest) {
418 // Check that prefs are set correctly. 405 // Check that prefs are set correctly.
419 PrefService* prefs = profile_.GetPrefs(); 406 PrefService* prefs = profile_.GetPrefs();
420 ASSERT_TRUE(prefs != NULL); 407 ASSERT_TRUE(prefs != NULL);
421 408
422 NotificationPromoTest promo_test(&profile_); 409 NotificationPromoTest promo_test(&profile_);
423 410
424 // Make sure prefs are unset.
425 promo_test.TestPrefs();
426
427 // Set up start and end dates and promo line in a Dictionary as if parsed 411 // Set up start and end dates and promo line in a Dictionary as if parsed
428 // from the service. 412 // from the service.
429 #if !defined(OS_ANDROID) 413 #if !defined(OS_ANDROID)
430 promo_test.Init("{" 414 promo_test.Init("{"
431 " \"ntp_notification_promo\": [" 415 " \"ntp_notification_promo\": ["
432 " {" 416 " {"
433 " \"date\":" 417 " \"date\":"
434 " [" 418 " ["
435 " {" 419 " {"
436 " \"start\":\"15 Jan 2012 10:50:85 PST\"," 420 " \"start\":\"15 Jan 2012 10:50:85 PST\","
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
534 promo_test.TestIncrement(); 518 promo_test.TestIncrement();
535 promo_test.TestGplus(); 519 promo_test.TestGplus();
536 } 520 }
537 521
538 TEST_F(PromoResourceServiceTest, PromoServerURLTest) { 522 TEST_F(PromoResourceServiceTest, PromoServerURLTest) {
539 GURL promo_server_url = NotificationPromo::PromoServerURL(); 523 GURL promo_server_url = NotificationPromo::PromoServerURL();
540 EXPECT_FALSE(promo_server_url.is_empty()); 524 EXPECT_FALSE(promo_server_url.is_empty());
541 EXPECT_TRUE(promo_server_url.SchemeIs("https")); 525 EXPECT_TRUE(promo_server_url.SchemeIs("https"));
542 // TODO(achuith): Test this better. 526 // TODO(achuith): Test this better.
543 } 527 }
OLDNEW
« no previous file with comments | « chrome/browser/web_resource/notification_promo.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698