Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 "base/json/json_reader.h" | 5 #include "base/json/json_reader.h" |
| 6 #include "base/message_loop.h" | 6 #include "base/message_loop.h" |
| 7 #include "base/string_number_conversions.h" | 7 #include "base/string_number_conversions.h" |
| 8 #include "base/time.h" | 8 #include "base/time.h" |
| 9 #include "base/utf_string_conversions.h" | 9 #include "base/utf_string_conversions.h" |
| 10 #include "base/values.h" | 10 #include "base/values.h" |
| (...skipping 22 matching lines...) Expand all Loading... | |
| 33 | 33 |
| 34 protected: | 34 protected: |
| 35 TestingProfile profile_; | 35 TestingProfile profile_; |
| 36 ScopedTestingLocalState local_state_; | 36 ScopedTestingLocalState local_state_; |
| 37 scoped_refptr<PromoResourceService> web_resource_service_; | 37 scoped_refptr<PromoResourceService> web_resource_service_; |
| 38 MessageLoop loop_; | 38 MessageLoop loop_; |
| 39 }; | 39 }; |
| 40 | 40 |
| 41 // Verifies that custom dates read from a web resource server are written to | 41 // Verifies that custom dates read from a web resource server are written to |
| 42 // the preferences file. | 42 // the preferences file. |
| 43 TEST_F(PromoResourceServiceTest, UnpackLogoSignal) { | 43 TEST_F(PromoResourceServiceTest, UnpackLogoSignal) { |
|
Dan Beam
2012/06/04 18:41:04
don't seem relevant any more
achuithb
2012/06/04 19:52:59
Code is not yet deprecated.
| |
| 44 // Set up start and end dates in a Dictionary as if parsed from the service. | 44 // Set up start and end dates in a Dictionary as if parsed from the service. |
| 45 std::string json = "{ " | 45 std::string json = "{ " |
| 46 " \"topic\": {" | 46 " \"topic\": {" |
| 47 " \"answers\": [" | 47 " \"answers\": [" |
| 48 " {" | 48 " {" |
| 49 " \"name\": \"custom_logo_start\"," | 49 " \"name\": \"custom_logo_start\"," |
| 50 " \"inproduct\": \"31/01/10 01:00 GMT\"" | 50 " \"inproduct\": \"31/01/10 01:00 GMT\"" |
| 51 " }," | 51 " }," |
| 52 " {" | 52 " {" |
| 53 " \"name\": \"custom_logo_end\"," | 53 " \"name\": \"custom_logo_end\"," |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 110 base::JSONReader::Read(json))); | 110 base::JSONReader::Read(json))); |
| 111 | 111 |
| 112 // Check that prefs are set correctly. | 112 // Check that prefs are set correctly. |
| 113 web_resource_service_->UnpackLogoSignal(*(test_json.get())); | 113 web_resource_service_->UnpackLogoSignal(*(test_json.get())); |
| 114 logo_start = prefs->GetDouble(prefs::kNtpCustomLogoStart); | 114 logo_start = prefs->GetDouble(prefs::kNtpCustomLogoStart); |
| 115 EXPECT_EQ(logo_start, 0); // date value reset to 0; | 115 EXPECT_EQ(logo_start, 0); // date value reset to 0; |
| 116 logo_end = prefs->GetDouble(prefs::kNtpCustomLogoEnd); | 116 logo_end = prefs->GetDouble(prefs::kNtpCustomLogoEnd); |
| 117 EXPECT_EQ(logo_end, 0); // date value reset to 0; | 117 EXPECT_EQ(logo_end, 0); // date value reset to 0; |
| 118 } | 118 } |
| 119 | 119 |
| 120 class NotificationPromoTestDelegate : public NotificationPromo::Delegate { | 120 class NotificationPromoTest { |
| 121 public: | 121 public: |
| 122 explicit NotificationPromoTestDelegate(Profile* profile) | 122 explicit NotificationPromoTest(Profile* profile) |
| 123 : profile_(profile), | 123 : profile_(profile), |
| 124 prefs_(profile->GetPrefs()), | 124 prefs_(profile->GetPrefs()), |
| 125 notification_promo_(NULL), | 125 notification_promo_(profile), |
| 126 received_notification_(false), | 126 received_notification_(false), |
| 127 should_receive_notification_(false), | |
| 128 build_targeted_(true), | |
| 129 start_(0.0), | 127 start_(0.0), |
| 130 end_(0.0), | 128 end_(0.0), |
| 131 num_groups_(0), | 129 num_groups_(0), |
| 132 initial_segment_(0), | 130 initial_segment_(0), |
| 133 increment_(1), | 131 increment_(1), |
| 134 time_slice_(0), | 132 time_slice_(0), |
| 135 max_group_(0), | 133 max_group_(0), |
| 136 max_views_(0), | 134 max_views_(0), |
| 137 closed_(false), | 135 closed_(false), |
| 138 build_(PromoResourceService::NO_BUILD), | |
| 139 platform_(NotificationPromo::PLATFORM_NONE), | |
| 140 current_platform_(NotificationPromo::CurrentPlatform()), | |
| 141 gplus_required_(false) { | 136 gplus_required_(false) { |
| 142 } | 137 } |
| 143 | 138 |
| 144 void Init(NotificationPromo* notification_promo, | 139 void Init(const std::string& json, |
| 145 const std::string& json, | |
| 146 const std::string& promo_text, | 140 const std::string& promo_text, |
| 147 double start, double end, | 141 double start, double end, |
| 148 int num_groups, int initial_segment, int increment, | 142 int num_groups, int initial_segment, int increment, |
| 149 int time_slice, int max_group, int max_views, | 143 int time_slice, int max_group, int max_views, |
| 150 int build, int platform, bool gplus_required) { | 144 bool gplus_required) { |
| 151 notification_promo_ = notification_promo; | |
| 152 | |
| 153 Value* value(base::JSONReader::Read(json)); | 145 Value* value(base::JSONReader::Read(json)); |
| 154 ASSERT_TRUE(value); | 146 ASSERT_TRUE(value); |
| 155 DictionaryValue* dict = NULL; | 147 DictionaryValue* dict = NULL; |
| 156 value->GetAsDictionary(&dict); | 148 value->GetAsDictionary(&dict); |
| 157 ASSERT_TRUE(dict); | 149 ASSERT_TRUE(dict); |
| 158 test_json_.reset(dict); | 150 test_json_.reset(dict); |
| 159 | 151 |
| 160 promo_text_ = promo_text; | 152 promo_text_ = promo_text; |
| 161 | 153 |
| 162 start_ = start; | 154 start_ = start; |
| 163 end_ = end; | 155 end_ = end; |
| 164 | 156 |
| 165 num_groups_ = num_groups; | 157 num_groups_ = num_groups; |
| 166 initial_segment_ = initial_segment; | 158 initial_segment_ = initial_segment; |
| 167 increment_ = increment; | 159 increment_ = increment; |
| 168 time_slice_ = time_slice; | 160 time_slice_ = time_slice; |
| 169 max_group_ = max_group; | 161 max_group_ = max_group; |
| 170 | 162 |
| 171 max_views_ = max_views; | 163 max_views_ = max_views; |
| 172 | 164 |
| 173 build_ = build; | |
| 174 platform_ = platform; | |
| 175 | |
| 176 gplus_required_ = gplus_required; | 165 gplus_required_ = gplus_required; |
| 177 | 166 |
| 178 closed_ = false; | 167 closed_ = false; |
| 179 received_notification_ = false; | 168 received_notification_ = false; |
| 180 } | 169 } |
| 181 | 170 |
| 182 // NotificationPromo::Delegate implementation. | 171 void InitPromoFromJson(bool should_receive_notification) { |
| 183 virtual void OnNotificationParsed(double start, double end, | 172 notification_promo_.InitFromJson(*test_json_); |
| 184 bool new_notification) { | 173 EXPECT_EQ(should_receive_notification, |
| 185 if (should_receive_notification_) { | 174 notification_promo_.new_notification()); |
| 186 EXPECT_EQ(notification_promo_->StartTimeForGroup(), start); | |
| 187 EXPECT_EQ(notification_promo_->end_, end); | |
| 188 } | |
| 189 | |
| 190 received_notification_ = new_notification; | |
| 191 EXPECT_TRUE(received_notification_ == should_receive_notification_); | |
| 192 } | |
| 193 | |
| 194 virtual bool IsBuildAllowed(int builds_targeted) const { | |
| 195 EXPECT_EQ(builds_targeted, build_); | |
| 196 return build_targeted_; | |
| 197 } | |
| 198 | |
| 199 virtual int CurrentPlatform() const { | |
| 200 return current_platform_; | |
| 201 } | |
| 202 | |
| 203 void InitPromoFromJson(bool should_receive_notification, bool legacy) { | |
| 204 should_receive_notification_ = should_receive_notification; | |
| 205 received_notification_ = false; | |
| 206 if (legacy) | |
| 207 notification_promo_->InitFromJsonLegacy(*test_json_); | |
| 208 else | |
| 209 notification_promo_->InitFromJson(*test_json_); | |
| 210 EXPECT_TRUE(received_notification_ == should_receive_notification); | |
| 211 | 175 |
| 212 // Test the fields. | 176 // Test the fields. |
| 213 TestNotification(); | 177 TestNotification(); |
| 214 TestPrefs(); | 178 TestPrefs(); |
| 215 } | 179 } |
| 216 | 180 |
| 217 void TestNotification() { | 181 void TestNotification() { |
| 218 // Check values. | 182 // Check values. |
| 219 EXPECT_EQ(notification_promo_->promo_text_, promo_text_); | 183 EXPECT_EQ(notification_promo_.promo_text_, promo_text_); |
| 220 | 184 |
| 221 EXPECT_EQ(notification_promo_->start_, start_); | 185 EXPECT_EQ(notification_promo_.start_, start_); |
| 222 EXPECT_EQ(notification_promo_->end_, end_); | 186 EXPECT_EQ(notification_promo_.end_, end_); |
| 223 | 187 |
| 224 EXPECT_EQ(notification_promo_->num_groups_, num_groups_); | 188 EXPECT_EQ(notification_promo_.num_groups_, num_groups_); |
| 225 EXPECT_EQ(notification_promo_->initial_segment_, initial_segment_); | 189 EXPECT_EQ(notification_promo_.initial_segment_, initial_segment_); |
| 226 EXPECT_EQ(notification_promo_->increment_, increment_); | 190 EXPECT_EQ(notification_promo_.increment_, increment_); |
| 227 EXPECT_EQ(notification_promo_->time_slice_, time_slice_); | 191 EXPECT_EQ(notification_promo_.time_slice_, time_slice_); |
| 228 EXPECT_EQ(notification_promo_->max_group_, max_group_); | 192 EXPECT_EQ(notification_promo_.max_group_, max_group_); |
| 229 | 193 |
| 230 EXPECT_EQ(notification_promo_->max_views_, max_views_); | 194 EXPECT_EQ(notification_promo_.max_views_, max_views_); |
| 231 EXPECT_EQ(notification_promo_->closed_, closed_); | 195 EXPECT_EQ(notification_promo_.closed_, closed_); |
| 232 | 196 |
| 233 // Check group within bounds. | 197 // Check group within bounds. |
| 234 EXPECT_GE(notification_promo_->group_, 0); | 198 EXPECT_GE(notification_promo_.group_, 0); |
| 235 EXPECT_LT(notification_promo_->group_, num_groups_); | 199 EXPECT_LT(notification_promo_.group_, num_groups_); |
| 236 | 200 |
| 237 // Views should be 0 for now. | 201 // Views should be 0 for now. |
| 238 EXPECT_EQ(notification_promo_->views_, 0); | 202 EXPECT_EQ(notification_promo_.views_, 0); |
| 239 | 203 |
| 240 EXPECT_EQ(notification_promo_->build_, build_); | 204 EXPECT_EQ(notification_promo_.gplus_required_, gplus_required_); |
| 241 EXPECT_EQ(notification_promo_->platform_, platform_); | |
| 242 | |
| 243 EXPECT_EQ(notification_promo_->gplus_required_, gplus_required_); | |
| 244 } | 205 } |
| 245 | 206 |
| 246 void TestPrefs() { | 207 void TestPrefs() { |
| 247 EXPECT_EQ(prefs_->GetString(prefs::kNtpPromoLine), promo_text_); | 208 EXPECT_EQ(prefs_->GetString(prefs::kNtpPromoLine), promo_text_); |
| 248 | 209 |
| 249 EXPECT_EQ(prefs_->GetDouble(prefs::kNtpPromoStart), start_); | 210 EXPECT_EQ(prefs_->GetDouble(prefs::kNtpPromoStart), start_); |
| 250 EXPECT_EQ(prefs_->GetDouble(prefs::kNtpPromoEnd), end_); | 211 EXPECT_EQ(prefs_->GetDouble(prefs::kNtpPromoEnd), end_); |
| 251 | 212 |
| 252 EXPECT_EQ(prefs_->GetInteger(prefs::kNtpPromoNumGroups), num_groups_); | 213 EXPECT_EQ(prefs_->GetInteger(prefs::kNtpPromoNumGroups), num_groups_); |
| 253 EXPECT_EQ(prefs_->GetInteger(prefs::kNtpPromoInitialSegment), | 214 EXPECT_EQ(prefs_->GetInteger(prefs::kNtpPromoInitialSegment), |
| 254 initial_segment_); | 215 initial_segment_); |
| 255 EXPECT_EQ(prefs_->GetInteger(prefs::kNtpPromoIncrement), increment_); | 216 EXPECT_EQ(prefs_->GetInteger(prefs::kNtpPromoIncrement), increment_); |
| 256 EXPECT_EQ(prefs_->GetInteger(prefs::kNtpPromoGroupTimeSlice), time_slice_); | 217 EXPECT_EQ(prefs_->GetInteger(prefs::kNtpPromoGroupTimeSlice), time_slice_); |
| 257 EXPECT_EQ(prefs_->GetInteger(prefs::kNtpPromoGroupMax), max_group_); | 218 EXPECT_EQ(prefs_->GetInteger(prefs::kNtpPromoGroupMax), max_group_); |
| 258 | 219 |
| 259 EXPECT_EQ(prefs_->GetInteger(prefs::kNtpPromoViewsMax), max_views_); | 220 EXPECT_EQ(prefs_->GetInteger(prefs::kNtpPromoViewsMax), max_views_); |
| 260 EXPECT_EQ(prefs_->GetBoolean(prefs::kNtpPromoClosed), closed_); | 221 EXPECT_EQ(prefs_->GetBoolean(prefs::kNtpPromoClosed), closed_); |
| 261 | 222 |
| 262 EXPECT_EQ(prefs_->GetInteger(prefs::kNtpPromoGroup), | 223 EXPECT_EQ(prefs_->GetInteger(prefs::kNtpPromoGroup), |
| 263 notification_promo_ ? notification_promo_->group_: 0); | 224 notification_promo_.group_); |
| 264 EXPECT_EQ(prefs_->GetInteger(prefs::kNtpPromoViews), 0); | 225 EXPECT_EQ(prefs_->GetInteger(prefs::kNtpPromoViews), 0); |
| 265 | 226 |
| 266 EXPECT_EQ(prefs_->GetInteger(prefs::kNtpPromoBuild), build_); | |
| 267 EXPECT_EQ(prefs_->GetInteger(prefs::kNtpPromoPlatform), platform_); | |
| 268 | |
| 269 EXPECT_EQ(prefs_->GetBoolean(prefs::kNtpPromoGplusRequired), | 227 EXPECT_EQ(prefs_->GetBoolean(prefs::kNtpPromoGplusRequired), |
| 270 gplus_required_); | 228 gplus_required_); |
| 271 } | 229 } |
| 272 | 230 |
| 273 // Create a new NotificationPromo from prefs and compare to current | 231 // Create a new NotificationPromo from prefs and compare to current |
| 274 // notification. | 232 // notification. |
| 275 void TestInitFromPrefs() { | 233 void TestInitFromPrefs() { |
| 276 scoped_refptr<NotificationPromo> prefs_notification_promo = | 234 NotificationPromo prefs_notification_promo(profile_); |
| 277 NotificationPromo::Create(profile_, this); | 235 prefs_notification_promo.InitFromPrefs(); |
| 278 prefs_notification_promo->InitFromPrefs(); | |
| 279 | 236 |
| 280 EXPECT_EQ(notification_promo_->prefs_, | 237 EXPECT_EQ(notification_promo_.prefs_, |
| 281 prefs_notification_promo->prefs_); | 238 prefs_notification_promo.prefs_); |
| 282 EXPECT_EQ(notification_promo_->delegate_, | 239 EXPECT_EQ(notification_promo_.promo_text_, |
| 283 prefs_notification_promo->delegate_); | 240 prefs_notification_promo.promo_text_); |
| 284 EXPECT_EQ(notification_promo_->promo_text_, | 241 EXPECT_EQ(notification_promo_.start_, |
| 285 prefs_notification_promo->promo_text_); | 242 prefs_notification_promo.start_); |
| 286 EXPECT_EQ(notification_promo_->start_, | 243 EXPECT_EQ(notification_promo_.end_, |
| 287 prefs_notification_promo->start_); | 244 prefs_notification_promo.end_); |
| 288 EXPECT_EQ(notification_promo_->end_, | 245 EXPECT_EQ(notification_promo_.num_groups_, |
| 289 prefs_notification_promo->end_); | 246 prefs_notification_promo.num_groups_); |
| 290 EXPECT_EQ(notification_promo_->num_groups_, | 247 EXPECT_EQ(notification_promo_.initial_segment_, |
| 291 prefs_notification_promo->num_groups_); | 248 prefs_notification_promo.initial_segment_); |
| 292 EXPECT_EQ(notification_promo_->initial_segment_, | 249 EXPECT_EQ(notification_promo_.increment_, |
| 293 prefs_notification_promo->initial_segment_); | 250 prefs_notification_promo.increment_); |
| 294 EXPECT_EQ(notification_promo_->increment_, | 251 EXPECT_EQ(notification_promo_.time_slice_, |
| 295 prefs_notification_promo->increment_); | 252 prefs_notification_promo.time_slice_); |
| 296 EXPECT_EQ(notification_promo_->time_slice_, | 253 EXPECT_EQ(notification_promo_.max_group_, |
| 297 prefs_notification_promo->time_slice_); | 254 prefs_notification_promo.max_group_); |
| 298 EXPECT_EQ(notification_promo_->max_group_, | 255 EXPECT_EQ(notification_promo_.max_views_, |
| 299 prefs_notification_promo->max_group_); | 256 prefs_notification_promo.max_views_); |
| 300 EXPECT_EQ(notification_promo_->max_views_, | 257 EXPECT_EQ(notification_promo_.group_, |
| 301 prefs_notification_promo->max_views_); | 258 prefs_notification_promo.group_); |
| 302 EXPECT_EQ(notification_promo_->group_, | 259 EXPECT_EQ(notification_promo_.views_, |
| 303 prefs_notification_promo->group_); | 260 prefs_notification_promo.views_); |
| 304 EXPECT_EQ(notification_promo_->views_, | 261 EXPECT_EQ(notification_promo_.closed_, |
| 305 prefs_notification_promo->views_); | 262 prefs_notification_promo.closed_); |
| 306 EXPECT_EQ(notification_promo_->closed_, | 263 EXPECT_EQ(notification_promo_.gplus_required_, |
| 307 prefs_notification_promo->closed_); | 264 prefs_notification_promo.gplus_required_); |
| 308 EXPECT_EQ(notification_promo_->build_, | |
| 309 prefs_notification_promo->build_); | |
| 310 EXPECT_EQ(notification_promo_->platform_, | |
| 311 prefs_notification_promo->platform_); | |
| 312 EXPECT_EQ(notification_promo_->gplus_required_, | |
| 313 prefs_notification_promo->gplus_required_); | |
| 314 } | 265 } |
| 315 | 266 |
| 316 void TestGroup() { | 267 void TestGroup() { |
| 317 // Test out of range groups. | 268 // Test out of range groups. |
| 318 const int incr = num_groups_ / 20; | 269 const int incr = num_groups_ / 20; |
| 319 for (int i = max_group_; i < num_groups_; i += incr) { | 270 for (int i = max_group_; i < num_groups_; i += incr) { |
| 320 notification_promo_->group_ = i; | 271 notification_promo_.group_ = i; |
| 321 EXPECT_FALSE(notification_promo_->CanShow()); | 272 EXPECT_FALSE(notification_promo_.CanShow()); |
| 322 } | 273 } |
| 323 | 274 |
| 324 // Test in-range groups. | 275 // Test in-range groups. |
| 325 for (int i = 0; i < max_group_; i += incr) { | 276 for (int i = 0; i < max_group_; i += incr) { |
| 326 notification_promo_->group_ = i; | 277 notification_promo_.group_ = i; |
| 327 EXPECT_TRUE(notification_promo_->CanShow()); | 278 EXPECT_TRUE(notification_promo_.CanShow()); |
| 328 } | 279 } |
| 329 } | 280 } |
| 330 | 281 |
| 331 void TestViews() { | 282 void TestViews() { |
| 332 // Test out of range views. | 283 // Test out of range views. |
| 333 for (int i = max_views_; i < max_views_ * 2; ++i) { | 284 for (int i = max_views_; i < max_views_ * 2; ++i) { |
| 334 notification_promo_->views_ = i; | 285 notification_promo_.views_ = i; |
| 335 EXPECT_FALSE(notification_promo_->CanShow()); | 286 EXPECT_FALSE(notification_promo_.CanShow()); |
| 336 } | 287 } |
| 337 | 288 |
| 338 // Test in range views. | 289 // Test in range views. |
| 339 for (int i = 0; i < max_views_; ++i) { | 290 for (int i = 0; i < max_views_; ++i) { |
| 340 notification_promo_->views_ = i; | 291 notification_promo_.views_ = i; |
| 341 EXPECT_TRUE(notification_promo_->CanShow()); | 292 EXPECT_TRUE(notification_promo_.CanShow()); |
| 342 } | 293 } |
| 343 } | 294 } |
| 344 | 295 |
| 345 void TestBuild() { | 296 void TestClosed() { |
| 346 build_targeted_ = false; | 297 notification_promo_.closed_ = true; |
| 347 EXPECT_FALSE(notification_promo_->CanShow()); | 298 EXPECT_FALSE(notification_promo_.CanShow()); |
| 348 | 299 |
| 349 build_targeted_ = true; | 300 notification_promo_.closed_ = false; |
| 350 EXPECT_TRUE(notification_promo_->CanShow()); | 301 EXPECT_TRUE(notification_promo_.CanShow()); |
| 351 } | |
| 352 | |
| 353 void TestOnePlatform(int current_platform, bool expected) { | |
|
Dan Beam
2012/06/04 18:20:08
so you've removed all these because this is done o
achuithb
2012/06/04 19:52:59
The build/platform checks are now done for notific
| |
| 354 current_platform_ = current_platform; | |
| 355 EXPECT_EQ(expected, notification_promo_->CanShow()); | |
| 356 } | |
| 357 | |
| 358 void TestPlatformSet(int target_platform, bool expected_win, | |
| 359 bool expected_mac, bool expected_linux, bool expected_chromeos) { | |
| 360 notification_promo_->platform_ = target_platform; | |
| 361 TestOnePlatform(NotificationPromo::PLATFORM_WIN, expected_win); | |
| 362 TestOnePlatform(NotificationPromo::PLATFORM_MAC, expected_mac); | |
| 363 TestOnePlatform(NotificationPromo::PLATFORM_LINUX, expected_linux); | |
| 364 TestOnePlatform(NotificationPromo::PLATFORM_CHROMEOS, expected_chromeos); | |
| 365 } | |
| 366 | |
| 367 void TestPlatforms() { | |
| 368 int target_platform; | |
| 369 | |
| 370 // Windows and Mac only - test real current platform. | |
| 371 target_platform = 3; | |
| 372 notification_promo_->platform_ = target_platform; | |
| 373 bool expected = false; | |
| 374 #if defined(OS_WIN) || defined(OS_MACOSX) | |
| 375 expected = true; | |
| 376 #endif | |
| 377 EXPECT_EQ(expected, notification_promo_->CanShow()); | |
| 378 | |
| 379 // Windows only. | |
| 380 target_platform = 1; | |
| 381 EXPECT_EQ(target_platform, NotificationPromo::PLATFORM_WIN); | |
| 382 TestPlatformSet(target_platform, true, false, false, false); | |
| 383 | |
| 384 // Mac only. | |
| 385 target_platform = 2; | |
| 386 EXPECT_EQ(target_platform, NotificationPromo::PLATFORM_MAC); | |
| 387 TestPlatformSet(target_platform, false, true, false, false); | |
| 388 | |
| 389 // Linux only. | |
| 390 target_platform = 4; | |
| 391 EXPECT_EQ(target_platform, NotificationPromo::PLATFORM_LINUX); | |
| 392 TestPlatformSet(target_platform, false, false, true, false); | |
| 393 | |
| 394 // ChromeOS only. | |
| 395 target_platform = 8; | |
| 396 EXPECT_EQ(target_platform, NotificationPromo::PLATFORM_CHROMEOS); | |
| 397 TestPlatformSet(target_platform, false, false, false, true); | |
| 398 | |
| 399 // Non-Windows. | |
| 400 target_platform = 14; | |
| 401 EXPECT_EQ(target_platform, NotificationPromo::PLATFORM_ALL | |
| 402 & ~NotificationPromo::PLATFORM_WIN); | |
| 403 TestPlatformSet(target_platform, false, true, true, true); | |
| 404 | |
| 405 // Non-Mac. | |
| 406 target_platform = 13; | |
| 407 EXPECT_EQ(target_platform, NotificationPromo::PLATFORM_ALL | |
| 408 & ~NotificationPromo::PLATFORM_MAC); | |
| 409 TestPlatformSet(target_platform, true, false, true, true); | |
| 410 | |
| 411 // Non-Linux. | |
| 412 target_platform = 11; | |
| 413 EXPECT_EQ(target_platform, NotificationPromo::PLATFORM_ALL | |
| 414 & ~NotificationPromo::PLATFORM_LINUX); | |
| 415 TestPlatformSet(target_platform, true, true, false, true); | |
| 416 | |
| 417 // Non-ChromeOS. | |
| 418 target_platform = 7; | |
| 419 EXPECT_EQ(target_platform, NotificationPromo::PLATFORM_ALL | |
| 420 & ~NotificationPromo::PLATFORM_CHROMEOS); | |
| 421 TestPlatformSet(target_platform, true, true, true, false); | |
| 422 | |
| 423 // Windows and Mac. | |
| 424 target_platform = 3; | |
| 425 EXPECT_EQ(target_platform, NotificationPromo::PLATFORM_WIN | |
| 426 | NotificationPromo::PLATFORM_MAC); | |
| 427 TestPlatformSet(target_platform, true, true, false, false); | |
| 428 | |
| 429 // Windows and Linux. | |
| 430 target_platform = 5; | |
| 431 EXPECT_EQ(target_platform, NotificationPromo::PLATFORM_WIN | |
| 432 | NotificationPromo::PLATFORM_LINUX); | |
| 433 TestPlatformSet(target_platform, true, false, true, false); | |
| 434 | |
| 435 // Windows and ChromeOS. | |
| 436 target_platform = 9; | |
| 437 EXPECT_EQ(target_platform, NotificationPromo::PLATFORM_WIN | |
| 438 | NotificationPromo::PLATFORM_CHROMEOS); | |
| 439 TestPlatformSet(target_platform, true, false, false, true); | |
| 440 | |
| 441 // Mac and Linux. | |
| 442 target_platform = 6; | |
| 443 EXPECT_EQ(target_platform, NotificationPromo::PLATFORM_MAC | |
| 444 | NotificationPromo::PLATFORM_LINUX); | |
| 445 TestPlatformSet(target_platform, false, true, true, false); | |
| 446 | |
| 447 // Mac and ChromeOS. | |
| 448 target_platform = 10; | |
| 449 EXPECT_EQ(target_platform, NotificationPromo::PLATFORM_MAC | |
| 450 | NotificationPromo::PLATFORM_CHROMEOS); | |
| 451 TestPlatformSet(target_platform, false, true, false, true); | |
| 452 | |
| 453 // Linux and ChromeOS. | |
| 454 target_platform = 12; | |
| 455 EXPECT_EQ(target_platform, NotificationPromo::PLATFORM_LINUX | |
| 456 | NotificationPromo::PLATFORM_CHROMEOS); | |
| 457 TestPlatformSet(target_platform, false, false, true, true); | |
| 458 | |
| 459 // Disabled. | |
| 460 target_platform = 0; | |
| 461 EXPECT_EQ(target_platform, NotificationPromo::PLATFORM_NONE); | |
| 462 TestPlatformSet(target_platform, false, false, false, false); | |
| 463 | |
| 464 // All platforms. | |
| 465 target_platform = 15; | |
| 466 EXPECT_EQ(target_platform, NotificationPromo::PLATFORM_ALL); | |
| 467 TestPlatformSet(target_platform, true, true, true, true); | |
| 468 } | |
| 469 | |
| 470 void TestClosed() { | |
| 471 notification_promo_->closed_ = true; | |
| 472 EXPECT_FALSE(notification_promo_->CanShow()); | |
| 473 | |
| 474 notification_promo_->closed_ = false; | |
| 475 EXPECT_TRUE(notification_promo_->CanShow()); | |
| 476 } | 302 } |
| 477 | 303 |
| 478 void TestPromoText() { | 304 void TestPromoText() { |
| 479 notification_promo_->promo_text_.clear(); | 305 notification_promo_.promo_text_.clear(); |
| 480 EXPECT_FALSE(notification_promo_->CanShow()); | 306 EXPECT_FALSE(notification_promo_.CanShow()); |
| 481 | 307 |
| 482 notification_promo_->promo_text_ = promo_text_; | 308 notification_promo_.promo_text_ = promo_text_; |
| 483 EXPECT_TRUE(notification_promo_->CanShow()); | 309 EXPECT_TRUE(notification_promo_.CanShow()); |
| 484 } | 310 } |
| 485 | 311 |
| 486 void TestTime() { | 312 void TestTime() { |
| 487 const double now = base::Time::Now().ToDoubleT(); | 313 const double now = base::Time::Now().ToDoubleT(); |
| 488 const double qhour = 15 * 60; | 314 const double qhour = 15 * 60; |
| 489 | 315 |
| 490 notification_promo_->group_ = 0; // For simplicity. | 316 notification_promo_.group_ = 0; // For simplicity. |
| 491 | 317 |
| 492 notification_promo_->start_ = now - qhour; | 318 notification_promo_.start_ = now - qhour; |
| 493 notification_promo_->end_ = now + qhour; | 319 notification_promo_.end_ = now + qhour; |
| 494 EXPECT_TRUE(notification_promo_->CanShow()); | 320 EXPECT_TRUE(notification_promo_.CanShow()); |
| 495 | 321 |
| 496 // Start time has not arrived. | 322 // Start time has not arrived. |
| 497 notification_promo_->start_ = now + qhour; | 323 notification_promo_.start_ = now + qhour; |
| 498 notification_promo_->end_ = now + qhour; | 324 notification_promo_.end_ = now + qhour; |
| 499 EXPECT_FALSE(notification_promo_->CanShow()); | 325 EXPECT_FALSE(notification_promo_.CanShow()); |
| 500 | 326 |
| 501 // End time has past. | 327 // End time has past. |
| 502 notification_promo_->start_ = now - qhour; | 328 notification_promo_.start_ = now - qhour; |
| 503 notification_promo_->end_ = now - qhour; | 329 notification_promo_.end_ = now - qhour; |
| 504 EXPECT_FALSE(notification_promo_->CanShow()); | 330 EXPECT_FALSE(notification_promo_.CanShow()); |
| 505 | 331 |
| 506 notification_promo_->start_ = start_; | 332 notification_promo_.start_ = start_; |
| 507 notification_promo_->end_ = end_; | 333 notification_promo_.end_ = end_; |
| 508 EXPECT_TRUE(notification_promo_->CanShow()); | 334 EXPECT_TRUE(notification_promo_.CanShow()); |
| 509 } | 335 } |
| 510 | 336 |
| 511 void TestIncrement() { | 337 void TestIncrement() { |
| 512 const double now = base::Time::Now().ToDoubleT(); | 338 const double now = base::Time::Now().ToDoubleT(); |
| 513 const double slice = 60; | 339 const double slice = 60; |
| 514 | 340 |
| 515 notification_promo_->num_groups_ = 18; | 341 notification_promo_.num_groups_ = 18; |
| 516 notification_promo_->initial_segment_ = 5; | 342 notification_promo_.initial_segment_ = 5; |
| 517 notification_promo_->increment_ = 3; | 343 notification_promo_.increment_ = 3; |
| 518 notification_promo_->time_slice_ = slice; | 344 notification_promo_.time_slice_ = slice; |
| 519 | 345 |
| 520 notification_promo_->start_ = now - 1; | 346 notification_promo_.start_ = now - 1; |
| 521 notification_promo_->end_ = now + slice; | 347 notification_promo_.end_ = now + slice; |
| 522 | 348 |
| 523 // Test initial segment. | 349 // Test initial segment. |
| 524 notification_promo_->group_ = 4; | 350 notification_promo_.group_ = 4; |
| 525 EXPECT_TRUE(notification_promo_->CanShow()); | 351 EXPECT_TRUE(notification_promo_.CanShow()); |
| 526 notification_promo_->group_ = 5; | 352 notification_promo_.group_ = 5; |
| 527 EXPECT_FALSE(notification_promo_->CanShow()); | 353 EXPECT_FALSE(notification_promo_.CanShow()); |
| 528 | 354 |
| 529 // Test first increment. | 355 // Test first increment. |
| 530 notification_promo_->start_ -= slice; | 356 notification_promo_.start_ -= slice; |
| 531 notification_promo_->group_ = 7; | 357 notification_promo_.group_ = 7; |
| 532 EXPECT_TRUE(notification_promo_->CanShow()); | 358 EXPECT_TRUE(notification_promo_.CanShow()); |
| 533 notification_promo_->group_ = 8; | 359 notification_promo_.group_ = 8; |
| 534 EXPECT_FALSE(notification_promo_->CanShow()); | 360 EXPECT_FALSE(notification_promo_.CanShow()); |
| 535 | 361 |
| 536 // Test second increment. | 362 // Test second increment. |
| 537 notification_promo_->start_ -= slice; | 363 notification_promo_.start_ -= slice; |
| 538 notification_promo_->group_ = 10; | 364 notification_promo_.group_ = 10; |
| 539 EXPECT_TRUE(notification_promo_->CanShow()); | 365 EXPECT_TRUE(notification_promo_.CanShow()); |
| 540 notification_promo_->group_ = 11; | 366 notification_promo_.group_ = 11; |
| 541 EXPECT_FALSE(notification_promo_->CanShow()); | 367 EXPECT_FALSE(notification_promo_.CanShow()); |
| 542 | 368 |
| 543 // Test penultimate increment. | 369 // Test penultimate increment. |
| 544 notification_promo_->start_ -= 2 * slice; | 370 notification_promo_.start_ -= 2 * slice; |
| 545 notification_promo_->group_ = 16; | 371 notification_promo_.group_ = 16; |
| 546 EXPECT_TRUE(notification_promo_->CanShow()); | 372 EXPECT_TRUE(notification_promo_.CanShow()); |
| 547 notification_promo_->group_ = 17; | 373 notification_promo_.group_ = 17; |
| 548 EXPECT_FALSE(notification_promo_->CanShow()); | 374 EXPECT_FALSE(notification_promo_.CanShow()); |
| 549 | 375 |
| 550 // Test last increment. | 376 // Test last increment. |
| 551 notification_promo_->start_ -= slice; | 377 notification_promo_.start_ -= slice; |
| 552 EXPECT_TRUE(notification_promo_->CanShow()); | 378 EXPECT_TRUE(notification_promo_.CanShow()); |
| 553 } | 379 } |
| 554 | 380 |
| 555 void TestGplus() { | 381 void TestGplus() { |
| 556 notification_promo_->gplus_required_ = true; | 382 notification_promo_.gplus_required_ = true; |
| 557 | 383 |
| 558 // Test G+ required. | 384 // Test G+ required. |
| 559 notification_promo_->prefs_->SetBoolean(prefs::kIsGooglePlusUser, true); | 385 notification_promo_.prefs_->SetBoolean(prefs::kIsGooglePlusUser, true); |
| 560 EXPECT_TRUE(notification_promo_->CanShow()); | 386 EXPECT_TRUE(notification_promo_.CanShow()); |
| 561 notification_promo_->prefs_->SetBoolean(prefs::kIsGooglePlusUser, false); | 387 notification_promo_.prefs_->SetBoolean(prefs::kIsGooglePlusUser, false); |
| 562 EXPECT_FALSE(notification_promo_->CanShow()); | 388 EXPECT_FALSE(notification_promo_.CanShow()); |
| 563 | 389 |
| 564 notification_promo_->gplus_required_ = false; | 390 notification_promo_.gplus_required_ = false; |
| 565 | 391 |
| 566 // Test G+ not required. | 392 // Test G+ not required. |
| 567 notification_promo_->prefs_->SetBoolean(prefs::kIsGooglePlusUser, true); | 393 notification_promo_.prefs_->SetBoolean(prefs::kIsGooglePlusUser, true); |
| 568 EXPECT_TRUE(notification_promo_->CanShow()); | 394 EXPECT_TRUE(notification_promo_.CanShow()); |
| 569 notification_promo_->prefs_->SetBoolean(prefs::kIsGooglePlusUser, false); | 395 notification_promo_.prefs_->SetBoolean(prefs::kIsGooglePlusUser, false); |
| 570 EXPECT_TRUE(notification_promo_->CanShow()); | 396 EXPECT_TRUE(notification_promo_.CanShow()); |
| 571 } | 397 } |
| 572 | 398 |
| 573 private: | 399 private: |
| 574 Profile* profile_; | 400 Profile* profile_; |
| 575 PrefService* prefs_; | 401 PrefService* prefs_; |
| 576 NotificationPromo* notification_promo_; | 402 NotificationPromo notification_promo_; |
| 577 bool received_notification_; | 403 bool received_notification_; |
| 578 bool should_receive_notification_; | |
| 579 bool build_targeted_; | |
| 580 scoped_ptr<DictionaryValue> test_json_; | 404 scoped_ptr<DictionaryValue> test_json_; |
| 581 | 405 |
| 582 std::string promo_text_; | 406 std::string promo_text_; |
| 583 | 407 |
| 584 double start_; | 408 double start_; |
| 585 double end_; | 409 double end_; |
| 586 | 410 |
| 587 int num_groups_; | 411 int num_groups_; |
| 588 int initial_segment_; | 412 int initial_segment_; |
| 589 int increment_; | 413 int increment_; |
| 590 int time_slice_; | 414 int time_slice_; |
| 591 int max_group_; | 415 int max_group_; |
| 592 | 416 |
| 593 int max_views_; | 417 int max_views_; |
| 594 | 418 |
| 595 bool closed_; | 419 bool closed_; |
| 596 | 420 |
| 597 int build_; | |
| 598 int platform_; | |
| 599 int current_platform_; | |
| 600 | |
| 601 bool gplus_required_; | 421 bool gplus_required_; |
| 602 }; | 422 }; |
| 603 | 423 |
| 604 TEST_F(PromoResourceServiceTest, NotificationPromoTestLegacy) { | |
| 605 // Check that prefs are set correctly. | |
| 606 PrefService* prefs = profile_.GetPrefs(); | |
| 607 ASSERT_TRUE(prefs != NULL); | |
| 608 | |
| 609 NotificationPromoTestDelegate delegate(&profile_); | |
| 610 scoped_refptr<NotificationPromo> notification_promo = | |
| 611 NotificationPromo::Create(&profile_, &delegate); | |
| 612 | |
| 613 // Make sure prefs are unset. | |
| 614 delegate.TestPrefs(); | |
| 615 | |
| 616 // Set up start and end dates and promo line in a Dictionary as if parsed | |
| 617 // from the service. | |
| 618 delegate.Init(notification_promo, | |
| 619 "{ " | |
| 620 " \"topic\": {" | |
| 621 " \"answers\": [" | |
| 622 " {" | |
| 623 " \"name\": \"promo_start\"," | |
| 624 " \"question\": \"3:2:5:10:15:0\"," | |
| 625 " \"tooltip\": \"Eat more pie!\"," | |
| 626 " \"inproduct\": \"31/01/10 01:00 GMT\"" | |
| 627 " }," | |
| 628 " {" | |
| 629 " \"name\": \"promo_end\"," | |
| 630 " \"inproduct\": \"31/01/14 01:00 GMT\"" | |
| 631 " }" | |
| 632 " ]" | |
| 633 " }" | |
| 634 "}", | |
| 635 "Eat more pie!", | |
| 636 1264899600, // unix epoch for Jan 31 2010 0100 GMT. | |
| 637 1391130000, // unix epoch for Jan 31 2012 0100 GMT. | |
| 638 100, 0, 1, 2, 5, 10, 3, 15, false); | |
| 639 | |
| 640 delegate.InitPromoFromJson(true, true); | |
| 641 | |
| 642 // Second time should not trigger a notification. | |
| 643 delegate.InitPromoFromJson(false, true); | |
| 644 | |
| 645 delegate.TestInitFromPrefs(); | |
| 646 | |
| 647 // Test various conditions of CanShow. | |
| 648 // TestGroup Has the side effect of setting us to a passing group. | |
| 649 delegate.TestGroup(); | |
| 650 delegate.TestViews(); | |
| 651 delegate.TestBuild(); | |
| 652 delegate.TestClosed(); | |
| 653 delegate.TestPromoText(); | |
| 654 delegate.TestTime(); | |
| 655 delegate.TestPlatforms(); | |
| 656 } | |
| 657 | |
| 658 TEST_F(PromoResourceServiceTest, NotificationPromoTest) { | 424 TEST_F(PromoResourceServiceTest, NotificationPromoTest) { |
| 659 // Check that prefs are set correctly. | 425 // Check that prefs are set correctly. |
| 660 PrefService* prefs = profile_.GetPrefs(); | 426 PrefService* prefs = profile_.GetPrefs(); |
| 661 ASSERT_TRUE(prefs != NULL); | 427 ASSERT_TRUE(prefs != NULL); |
| 662 | 428 |
| 663 NotificationPromoTestDelegate delegate(&profile_); | 429 NotificationPromoTest promo_test(&profile_); |
| 664 scoped_refptr<NotificationPromo> notification_promo = | |
| 665 NotificationPromo::Create(&profile_, &delegate); | |
| 666 | 430 |
| 667 // Make sure prefs are unset. | 431 // Make sure prefs are unset. |
| 668 delegate.TestPrefs(); | 432 promo_test.TestPrefs(); |
| 669 | 433 |
| 670 // Set up start and end dates and promo line in a Dictionary as if parsed | 434 // Set up start and end dates and promo line in a Dictionary as if parsed |
| 671 // from the service. | 435 // from the service. |
| 672 delegate.Init(notification_promo, | 436 promo_test.Init("{" |
| 673 "{" | 437 " \"ntp_notification_promo\":" |
| 674 " \"ntp_notification_promo\":" | 438 " {" |
| 675 " {" | 439 " \"date\":" |
| 676 " \"date\":" | 440 " [" |
| 677 " [" | 441 " {" |
| 678 " {" | 442 " \"start\":\"15 Jan 2012 10:50:85 PST\"," |
| 679 " \"start\":\"15 Jan 2012 10:50:85 PST\"," | 443 " \"end\":\"7 Jan 2013 5:40:75 PST\"" |
| 680 " \"end\":\"7 Jan 2013 5:40:75 PST\"" | 444 " }" |
| 681 " }" | 445 " ]," |
| 682 " ]," | 446 " \"strings\":" |
| 683 " \"strings\":" | 447 " {" |
| 684 " {" | 448 " \"NTP4_HOW_DO_YOU_FEEL_ABOUT_CHROME\":" |
| 685 " \"NTP4_HOW_DO_YOU_FEEL_ABOUT_CHROME\":" | 449 " \"What do you think of Chrome?\"" |
| 686 " \"What do you think of Chrome?\"" | 450 " }," |
| 687 " }," | 451 " \"grouping\":" |
| 688 " \"grouping\":" | 452 " {" |
| 689 " {" | 453 " \"buckets\":1000," |
| 690 " \"buckets\":1000," | 454 " \"segment\":200," |
| 691 " \"segment\":200," | 455 " \"increment\":100," |
| 692 " \"increment\":100," | 456 " \"increment_frequency\":3600," |
| 693 " \"increment_frequency\":3600," | 457 " \"increment_max\":400" |
| 694 " \"increment_max\":400" | 458 " }," |
| 695 " }," | 459 " \"payload\":" |
| 696 " \"payload\":" | 460 " {" |
| 697 " {" | 461 " \"days_active\":7," |
| 698 " \"days_active\":7," | 462 " \"install_age_days\":21," |
| 699 " \"install_age_days\":21," | 463 " \"gplus_required\":false" |
| 700 " \"gplus_required\":false" | 464 " }," |
| 701 " }," | 465 " \"max_views\":30" |
| 702 " \"max_views\":30" | 466 " }" |
| 703 " }" | 467 "}", |
| 704 "}", | 468 "What do you think of Chrome?", |
| 705 "What do you think of Chrome?", | 469 1326653485, // unix epoch for 15 Jan 2012 10:50:85 PST. |
| 706 1326653485, // unix epoch for 15 Jan 2012 10:50:85 PST. | 470 1357566075, // unix epoch for 7 Jan 2013 5:40:75 PST. |
| 707 1357566075, // unix epoch for 7 Jan 2013 5:40:75 PST. | 471 1000, 200, 100, 3600, 400, 30, false); |
| 708 1000, 200, 100, 3600, 400, 30, 15, 15, false); | |
| 709 | 472 |
| 710 delegate.InitPromoFromJson(true, false); | 473 promo_test.InitPromoFromJson(true); |
| 711 | 474 |
| 712 // Second time should not trigger a notification. | 475 // Second time should not trigger a notification. |
| 713 delegate.InitPromoFromJson(false, false); | 476 promo_test.InitPromoFromJson(false); |
| 714 | 477 |
| 715 delegate.TestInitFromPrefs(); | 478 promo_test.TestInitFromPrefs(); |
| 716 | 479 |
| 717 // Test various conditions of CanShow. | 480 // Test various conditions of CanShow. |
| 718 // TestGroup Has the side effect of setting us to a passing group. | 481 // TestGroup Has the side effect of setting us to a passing group. |
| 719 delegate.TestGroup(); | 482 promo_test.TestGroup(); |
| 720 delegate.TestViews(); | 483 promo_test.TestViews(); |
| 721 delegate.TestBuild(); | 484 promo_test.TestClosed(); |
| 722 delegate.TestClosed(); | 485 promo_test.TestPromoText(); |
| 723 delegate.TestPromoText(); | 486 promo_test.TestTime(); |
| 724 delegate.TestTime(); | 487 promo_test.TestIncrement(); |
| 725 delegate.TestIncrement(); | 488 promo_test.TestGplus(); |
| 726 delegate.TestPlatforms(); | |
| 727 delegate.TestGplus(); | |
| 728 } | |
| 729 | |
| 730 TEST_F(PromoResourceServiceTest, NotificationPromoTestFail) { | |
| 731 // Check that prefs are set correctly. | |
| 732 PrefService* prefs = profile_.GetPrefs(); | |
| 733 ASSERT_TRUE(prefs != NULL); | |
| 734 | |
| 735 NotificationPromoTestDelegate delegate(&profile_); | |
| 736 scoped_refptr<NotificationPromo> notification_promo = | |
| 737 NotificationPromo::Create(&profile_, &delegate); | |
| 738 | |
| 739 // Set up start and end dates and promo line in a Dictionary as if parsed | |
| 740 // from the service. | |
| 741 delegate.Init(notification_promo, | |
| 742 "{ " | |
| 743 " \"topic\": {" | |
| 744 " \"answers\": [" | |
| 745 " {" | |
| 746 " \"name\": \"promo_start\"," | |
| 747 " \"question\": \"12:8:10:20:15\"," | |
| 748 " \"tooltip\": \"Happy 3rd Birthday!\"," | |
| 749 " \"inproduct\": \"09/15/10 05:00 PDT\"" | |
| 750 " }," | |
| 751 " {" | |
| 752 " \"name\": \"promo_end\"," | |
| 753 " \"inproduct\": \"09/30/10 05:00 PDT\"" | |
| 754 " }" | |
| 755 " ]" | |
| 756 " }" | |
| 757 "}", | |
| 758 "Happy 3rd Birthday!", | |
| 759 1284552000, // unix epoch for Sep 15 2010 0500 PDT. | |
| 760 1285848000, // unix epoch for Sep 30 2010 0500 PDT. | |
| 761 100, 0, 1, 8, 10, 20, 12, 15, false); | |
| 762 | |
| 763 delegate.InitPromoFromJson(true, true); | |
| 764 | |
| 765 // Second time should not trigger a notification. | |
| 766 delegate.InitPromoFromJson(false, true); | |
| 767 | |
| 768 delegate.TestInitFromPrefs(); | |
| 769 | |
| 770 // Should fail because out of time bounds. | |
| 771 EXPECT_FALSE(notification_promo->CanShow()); | |
| 772 } | |
| 773 | |
| 774 TEST_F(PromoResourceServiceTest, GetNextQuestionValueTest) { | |
| 775 const std::string question("0:-100:2048:0:0:0:2a"); | |
| 776 const int question_vec[] = { 0, -100, 2048, 0, 0, 0}; | |
| 777 size_t index = 0; | |
| 778 bool err = false; | |
| 779 | |
| 780 for (size_t i = 0; i < arraysize(question_vec); ++i) { | |
| 781 EXPECT_EQ(question_vec[i], | |
| 782 NotificationPromo::GetNextQuestionValue(question, &index, &err)); | |
| 783 EXPECT_FALSE(err); | |
| 784 } | |
| 785 EXPECT_EQ(NotificationPromo::GetNextQuestionValue(question, &index, &err), 0); | |
| 786 EXPECT_TRUE(err); | |
| 787 } | 489 } |
| 788 | 490 |
| 789 TEST_F(PromoResourceServiceTest, PromoServerURLTest) { | 491 TEST_F(PromoResourceServiceTest, PromoServerURLTest) { |
| 790 GURL promo_server_url = NotificationPromo::PromoServerURL(); | 492 GURL promo_server_url = NotificationPromo::PromoServerURL(); |
| 791 EXPECT_FALSE(promo_server_url.is_empty()); | 493 EXPECT_FALSE(promo_server_url.is_empty()); |
| 792 // TODO(achuith): Test this better. | 494 // TODO(achuith): Test this better. |
|
Dan Beam
2012/06/04 18:20:08
can you add something here in the future (or now,
achuithb
2012/06/04 19:52:59
Done.
| |
| 793 } | 495 } |
| 794 | 496 |
| 795 TEST_F(PromoResourceServiceTest, UnpackWebStoreSignal) { | 497 TEST_F(PromoResourceServiceTest, UnpackWebStoreSignal) { |
|
Dan Beam
2012/06/04 18:20:08
same overall question about legacy vs. new: do we
achuithb
2012/06/04 19:52:59
Answered elsewhere
| |
| 796 web_resource_service_->set_channel(chrome::VersionInfo::CHANNEL_DEV); | 498 web_resource_service_->set_channel(chrome::VersionInfo::CHANNEL_DEV); |
| 797 | 499 |
| 798 std::string json = "{ " | 500 std::string json = "{ " |
| 799 " \"topic\": {" | 501 " \"topic\": {" |
| 800 " \"answers\": [" | 502 " \"answers\": [" |
| 801 " {" | 503 " {" |
| 802 " \"answer_id\": \"341252\"," | 504 " \"answer_id\": \"341252\"," |
| 803 " \"name\": \"webstore_promo:15:1:\"," | 505 " \"name\": \"webstore_promo:15:1:\"," |
| 804 " \"question\": \"The header!\"," | 506 " \"question\": \"The header!\"," |
| 805 " \"inproduct_target\": \"The button label!\"," | 507 " \"inproduct_target\": \"The button label!\"," |
| (...skipping 203 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1009 EXPECT_EQ("The button label!", actual_data.button); | 711 EXPECT_EQ("The button label!", actual_data.button); |
| 1010 EXPECT_EQ(GURL("http://link.com"), actual_data.link); | 712 EXPECT_EQ(GURL("http://link.com"), actual_data.link); |
| 1011 EXPECT_EQ("No thanks, hide this.", actual_data.expire); | 713 EXPECT_EQ("No thanks, hide this.", actual_data.expire); |
| 1012 EXPECT_EQ(AppsPromo::USERS_NEW, actual_data.user_group); | 714 EXPECT_EQ(AppsPromo::USERS_NEW, actual_data.user_group); |
| 1013 | 715 |
| 1014 // Logos should be the default values because HTTP URLs are not valid. | 716 // Logos should be the default values because HTTP URLs are not valid. |
| 1015 EXPECT_EQ(GURL("chrome://theme/IDR_WEBSTORE_ICON"), actual_data.logo); | 717 EXPECT_EQ(GURL("chrome://theme/IDR_WEBSTORE_ICON"), actual_data.logo); |
| 1016 EXPECT_EQ(GURL(""), AppsPromo::GetSourcePromoLogoURL()); | 718 EXPECT_EQ(GURL(""), AppsPromo::GetSourcePromoLogoURL()); |
| 1017 } | 719 } |
| 1018 | 720 |
| 1019 TEST_F(PromoResourceServiceTest, IsBuildTargetedTest) { | 721 TEST_F(PromoResourceServiceTest, IsBuildTargetedTest) { |
|
Dan Beam
2012/06/04 18:20:08
do we still do this on the client?
achuithb
2012/06/04 19:52:59
Yup, for webstore/logo
| |
| 1020 // canary | 722 // canary |
| 1021 const chrome::VersionInfo::Channel canary = | 723 const chrome::VersionInfo::Channel canary = |
| 1022 chrome::VersionInfo::CHANNEL_CANARY; | 724 chrome::VersionInfo::CHANNEL_CANARY; |
| 1023 EXPECT_FALSE(PromoResourceService::IsBuildTargeted(canary, 1)); | 725 EXPECT_FALSE(PromoResourceService::IsBuildTargeted(canary, 1)); |
| 1024 EXPECT_FALSE(PromoResourceService::IsBuildTargeted(canary, 3)); | 726 EXPECT_FALSE(PromoResourceService::IsBuildTargeted(canary, 3)); |
| 1025 EXPECT_FALSE(PromoResourceService::IsBuildTargeted(canary, 7)); | 727 EXPECT_FALSE(PromoResourceService::IsBuildTargeted(canary, 7)); |
| 1026 EXPECT_TRUE(PromoResourceService::IsBuildTargeted(canary, 15)); | 728 EXPECT_TRUE(PromoResourceService::IsBuildTargeted(canary, 15)); |
| 1027 EXPECT_TRUE(PromoResourceService::IsBuildTargeted(canary, 8)); | 729 EXPECT_TRUE(PromoResourceService::IsBuildTargeted(canary, 8)); |
| 1028 EXPECT_TRUE(PromoResourceService::IsBuildTargeted(canary, 11)); | 730 EXPECT_TRUE(PromoResourceService::IsBuildTargeted(canary, 11)); |
| 1029 | 731 |
| (...skipping 25 matching lines...) Expand all Loading... | |
| 1055 EXPECT_TRUE(PromoResourceService::IsBuildTargeted(stable, 7)); | 757 EXPECT_TRUE(PromoResourceService::IsBuildTargeted(stable, 7)); |
| 1056 EXPECT_TRUE(PromoResourceService::IsBuildTargeted(stable, 15)); | 758 EXPECT_TRUE(PromoResourceService::IsBuildTargeted(stable, 15)); |
| 1057 EXPECT_FALSE(PromoResourceService::IsBuildTargeted(stable, 8)); | 759 EXPECT_FALSE(PromoResourceService::IsBuildTargeted(stable, 8)); |
| 1058 EXPECT_FALSE(PromoResourceService::IsBuildTargeted(stable, 11)); | 760 EXPECT_FALSE(PromoResourceService::IsBuildTargeted(stable, 11)); |
| 1059 EXPECT_TRUE(PromoResourceService::IsBuildTargeted(stable, 12)); | 761 EXPECT_TRUE(PromoResourceService::IsBuildTargeted(stable, 12)); |
| 1060 | 762 |
| 1061 // invalid | 763 // invalid |
| 1062 EXPECT_FALSE(PromoResourceService::IsBuildTargeted(stable, -1)); | 764 EXPECT_FALSE(PromoResourceService::IsBuildTargeted(stable, -1)); |
| 1063 EXPECT_FALSE(PromoResourceService::IsBuildTargeted(stable, INT_MAX)); | 765 EXPECT_FALSE(PromoResourceService::IsBuildTargeted(stable, INT_MAX)); |
| 1064 } | 766 } |
| OLD | NEW |