blob: cc415a40e1f8109d81a6e6ea7dbd5ff3b93a773e [file] [log] [blame]
// Copyright 2020 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/autofill_assistant/browser/trigger_scripts/static_trigger_conditions.h"
#include "components/autofill_assistant/browser/mock_client.h"
#include "components/autofill_assistant/browser/mock_website_login_manager.h"
#include "base/test/gmock_callback_support.h"
#include "base/test/mock_callback.h"
#include "testing/gmock/include/gmock/gmock.h"
namespace autofill_assistant {
using ::base::test::RunOnceCallback;
using ::testing::_;
using ::testing::NiceMock;
using ::testing::Return;
namespace {
const char kFakeUrl[] = "https://www.example.com";
class StaticTriggerConditionsTest : public testing::Test {
public:
StaticTriggerConditionsTest() = default;
~StaticTriggerConditionsTest() override = default;
protected:
StaticTriggerConditions static_trigger_conditions_;
base::MockCallback<base::OnceCallback<void(void)>> mock_callback_;
NiceMock<MockClient> mock_client_;
NiceMock<MockWebsiteLoginManager> mock_website_login_manager_;
};
TEST_F(StaticTriggerConditionsTest, Init) {
TriggerContextImpl trigger_context(/* params = */ {}, /* exp = */ "1,2,4");
EXPECT_CALL(mock_client_, IsFirstTimeTriggerScriptUser)
.WillOnce(Return(true));
EXPECT_CALL(mock_client_, GetWebsiteLoginManager)
.WillOnce(Return(&mock_website_login_manager_));
EXPECT_CALL(mock_website_login_manager_, OnGetLoginsForUrl(GURL(kFakeUrl), _))
.WillOnce(RunOnceCallback<1>(std::vector<WebsiteLoginManager::Login>{
WebsiteLoginManager::Login(GURL(kFakeUrl), "fake_username")}));
EXPECT_CALL(mock_callback_, Run).Times(1);
static_trigger_conditions_.Init(&mock_client_, GURL(kFakeUrl),
&trigger_context, mock_callback_.Get());
EXPECT_TRUE(static_trigger_conditions_.is_first_time_user());
EXPECT_TRUE(static_trigger_conditions_.has_stored_login_credentials());
EXPECT_TRUE(static_trigger_conditions_.is_in_experiment(1));
EXPECT_TRUE(static_trigger_conditions_.is_in_experiment(2));
EXPECT_FALSE(static_trigger_conditions_.is_in_experiment(3));
EXPECT_TRUE(static_trigger_conditions_.is_in_experiment(4));
}
TEST_F(StaticTriggerConditionsTest, SetIsFirstTimeUser) {
EXPECT_TRUE(static_trigger_conditions_.is_first_time_user());
static_trigger_conditions_.set_is_first_time_user(false);
EXPECT_FALSE(static_trigger_conditions_.is_first_time_user());
}
TEST_F(StaticTriggerConditionsTest, HasResults) {
EXPECT_FALSE(static_trigger_conditions_.has_results());
TriggerContextImpl trigger_context(/* params = */ {}, /* exp = */ "1,2,4");
EXPECT_CALL(mock_client_, IsFirstTimeTriggerScriptUser)
.WillOnce(Return(true));
EXPECT_CALL(mock_client_, GetWebsiteLoginManager)
.WillOnce(Return(&mock_website_login_manager_));
EXPECT_CALL(mock_website_login_manager_, OnGetLoginsForUrl(GURL(kFakeUrl), _))
.WillOnce(RunOnceCallback<1>(std::vector<WebsiteLoginManager::Login>{
WebsiteLoginManager::Login(GURL(kFakeUrl), "fake_username")}));
EXPECT_CALL(mock_callback_, Run).Times(1);
static_trigger_conditions_.Init(&mock_client_, GURL(kFakeUrl),
&trigger_context, mock_callback_.Get());
EXPECT_TRUE(static_trigger_conditions_.has_results());
}
} // namespace
} // namespace autofill_assistant