blob: bf95e883c0e09f9dd8e85caf5a86ab0f22257ab0 [file] [log] [blame]
// Copyright 2022 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "components/user_education/common/feature_promo_controller.h"
#include <memory>
#include "base/feature_list.h"
#include "base/metrics/field_trial_param_associator.h"
#include "base/test/scoped_feature_list.h"
#include "base/test/task_environment.h"
#include "base/time/time.h"
#include "components/feature_engagement/public/feature_constants.h"
#include "components/user_education/test/mock_feature_promo_controller.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace user_education {
namespace {
BASE_FEATURE(kTestIPHFeature,
"TestIPHFeature",
base::FEATURE_ENABLED_BY_DEFAULT);
} // namespace
using testing::Ref;
using testing::Return;
using testing::StrictMock;
TEST(FeaturePromoControllerTest, IsPromoShowing_NotShowing) {
StrictMock<test::MockFeaturePromoController> controller;
EXPECT_CALL(controller, GetPromoStatus(Ref(kTestIPHFeature)))
.WillOnce(Return(FeaturePromoStatus::kNotRunning));
EXPECT_FALSE(controller.IsPromoActive(kTestIPHFeature));
}
TEST(FeaturePromoControllerTest,
IsPromoShowing_NotShowingCalledWithDifferentVariations) {
StrictMock<test::MockFeaturePromoController> controller;
EXPECT_CALL(controller, GetPromoStatus(Ref(kTestIPHFeature)))
.WillRepeatedly(Return(FeaturePromoStatus::kNotRunning));
EXPECT_FALSE(controller.IsPromoActive(kTestIPHFeature,
FeaturePromoStatus::kContinued));
EXPECT_FALSE(controller.IsPromoActive(kTestIPHFeature,
FeaturePromoStatus::kQueuedForStartup));
EXPECT_FALSE(controller.IsPromoActive(kTestIPHFeature,
FeaturePromoStatus::kContinued,
FeaturePromoStatus::kQueuedForStartup));
}
TEST(FeaturePromoControllerTest, IsPromoShowing_IsShowing) {
StrictMock<test::MockFeaturePromoController> controller;
EXPECT_CALL(controller, GetPromoStatus(Ref(kTestIPHFeature)))
.WillOnce(Return(FeaturePromoStatus::kBubbleShowing));
EXPECT_TRUE(controller.IsPromoActive(kTestIPHFeature));
}
TEST(FeaturePromoControllerTest,
IsPromoShowing_IsShowingCalledWithDifferentVariations) {
StrictMock<test::MockFeaturePromoController> controller;
EXPECT_CALL(controller, GetPromoStatus(Ref(kTestIPHFeature)))
.WillRepeatedly(Return(FeaturePromoStatus::kBubbleShowing));
EXPECT_TRUE(controller.IsPromoActive(kTestIPHFeature,
FeaturePromoStatus::kContinued));
EXPECT_TRUE(controller.IsPromoActive(kTestIPHFeature,
FeaturePromoStatus::kQueuedForStartup));
EXPECT_TRUE(controller.IsPromoActive(kTestIPHFeature,
FeaturePromoStatus::kContinued,
FeaturePromoStatus::kQueuedForStartup));
}
TEST(FeaturePromoControllerTest, IsPromoShowing_Continued) {
StrictMock<test::MockFeaturePromoController> controller;
EXPECT_CALL(controller, GetPromoStatus(Ref(kTestIPHFeature)))
.WillOnce(Return(FeaturePromoStatus::kContinued));
EXPECT_TRUE(controller.IsPromoActive(kTestIPHFeature,
FeaturePromoStatus::kContinued));
}
TEST(FeaturePromoControllerTest,
IsPromoShowing_ContinuedWithDifferentVariations) {
StrictMock<test::MockFeaturePromoController> controller;
EXPECT_CALL(controller, GetPromoStatus(Ref(kTestIPHFeature)))
.WillRepeatedly(Return(FeaturePromoStatus::kContinued));
EXPECT_FALSE(controller.IsPromoActive(kTestIPHFeature));
EXPECT_TRUE(controller.IsPromoActive(kTestIPHFeature,
FeaturePromoStatus::kContinued));
EXPECT_FALSE(controller.IsPromoActive(kTestIPHFeature,
FeaturePromoStatus::kQueuedForStartup));
EXPECT_TRUE(controller.IsPromoActive(kTestIPHFeature,
FeaturePromoStatus::kContinued,
FeaturePromoStatus::kQueuedForStartup));
}
TEST(FeaturePromoControllerTest, IsPromoShowing_Queued) {
StrictMock<test::MockFeaturePromoController> controller;
EXPECT_CALL(controller, GetPromoStatus(Ref(kTestIPHFeature)))
.WillOnce(Return(FeaturePromoStatus::kQueuedForStartup));
EXPECT_TRUE(controller.IsPromoActive(kTestIPHFeature,
FeaturePromoStatus::kQueuedForStartup));
}
TEST(FeaturePromoControllerTest, IsPromoShowing_QuuedWithDifferentVariations) {
StrictMock<test::MockFeaturePromoController> controller;
EXPECT_CALL(controller, GetPromoStatus(Ref(kTestIPHFeature)))
.WillRepeatedly(Return(FeaturePromoStatus::kQueuedForStartup));
EXPECT_FALSE(controller.IsPromoActive(kTestIPHFeature));
EXPECT_FALSE(controller.IsPromoActive(kTestIPHFeature,
FeaturePromoStatus::kContinued));
EXPECT_TRUE(controller.IsPromoActive(kTestIPHFeature,
FeaturePromoStatus::kQueuedForStartup));
EXPECT_TRUE(controller.IsPromoActive(kTestIPHFeature,
FeaturePromoStatus::kContinued,
FeaturePromoStatus::kQueuedForStartup));
}
} // namespace user_education