| Index: chrome/browser/web_resource/promo_resource_service_unittest.cc
|
| ===================================================================
|
| --- chrome/browser/web_resource/promo_resource_service_unittest.cc (revision 140356)
|
| +++ chrome/browser/web_resource/promo_resource_service_unittest.cc (working copy)
|
| @@ -117,15 +117,13 @@
|
| EXPECT_EQ(logo_end, 0); // date value reset to 0;
|
| }
|
|
|
| -class NotificationPromoTestDelegate : public NotificationPromo::Delegate {
|
| +class NotificationPromoTest {
|
| public:
|
| - explicit NotificationPromoTestDelegate(Profile* profile)
|
| + explicit NotificationPromoTest(Profile* profile)
|
| : profile_(profile),
|
| prefs_(profile->GetPrefs()),
|
| - notification_promo_(NULL),
|
| + notification_promo_(profile),
|
| received_notification_(false),
|
| - should_receive_notification_(false),
|
| - build_targeted_(true),
|
| start_(0.0),
|
| end_(0.0),
|
| num_groups_(0),
|
| @@ -135,21 +133,15 @@
|
| max_group_(0),
|
| max_views_(0),
|
| closed_(false),
|
| - build_(PromoResourceService::NO_BUILD),
|
| - platform_(NotificationPromo::PLATFORM_NONE),
|
| - current_platform_(NotificationPromo::CurrentPlatform()),
|
| gplus_required_(false) {
|
| }
|
|
|
| - void Init(NotificationPromo* notification_promo,
|
| - const std::string& json,
|
| + void Init(const std::string& json,
|
| const std::string& promo_text,
|
| double start, double end,
|
| int num_groups, int initial_segment, int increment,
|
| int time_slice, int max_group, int max_views,
|
| - int build, int platform, bool gplus_required) {
|
| - notification_promo_ = notification_promo;
|
| -
|
| + bool gplus_required) {
|
| Value* value(base::JSONReader::Read(json));
|
| ASSERT_TRUE(value);
|
| DictionaryValue* dict = NULL;
|
| @@ -170,45 +162,17 @@
|
|
|
| max_views_ = max_views;
|
|
|
| - build_ = build;
|
| - platform_ = platform;
|
| -
|
| gplus_required_ = gplus_required;
|
|
|
| closed_ = false;
|
| received_notification_ = false;
|
| }
|
|
|
| - // NotificationPromo::Delegate implementation.
|
| - virtual void OnNotificationParsed(double start, double end,
|
| - bool new_notification) {
|
| - if (should_receive_notification_) {
|
| - EXPECT_EQ(notification_promo_->StartTimeForGroup(), start);
|
| - EXPECT_EQ(notification_promo_->end_, end);
|
| - }
|
| + void InitPromoFromJson(bool should_receive_notification) {
|
| + notification_promo_.InitFromJson(*test_json_);
|
| + EXPECT_EQ(should_receive_notification,
|
| + notification_promo_.new_notification());
|
|
|
| - received_notification_ = new_notification;
|
| - EXPECT_TRUE(received_notification_ == should_receive_notification_);
|
| - }
|
| -
|
| - virtual bool IsBuildAllowed(int builds_targeted) const {
|
| - EXPECT_EQ(builds_targeted, build_);
|
| - return build_targeted_;
|
| - }
|
| -
|
| - virtual int CurrentPlatform() const {
|
| - return current_platform_;
|
| - }
|
| -
|
| - void InitPromoFromJson(bool should_receive_notification, bool legacy) {
|
| - should_receive_notification_ = should_receive_notification;
|
| - received_notification_ = false;
|
| - if (legacy)
|
| - notification_promo_->InitFromJsonLegacy(*test_json_);
|
| - else
|
| - notification_promo_->InitFromJson(*test_json_);
|
| - EXPECT_TRUE(received_notification_ == should_receive_notification);
|
| -
|
| // Test the fields.
|
| TestNotification();
|
| TestPrefs();
|
| @@ -216,31 +180,28 @@
|
|
|
| void TestNotification() {
|
| // Check values.
|
| - EXPECT_EQ(notification_promo_->promo_text_, promo_text_);
|
| + EXPECT_EQ(notification_promo_.promo_text_, promo_text_);
|
|
|
| - EXPECT_EQ(notification_promo_->start_, start_);
|
| - EXPECT_EQ(notification_promo_->end_, end_);
|
| + EXPECT_EQ(notification_promo_.start_, start_);
|
| + EXPECT_EQ(notification_promo_.end_, end_);
|
|
|
| - EXPECT_EQ(notification_promo_->num_groups_, num_groups_);
|
| - EXPECT_EQ(notification_promo_->initial_segment_, initial_segment_);
|
| - EXPECT_EQ(notification_promo_->increment_, increment_);
|
| - EXPECT_EQ(notification_promo_->time_slice_, time_slice_);
|
| - EXPECT_EQ(notification_promo_->max_group_, max_group_);
|
| + EXPECT_EQ(notification_promo_.num_groups_, num_groups_);
|
| + EXPECT_EQ(notification_promo_.initial_segment_, initial_segment_);
|
| + EXPECT_EQ(notification_promo_.increment_, increment_);
|
| + EXPECT_EQ(notification_promo_.time_slice_, time_slice_);
|
| + EXPECT_EQ(notification_promo_.max_group_, max_group_);
|
|
|
| - EXPECT_EQ(notification_promo_->max_views_, max_views_);
|
| - EXPECT_EQ(notification_promo_->closed_, closed_);
|
| + EXPECT_EQ(notification_promo_.max_views_, max_views_);
|
| + EXPECT_EQ(notification_promo_.closed_, closed_);
|
|
|
| // Check group within bounds.
|
| - EXPECT_GE(notification_promo_->group_, 0);
|
| - EXPECT_LT(notification_promo_->group_, num_groups_);
|
| + EXPECT_GE(notification_promo_.group_, 0);
|
| + EXPECT_LT(notification_promo_.group_, num_groups_);
|
|
|
| // Views should be 0 for now.
|
| - EXPECT_EQ(notification_promo_->views_, 0);
|
| + EXPECT_EQ(notification_promo_.views_, 0);
|
|
|
| - EXPECT_EQ(notification_promo_->build_, build_);
|
| - EXPECT_EQ(notification_promo_->platform_, platform_);
|
| -
|
| - EXPECT_EQ(notification_promo_->gplus_required_, gplus_required_);
|
| + EXPECT_EQ(notification_promo_.gplus_required_, gplus_required_);
|
| }
|
|
|
| void TestPrefs() {
|
| @@ -260,323 +221,186 @@
|
| EXPECT_EQ(prefs_->GetBoolean(prefs::kNtpPromoClosed), closed_);
|
|
|
| EXPECT_EQ(prefs_->GetInteger(prefs::kNtpPromoGroup),
|
| - notification_promo_ ? notification_promo_->group_: 0);
|
| + notification_promo_.group_);
|
| EXPECT_EQ(prefs_->GetInteger(prefs::kNtpPromoViews), 0);
|
|
|
| - EXPECT_EQ(prefs_->GetInteger(prefs::kNtpPromoBuild), build_);
|
| - EXPECT_EQ(prefs_->GetInteger(prefs::kNtpPromoPlatform), platform_);
|
| -
|
| EXPECT_EQ(prefs_->GetBoolean(prefs::kNtpPromoGplusRequired),
|
| - gplus_required_);
|
| + gplus_required_);
|
| }
|
|
|
| // Create a new NotificationPromo from prefs and compare to current
|
| // notification.
|
| void TestInitFromPrefs() {
|
| - scoped_refptr<NotificationPromo> prefs_notification_promo =
|
| - NotificationPromo::Create(profile_, this);
|
| - prefs_notification_promo->InitFromPrefs();
|
| + NotificationPromo prefs_notification_promo(profile_);
|
| + prefs_notification_promo.InitFromPrefs();
|
|
|
| - EXPECT_EQ(notification_promo_->prefs_,
|
| - prefs_notification_promo->prefs_);
|
| - EXPECT_EQ(notification_promo_->delegate_,
|
| - prefs_notification_promo->delegate_);
|
| - EXPECT_EQ(notification_promo_->promo_text_,
|
| - prefs_notification_promo->promo_text_);
|
| - EXPECT_EQ(notification_promo_->start_,
|
| - prefs_notification_promo->start_);
|
| - EXPECT_EQ(notification_promo_->end_,
|
| - prefs_notification_promo->end_);
|
| - EXPECT_EQ(notification_promo_->num_groups_,
|
| - prefs_notification_promo->num_groups_);
|
| - EXPECT_EQ(notification_promo_->initial_segment_,
|
| - prefs_notification_promo->initial_segment_);
|
| - EXPECT_EQ(notification_promo_->increment_,
|
| - prefs_notification_promo->increment_);
|
| - EXPECT_EQ(notification_promo_->time_slice_,
|
| - prefs_notification_promo->time_slice_);
|
| - EXPECT_EQ(notification_promo_->max_group_,
|
| - prefs_notification_promo->max_group_);
|
| - EXPECT_EQ(notification_promo_->max_views_,
|
| - prefs_notification_promo->max_views_);
|
| - EXPECT_EQ(notification_promo_->group_,
|
| - prefs_notification_promo->group_);
|
| - EXPECT_EQ(notification_promo_->views_,
|
| - prefs_notification_promo->views_);
|
| - EXPECT_EQ(notification_promo_->closed_,
|
| - prefs_notification_promo->closed_);
|
| - EXPECT_EQ(notification_promo_->build_,
|
| - prefs_notification_promo->build_);
|
| - EXPECT_EQ(notification_promo_->platform_,
|
| - prefs_notification_promo->platform_);
|
| - EXPECT_EQ(notification_promo_->gplus_required_,
|
| - prefs_notification_promo->gplus_required_);
|
| + EXPECT_EQ(notification_promo_.prefs_,
|
| + prefs_notification_promo.prefs_);
|
| + EXPECT_EQ(notification_promo_.promo_text_,
|
| + prefs_notification_promo.promo_text_);
|
| + EXPECT_EQ(notification_promo_.start_,
|
| + prefs_notification_promo.start_);
|
| + EXPECT_EQ(notification_promo_.end_,
|
| + prefs_notification_promo.end_);
|
| + EXPECT_EQ(notification_promo_.num_groups_,
|
| + prefs_notification_promo.num_groups_);
|
| + EXPECT_EQ(notification_promo_.initial_segment_,
|
| + prefs_notification_promo.initial_segment_);
|
| + EXPECT_EQ(notification_promo_.increment_,
|
| + prefs_notification_promo.increment_);
|
| + EXPECT_EQ(notification_promo_.time_slice_,
|
| + prefs_notification_promo.time_slice_);
|
| + EXPECT_EQ(notification_promo_.max_group_,
|
| + prefs_notification_promo.max_group_);
|
| + EXPECT_EQ(notification_promo_.max_views_,
|
| + prefs_notification_promo.max_views_);
|
| + EXPECT_EQ(notification_promo_.group_,
|
| + prefs_notification_promo.group_);
|
| + EXPECT_EQ(notification_promo_.views_,
|
| + prefs_notification_promo.views_);
|
| + EXPECT_EQ(notification_promo_.closed_,
|
| + prefs_notification_promo.closed_);
|
| + EXPECT_EQ(notification_promo_.gplus_required_,
|
| + prefs_notification_promo.gplus_required_);
|
| }
|
|
|
| void TestGroup() {
|
| // Test out of range groups.
|
| const int incr = num_groups_ / 20;
|
| for (int i = max_group_; i < num_groups_; i += incr) {
|
| - notification_promo_->group_ = i;
|
| - EXPECT_FALSE(notification_promo_->CanShow());
|
| + notification_promo_.group_ = i;
|
| + EXPECT_FALSE(notification_promo_.CanShow());
|
| }
|
|
|
| // Test in-range groups.
|
| for (int i = 0; i < max_group_; i += incr) {
|
| - notification_promo_->group_ = i;
|
| - EXPECT_TRUE(notification_promo_->CanShow());
|
| + notification_promo_.group_ = i;
|
| + EXPECT_TRUE(notification_promo_.CanShow());
|
| }
|
| }
|
|
|
| void TestViews() {
|
| // Test out of range views.
|
| for (int i = max_views_; i < max_views_ * 2; ++i) {
|
| - notification_promo_->views_ = i;
|
| - EXPECT_FALSE(notification_promo_->CanShow());
|
| + notification_promo_.views_ = i;
|
| + EXPECT_FALSE(notification_promo_.CanShow());
|
| }
|
|
|
| // Test in range views.
|
| for (int i = 0; i < max_views_; ++i) {
|
| - notification_promo_->views_ = i;
|
| - EXPECT_TRUE(notification_promo_->CanShow());
|
| + notification_promo_.views_ = i;
|
| + EXPECT_TRUE(notification_promo_.CanShow());
|
| }
|
| }
|
|
|
| - void TestBuild() {
|
| - build_targeted_ = false;
|
| - EXPECT_FALSE(notification_promo_->CanShow());
|
| -
|
| - build_targeted_ = true;
|
| - EXPECT_TRUE(notification_promo_->CanShow());
|
| - }
|
| -
|
| - void TestOnePlatform(int current_platform, bool expected) {
|
| - current_platform_ = current_platform;
|
| - EXPECT_EQ(expected, notification_promo_->CanShow());
|
| - }
|
| -
|
| - void TestPlatformSet(int target_platform, bool expected_win,
|
| - bool expected_mac, bool expected_linux, bool expected_chromeos) {
|
| - notification_promo_->platform_ = target_platform;
|
| - TestOnePlatform(NotificationPromo::PLATFORM_WIN, expected_win);
|
| - TestOnePlatform(NotificationPromo::PLATFORM_MAC, expected_mac);
|
| - TestOnePlatform(NotificationPromo::PLATFORM_LINUX, expected_linux);
|
| - TestOnePlatform(NotificationPromo::PLATFORM_CHROMEOS, expected_chromeos);
|
| - }
|
| -
|
| - void TestPlatforms() {
|
| - int target_platform;
|
| -
|
| - // Windows and Mac only - test real current platform.
|
| - target_platform = 3;
|
| - notification_promo_->platform_ = target_platform;
|
| - bool expected = false;
|
| -#if defined(OS_WIN) || defined(OS_MACOSX)
|
| - expected = true;
|
| -#endif
|
| - EXPECT_EQ(expected, notification_promo_->CanShow());
|
| -
|
| - // Windows only.
|
| - target_platform = 1;
|
| - EXPECT_EQ(target_platform, NotificationPromo::PLATFORM_WIN);
|
| - TestPlatformSet(target_platform, true, false, false, false);
|
| -
|
| - // Mac only.
|
| - target_platform = 2;
|
| - EXPECT_EQ(target_platform, NotificationPromo::PLATFORM_MAC);
|
| - TestPlatformSet(target_platform, false, true, false, false);
|
| -
|
| - // Linux only.
|
| - target_platform = 4;
|
| - EXPECT_EQ(target_platform, NotificationPromo::PLATFORM_LINUX);
|
| - TestPlatformSet(target_platform, false, false, true, false);
|
| -
|
| - // ChromeOS only.
|
| - target_platform = 8;
|
| - EXPECT_EQ(target_platform, NotificationPromo::PLATFORM_CHROMEOS);
|
| - TestPlatformSet(target_platform, false, false, false, true);
|
| -
|
| - // Non-Windows.
|
| - target_platform = 14;
|
| - EXPECT_EQ(target_platform, NotificationPromo::PLATFORM_ALL
|
| - & ~NotificationPromo::PLATFORM_WIN);
|
| - TestPlatformSet(target_platform, false, true, true, true);
|
| -
|
| - // Non-Mac.
|
| - target_platform = 13;
|
| - EXPECT_EQ(target_platform, NotificationPromo::PLATFORM_ALL
|
| - & ~NotificationPromo::PLATFORM_MAC);
|
| - TestPlatformSet(target_platform, true, false, true, true);
|
| -
|
| - // Non-Linux.
|
| - target_platform = 11;
|
| - EXPECT_EQ(target_platform, NotificationPromo::PLATFORM_ALL
|
| - & ~NotificationPromo::PLATFORM_LINUX);
|
| - TestPlatformSet(target_platform, true, true, false, true);
|
| -
|
| - // Non-ChromeOS.
|
| - target_platform = 7;
|
| - EXPECT_EQ(target_platform, NotificationPromo::PLATFORM_ALL
|
| - & ~NotificationPromo::PLATFORM_CHROMEOS);
|
| - TestPlatformSet(target_platform, true, true, true, false);
|
| -
|
| - // Windows and Mac.
|
| - target_platform = 3;
|
| - EXPECT_EQ(target_platform, NotificationPromo::PLATFORM_WIN
|
| - | NotificationPromo::PLATFORM_MAC);
|
| - TestPlatformSet(target_platform, true, true, false, false);
|
| -
|
| - // Windows and Linux.
|
| - target_platform = 5;
|
| - EXPECT_EQ(target_platform, NotificationPromo::PLATFORM_WIN
|
| - | NotificationPromo::PLATFORM_LINUX);
|
| - TestPlatformSet(target_platform, true, false, true, false);
|
| -
|
| - // Windows and ChromeOS.
|
| - target_platform = 9;
|
| - EXPECT_EQ(target_platform, NotificationPromo::PLATFORM_WIN
|
| - | NotificationPromo::PLATFORM_CHROMEOS);
|
| - TestPlatformSet(target_platform, true, false, false, true);
|
| -
|
| - // Mac and Linux.
|
| - target_platform = 6;
|
| - EXPECT_EQ(target_platform, NotificationPromo::PLATFORM_MAC
|
| - | NotificationPromo::PLATFORM_LINUX);
|
| - TestPlatformSet(target_platform, false, true, true, false);
|
| -
|
| - // Mac and ChromeOS.
|
| - target_platform = 10;
|
| - EXPECT_EQ(target_platform, NotificationPromo::PLATFORM_MAC
|
| - | NotificationPromo::PLATFORM_CHROMEOS);
|
| - TestPlatformSet(target_platform, false, true, false, true);
|
| -
|
| - // Linux and ChromeOS.
|
| - target_platform = 12;
|
| - EXPECT_EQ(target_platform, NotificationPromo::PLATFORM_LINUX
|
| - | NotificationPromo::PLATFORM_CHROMEOS);
|
| - TestPlatformSet(target_platform, false, false, true, true);
|
| -
|
| - // Disabled.
|
| - target_platform = 0;
|
| - EXPECT_EQ(target_platform, NotificationPromo::PLATFORM_NONE);
|
| - TestPlatformSet(target_platform, false, false, false, false);
|
| -
|
| - // All platforms.
|
| - target_platform = 15;
|
| - EXPECT_EQ(target_platform, NotificationPromo::PLATFORM_ALL);
|
| - TestPlatformSet(target_platform, true, true, true, true);
|
| - }
|
| -
|
| void TestClosed() {
|
| - notification_promo_->closed_ = true;
|
| - EXPECT_FALSE(notification_promo_->CanShow());
|
| + notification_promo_.closed_ = true;
|
| + EXPECT_FALSE(notification_promo_.CanShow());
|
|
|
| - notification_promo_->closed_ = false;
|
| - EXPECT_TRUE(notification_promo_->CanShow());
|
| + notification_promo_.closed_ = false;
|
| + EXPECT_TRUE(notification_promo_.CanShow());
|
| }
|
|
|
| void TestPromoText() {
|
| - notification_promo_->promo_text_.clear();
|
| - EXPECT_FALSE(notification_promo_->CanShow());
|
| + notification_promo_.promo_text_.clear();
|
| + EXPECT_FALSE(notification_promo_.CanShow());
|
|
|
| - notification_promo_->promo_text_ = promo_text_;
|
| - EXPECT_TRUE(notification_promo_->CanShow());
|
| + notification_promo_.promo_text_ = promo_text_;
|
| + EXPECT_TRUE(notification_promo_.CanShow());
|
| }
|
|
|
| void TestTime() {
|
| const double now = base::Time::Now().ToDoubleT();
|
| const double qhour = 15 * 60;
|
|
|
| - notification_promo_->group_ = 0; // For simplicity.
|
| + notification_promo_.group_ = 0; // For simplicity.
|
|
|
| - notification_promo_->start_ = now - qhour;
|
| - notification_promo_->end_ = now + qhour;
|
| - EXPECT_TRUE(notification_promo_->CanShow());
|
| + notification_promo_.start_ = now - qhour;
|
| + notification_promo_.end_ = now + qhour;
|
| + EXPECT_TRUE(notification_promo_.CanShow());
|
|
|
| // Start time has not arrived.
|
| - notification_promo_->start_ = now + qhour;
|
| - notification_promo_->end_ = now + qhour;
|
| - EXPECT_FALSE(notification_promo_->CanShow());
|
| + notification_promo_.start_ = now + qhour;
|
| + notification_promo_.end_ = now + qhour;
|
| + EXPECT_FALSE(notification_promo_.CanShow());
|
|
|
| // End time has past.
|
| - notification_promo_->start_ = now - qhour;
|
| - notification_promo_->end_ = now - qhour;
|
| - EXPECT_FALSE(notification_promo_->CanShow());
|
| + notification_promo_.start_ = now - qhour;
|
| + notification_promo_.end_ = now - qhour;
|
| + EXPECT_FALSE(notification_promo_.CanShow());
|
|
|
| - notification_promo_->start_ = start_;
|
| - notification_promo_->end_ = end_;
|
| - EXPECT_TRUE(notification_promo_->CanShow());
|
| + notification_promo_.start_ = start_;
|
| + notification_promo_.end_ = end_;
|
| + EXPECT_TRUE(notification_promo_.CanShow());
|
| }
|
|
|
| void TestIncrement() {
|
| const double now = base::Time::Now().ToDoubleT();
|
| const double slice = 60;
|
|
|
| - notification_promo_->num_groups_ = 18;
|
| - notification_promo_->initial_segment_ = 5;
|
| - notification_promo_->increment_ = 3;
|
| - notification_promo_->time_slice_ = slice;
|
| + notification_promo_.num_groups_ = 18;
|
| + notification_promo_.initial_segment_ = 5;
|
| + notification_promo_.increment_ = 3;
|
| + notification_promo_.time_slice_ = slice;
|
|
|
| - notification_promo_->start_ = now - 1;
|
| - notification_promo_->end_ = now + slice;
|
| + notification_promo_.start_ = now - 1;
|
| + notification_promo_.end_ = now + slice;
|
|
|
| // Test initial segment.
|
| - notification_promo_->group_ = 4;
|
| - EXPECT_TRUE(notification_promo_->CanShow());
|
| - notification_promo_->group_ = 5;
|
| - EXPECT_FALSE(notification_promo_->CanShow());
|
| + notification_promo_.group_ = 4;
|
| + EXPECT_TRUE(notification_promo_.CanShow());
|
| + notification_promo_.group_ = 5;
|
| + EXPECT_FALSE(notification_promo_.CanShow());
|
|
|
| // Test first increment.
|
| - notification_promo_->start_ -= slice;
|
| - notification_promo_->group_ = 7;
|
| - EXPECT_TRUE(notification_promo_->CanShow());
|
| - notification_promo_->group_ = 8;
|
| - EXPECT_FALSE(notification_promo_->CanShow());
|
| + notification_promo_.start_ -= slice;
|
| + notification_promo_.group_ = 7;
|
| + EXPECT_TRUE(notification_promo_.CanShow());
|
| + notification_promo_.group_ = 8;
|
| + EXPECT_FALSE(notification_promo_.CanShow());
|
|
|
| // Test second increment.
|
| - notification_promo_->start_ -= slice;
|
| - notification_promo_->group_ = 10;
|
| - EXPECT_TRUE(notification_promo_->CanShow());
|
| - notification_promo_->group_ = 11;
|
| - EXPECT_FALSE(notification_promo_->CanShow());
|
| + notification_promo_.start_ -= slice;
|
| + notification_promo_.group_ = 10;
|
| + EXPECT_TRUE(notification_promo_.CanShow());
|
| + notification_promo_.group_ = 11;
|
| + EXPECT_FALSE(notification_promo_.CanShow());
|
|
|
| // Test penultimate increment.
|
| - notification_promo_->start_ -= 2 * slice;
|
| - notification_promo_->group_ = 16;
|
| - EXPECT_TRUE(notification_promo_->CanShow());
|
| - notification_promo_->group_ = 17;
|
| - EXPECT_FALSE(notification_promo_->CanShow());
|
| + notification_promo_.start_ -= 2 * slice;
|
| + notification_promo_.group_ = 16;
|
| + EXPECT_TRUE(notification_promo_.CanShow());
|
| + notification_promo_.group_ = 17;
|
| + EXPECT_FALSE(notification_promo_.CanShow());
|
|
|
| // Test last increment.
|
| - notification_promo_->start_ -= slice;
|
| - EXPECT_TRUE(notification_promo_->CanShow());
|
| + notification_promo_.start_ -= slice;
|
| + EXPECT_TRUE(notification_promo_.CanShow());
|
| }
|
|
|
| void TestGplus() {
|
| - notification_promo_->gplus_required_ = true;
|
| + notification_promo_.gplus_required_ = true;
|
|
|
| // Test G+ required.
|
| - notification_promo_->prefs_->SetBoolean(prefs::kIsGooglePlusUser, true);
|
| - EXPECT_TRUE(notification_promo_->CanShow());
|
| - notification_promo_->prefs_->SetBoolean(prefs::kIsGooglePlusUser, false);
|
| - EXPECT_FALSE(notification_promo_->CanShow());
|
| + notification_promo_.prefs_->SetBoolean(prefs::kIsGooglePlusUser, true);
|
| + EXPECT_TRUE(notification_promo_.CanShow());
|
| + notification_promo_.prefs_->SetBoolean(prefs::kIsGooglePlusUser, false);
|
| + EXPECT_FALSE(notification_promo_.CanShow());
|
|
|
| - notification_promo_->gplus_required_ = false;
|
| + notification_promo_.gplus_required_ = false;
|
|
|
| // Test G+ not required.
|
| - notification_promo_->prefs_->SetBoolean(prefs::kIsGooglePlusUser, true);
|
| - EXPECT_TRUE(notification_promo_->CanShow());
|
| - notification_promo_->prefs_->SetBoolean(prefs::kIsGooglePlusUser, false);
|
| - EXPECT_TRUE(notification_promo_->CanShow());
|
| + notification_promo_.prefs_->SetBoolean(prefs::kIsGooglePlusUser, true);
|
| + EXPECT_TRUE(notification_promo_.CanShow());
|
| + notification_promo_.prefs_->SetBoolean(prefs::kIsGooglePlusUser, false);
|
| + EXPECT_TRUE(notification_promo_.CanShow());
|
| }
|
|
|
| private:
|
| Profile* profile_;
|
| PrefService* prefs_;
|
| - NotificationPromo* notification_promo_;
|
| + NotificationPromo notification_promo_;
|
| bool received_notification_;
|
| - bool should_receive_notification_;
|
| - bool build_targeted_;
|
| scoped_ptr<DictionaryValue> test_json_;
|
|
|
| std::string promo_text_;
|
| @@ -594,201 +418,80 @@
|
|
|
| bool closed_;
|
|
|
| - int build_;
|
| - int platform_;
|
| - int current_platform_;
|
| -
|
| bool gplus_required_;
|
| };
|
|
|
| -TEST_F(PromoResourceServiceTest, NotificationPromoTestLegacy) {
|
| - // Check that prefs are set correctly.
|
| - PrefService* prefs = profile_.GetPrefs();
|
| - ASSERT_TRUE(prefs != NULL);
|
| -
|
| - NotificationPromoTestDelegate delegate(&profile_);
|
| - scoped_refptr<NotificationPromo> notification_promo =
|
| - NotificationPromo::Create(&profile_, &delegate);
|
| -
|
| - // Make sure prefs are unset.
|
| - delegate.TestPrefs();
|
| -
|
| - // Set up start and end dates and promo line in a Dictionary as if parsed
|
| - // from the service.
|
| - delegate.Init(notification_promo,
|
| - "{ "
|
| - " \"topic\": {"
|
| - " \"answers\": ["
|
| - " {"
|
| - " \"name\": \"promo_start\","
|
| - " \"question\": \"3:2:5:10:15:0\","
|
| - " \"tooltip\": \"Eat more pie!\","
|
| - " \"inproduct\": \"31/01/10 01:00 GMT\""
|
| - " },"
|
| - " {"
|
| - " \"name\": \"promo_end\","
|
| - " \"inproduct\": \"31/01/14 01:00 GMT\""
|
| - " }"
|
| - " ]"
|
| - " }"
|
| - "}",
|
| - "Eat more pie!",
|
| - 1264899600, // unix epoch for Jan 31 2010 0100 GMT.
|
| - 1391130000, // unix epoch for Jan 31 2012 0100 GMT.
|
| - 100, 0, 1, 2, 5, 10, 3, 15, false);
|
| -
|
| - delegate.InitPromoFromJson(true, true);
|
| -
|
| - // Second time should not trigger a notification.
|
| - delegate.InitPromoFromJson(false, true);
|
| -
|
| - delegate.TestInitFromPrefs();
|
| -
|
| - // Test various conditions of CanShow.
|
| - // TestGroup Has the side effect of setting us to a passing group.
|
| - delegate.TestGroup();
|
| - delegate.TestViews();
|
| - delegate.TestBuild();
|
| - delegate.TestClosed();
|
| - delegate.TestPromoText();
|
| - delegate.TestTime();
|
| - delegate.TestPlatforms();
|
| -}
|
| -
|
| TEST_F(PromoResourceServiceTest, NotificationPromoTest) {
|
| // Check that prefs are set correctly.
|
| PrefService* prefs = profile_.GetPrefs();
|
| ASSERT_TRUE(prefs != NULL);
|
|
|
| - NotificationPromoTestDelegate delegate(&profile_);
|
| - scoped_refptr<NotificationPromo> notification_promo =
|
| - NotificationPromo::Create(&profile_, &delegate);
|
| + NotificationPromoTest promo_test(&profile_);
|
|
|
| // Make sure prefs are unset.
|
| - delegate.TestPrefs();
|
| + promo_test.TestPrefs();
|
|
|
| // Set up start and end dates and promo line in a Dictionary as if parsed
|
| // from the service.
|
| - delegate.Init(notification_promo,
|
| - "{"
|
| - " \"ntp_notification_promo\":"
|
| - " {"
|
| - " \"date\":"
|
| - " ["
|
| - " {"
|
| - " \"start\":\"15 Jan 2012 10:50:85 PST\","
|
| - " \"end\":\"7 Jan 2013 5:40:75 PST\""
|
| - " }"
|
| - " ],"
|
| - " \"strings\":"
|
| - " {"
|
| - " \"NTP4_HOW_DO_YOU_FEEL_ABOUT_CHROME\":"
|
| - " \"What do you think of Chrome?\""
|
| - " },"
|
| - " \"grouping\":"
|
| - " {"
|
| - " \"buckets\":1000,"
|
| - " \"segment\":200,"
|
| - " \"increment\":100,"
|
| - " \"increment_frequency\":3600,"
|
| - " \"increment_max\":400"
|
| - " },"
|
| - " \"payload\":"
|
| - " {"
|
| - " \"days_active\":7,"
|
| - " \"install_age_days\":21,"
|
| - " \"gplus_required\":false"
|
| - " },"
|
| - " \"max_views\":30"
|
| - " }"
|
| - "}",
|
| - "What do you think of Chrome?",
|
| - 1326653485, // unix epoch for 15 Jan 2012 10:50:85 PST.
|
| - 1357566075, // unix epoch for 7 Jan 2013 5:40:75 PST.
|
| - 1000, 200, 100, 3600, 400, 30, 15, 15, false);
|
| + promo_test.Init("{"
|
| + " \"ntp_notification_promo\":"
|
| + " {"
|
| + " \"date\":"
|
| + " ["
|
| + " {"
|
| + " \"start\":\"15 Jan 2012 10:50:85 PST\","
|
| + " \"end\":\"7 Jan 2013 5:40:75 PST\""
|
| + " }"
|
| + " ],"
|
| + " \"strings\":"
|
| + " {"
|
| + " \"NTP4_HOW_DO_YOU_FEEL_ABOUT_CHROME\":"
|
| + " \"What do you think of Chrome?\""
|
| + " },"
|
| + " \"grouping\":"
|
| + " {"
|
| + " \"buckets\":1000,"
|
| + " \"segment\":200,"
|
| + " \"increment\":100,"
|
| + " \"increment_frequency\":3600,"
|
| + " \"increment_max\":400"
|
| + " },"
|
| + " \"payload\":"
|
| + " {"
|
| + " \"days_active\":7,"
|
| + " \"install_age_days\":21,"
|
| + " \"gplus_required\":false"
|
| + " },"
|
| + " \"max_views\":30"
|
| + " }"
|
| + "}",
|
| + "What do you think of Chrome?",
|
| + 1326653485, // unix epoch for 15 Jan 2012 10:50:85 PST.
|
| + 1357566075, // unix epoch for 7 Jan 2013 5:40:75 PST.
|
| + 1000, 200, 100, 3600, 400, 30, false);
|
|
|
| - delegate.InitPromoFromJson(true, false);
|
| + promo_test.InitPromoFromJson(true);
|
|
|
| // Second time should not trigger a notification.
|
| - delegate.InitPromoFromJson(false, false);
|
| + promo_test.InitPromoFromJson(false);
|
|
|
| - delegate.TestInitFromPrefs();
|
| + promo_test.TestInitFromPrefs();
|
|
|
| // Test various conditions of CanShow.
|
| // TestGroup Has the side effect of setting us to a passing group.
|
| - delegate.TestGroup();
|
| - delegate.TestViews();
|
| - delegate.TestBuild();
|
| - delegate.TestClosed();
|
| - delegate.TestPromoText();
|
| - delegate.TestTime();
|
| - delegate.TestIncrement();
|
| - delegate.TestPlatforms();
|
| - delegate.TestGplus();
|
| + promo_test.TestGroup();
|
| + promo_test.TestViews();
|
| + promo_test.TestClosed();
|
| + promo_test.TestPromoText();
|
| + promo_test.TestTime();
|
| + promo_test.TestIncrement();
|
| + promo_test.TestGplus();
|
| }
|
|
|
| -TEST_F(PromoResourceServiceTest, NotificationPromoTestFail) {
|
| - // Check that prefs are set correctly.
|
| - PrefService* prefs = profile_.GetPrefs();
|
| - ASSERT_TRUE(prefs != NULL);
|
| -
|
| - NotificationPromoTestDelegate delegate(&profile_);
|
| - scoped_refptr<NotificationPromo> notification_promo =
|
| - NotificationPromo::Create(&profile_, &delegate);
|
| -
|
| - // Set up start and end dates and promo line in a Dictionary as if parsed
|
| - // from the service.
|
| - delegate.Init(notification_promo,
|
| - "{ "
|
| - " \"topic\": {"
|
| - " \"answers\": ["
|
| - " {"
|
| - " \"name\": \"promo_start\","
|
| - " \"question\": \"12:8:10:20:15\","
|
| - " \"tooltip\": \"Happy 3rd Birthday!\","
|
| - " \"inproduct\": \"09/15/10 05:00 PDT\""
|
| - " },"
|
| - " {"
|
| - " \"name\": \"promo_end\","
|
| - " \"inproduct\": \"09/30/10 05:00 PDT\""
|
| - " }"
|
| - " ]"
|
| - " }"
|
| - "}",
|
| - "Happy 3rd Birthday!",
|
| - 1284552000, // unix epoch for Sep 15 2010 0500 PDT.
|
| - 1285848000, // unix epoch for Sep 30 2010 0500 PDT.
|
| - 100, 0, 1, 8, 10, 20, 12, 15, false);
|
| -
|
| - delegate.InitPromoFromJson(true, true);
|
| -
|
| - // Second time should not trigger a notification.
|
| - delegate.InitPromoFromJson(false, true);
|
| -
|
| - delegate.TestInitFromPrefs();
|
| -
|
| - // Should fail because out of time bounds.
|
| - EXPECT_FALSE(notification_promo->CanShow());
|
| -}
|
| -
|
| -TEST_F(PromoResourceServiceTest, GetNextQuestionValueTest) {
|
| - const std::string question("0:-100:2048:0:0:0:2a");
|
| - const int question_vec[] = { 0, -100, 2048, 0, 0, 0};
|
| - size_t index = 0;
|
| - bool err = false;
|
| -
|
| - for (size_t i = 0; i < arraysize(question_vec); ++i) {
|
| - EXPECT_EQ(question_vec[i],
|
| - NotificationPromo::GetNextQuestionValue(question, &index, &err));
|
| - EXPECT_FALSE(err);
|
| - }
|
| - EXPECT_EQ(NotificationPromo::GetNextQuestionValue(question, &index, &err), 0);
|
| - EXPECT_TRUE(err);
|
| -}
|
| -
|
| TEST_F(PromoResourceServiceTest, PromoServerURLTest) {
|
| GURL promo_server_url = NotificationPromo::PromoServerURL();
|
| EXPECT_FALSE(promo_server_url.is_empty());
|
| + EXPECT_TRUE(promo_server_url.SchemeIs("https"));
|
| // TODO(achuith): Test this better.
|
| }
|
|
|
|
|