blob: 6e4d7ef3a96366ac86a05337f9a1d35b538b9eac [file] [log] [blame]
// Copyright 2024 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "components/compose/core/browser/config.h"
#include "base/test/scoped_feature_list.h"
#include "components/compose/core/browser/compose_features.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
class ConfigTest : public testing::Test {
public:
void SetUp() override { compose::ResetConfigForTesting(); }
void TearDown() override {
scoped_feature_list_.Reset();
compose::ResetConfigForTesting();
}
protected:
base::test::ScopedFeatureList scoped_feature_list_;
};
TEST_F(ConfigTest, ConfigUsesDefaultEnabledCountries) {
compose::Config config = compose::GetComposeConfig();
EXPECT_THAT(config.enabled_countries,
testing::UnorderedElementsAre("bd", "ca", "gh", "in", "ke", "my",
"ng", "ph", "pk", "sg", "tz", "ug",
"us", "zm", "zw"));
}
TEST_F(ConfigTest, ConfigUsesEnabledCountryFinchValues) {
scoped_feature_list_.InitAndEnableFeatureWithParameters(
compose::features::kEnableCompose,
{{"enabled_countries", " a,b c\td'e\"f\ng "}});
compose::ResetConfigForTesting();
compose::Config config = compose::GetComposeConfig();
EXPECT_THAT(config.enabled_countries,
testing::UnorderedElementsAre("a", "b", "c", "d", "e", "f", "g"));
}
TEST_F(ConfigTest, ConfigFallbackToDefaultEnabledCountriesOnEmptyList) {
scoped_feature_list_.InitAndEnableFeatureWithParameters(
compose::features::kEnableCompose,
{{"enabled_countries", ", \t' \n ,\" ,\"\t\n"}});
compose::ResetConfigForTesting();
compose::Config config = compose::GetComposeConfig();
EXPECT_THAT(config.enabled_countries,
testing::UnorderedElementsAre("bd", "ca", "gh", "in", "ke", "my",
"ng", "ph", "pk", "sg", "tz", "ug",
"us", "zm", "zw"));
}
TEST_F(ConfigTest, ConfigUsesDefaultProactiveNudgeCountries) {
compose::Config config = compose::GetComposeConfig();
EXPECT_THAT(config.proactive_nudge_countries,
testing::UnorderedElementsAre("us"));
}
TEST_F(ConfigTest, ConfigUsesProactiveNudgeCountryFinchValues) {
scoped_feature_list_.InitAndEnableFeatureWithParameters(
compose::features::kEnableComposeProactiveNudge,
{{"proactive_nudge_countries", " a,b c\td'e\"f\ng "}});
compose::ResetConfigForTesting();
compose::Config config = compose::GetComposeConfig();
EXPECT_THAT(config.proactive_nudge_countries,
testing::UnorderedElementsAre("a", "b", "c", "d", "e", "f", "g"));
}
TEST_F(ConfigTest, ConfigFallbackToDefaultProactiveNudgeCountriesOnEmptyList) {
scoped_feature_list_.InitAndEnableFeatureWithParameters(
compose::features::kEnableComposeProactiveNudge,
{{"proactive_nudge_countries", ", \t' \n ,\" ,\"\t\n"}});
compose::ResetConfigForTesting();
compose::Config config = compose::GetComposeConfig();
EXPECT_THAT(config.proactive_nudge_countries,
testing::UnorderedElementsAre("us"));
}
TEST_F(ConfigTest, ConfigUnsignedIntNegativeParams) {
scoped_feature_list_.InitWithFeaturesAndParameters(
{{compose::features::kComposeInputParams,
{{"min_words", "-200"}, {"max_words", "-1"}, {"max_chars", "-999999"}}},
{compose::features::kComposeInnerText,
{{"inner_text_max_bytes", "-200"},
{"trimmed_inner_text_max_chars", "-1"},
{"trimmed_inner_text_header_length", "-999999"}}},
{compose::features::kEnableComposeProactiveNudge,
{{"nudge_field_change_event_max", "-200"}}}},
{});
compose::ResetConfigForTesting();
compose::Config config = compose::GetComposeConfig();
EXPECT_EQ(config.input_min_words, 0u);
EXPECT_EQ(config.input_max_words, 0u);
EXPECT_EQ(config.input_max_chars, 0u);
EXPECT_EQ(config.inner_text_max_bytes, 0u);
EXPECT_EQ(config.trimmed_inner_text_max_chars, 0u);
EXPECT_EQ(config.trimmed_inner_text_header_length, 0u);
EXPECT_EQ(config.nudge_field_change_event_max, 0u);
}
TEST_F(ConfigTest, ConfigUnsignedIntPositiveAndDefaultParams) {
compose::Config config = compose::GetComposeConfig();
unsigned int default_min_words = config.input_min_words;
unsigned int default_inner_text_max_bytes = config.inner_text_max_bytes;
unsigned int default_nudge_field_change_event_max =
config.nudge_field_change_event_max;
// Do not overwrite input_min_words, inner_test_max_bytes, or
// nudge_field_change_event_max
scoped_feature_list_.InitWithFeaturesAndParameters(
{{compose::features::kComposeInputParams,
{{"max_words", "123"}, {"max_chars", "321"}}},
{compose::features::kComposeInnerText,
{{"trimmed_inner_text_max_chars", "789"},
{"trimmed_inner_text_header_length", "987"}}}},
{});
compose::ResetConfigForTesting();
config = compose::GetComposeConfig();
EXPECT_EQ(config.input_min_words, default_min_words);
EXPECT_EQ(config.input_max_words, 123u);
EXPECT_EQ(config.input_max_chars, 321u);
EXPECT_EQ(config.inner_text_max_bytes, default_inner_text_max_bytes);
EXPECT_EQ(config.trimmed_inner_text_max_chars, 789u);
EXPECT_EQ(config.trimmed_inner_text_header_length, 987u);
EXPECT_EQ(config.nudge_field_change_event_max,
default_nudge_field_change_event_max);
}