blob: 7e37d392becf1e5fc8470dcdc11f0158a2c9a4a1 [file] [log] [blame]
// Copyright 2023 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "ios/chrome/browser/ui/omnibox/fake_suggestions_database.h"
#include "base/strings/utf_string_conversions.h"
#include "components/search_engines/template_url.h"
#include "components/search_engines/template_url_service.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
class FakeSuggestionsDatabaseTest : public testing::Test {
public:
FakeSuggestionsDatabaseTest() : template_url_service_(nullptr, 0) {
fake_suggestions_database_ =
std::make_unique<FakeSuggestionsDatabase>(&template_url_service_);
}
GURL GetSearchURL(const std::u16string& search_terms);
FakeSuggestionsDatabase& fake_suggestions_database() {
return *fake_suggestions_database_;
}
const TemplateURL* default_search_provider() {
return template_url_service_.GetDefaultSearchProvider();
}
protected:
void SetUp() override {
TemplateURL* default_provider = template_url_service_.Add(
std::make_unique<TemplateURL>(default_search_provider()->data()));
template_url_service_.SetUserSelectedDefaultSearchProvider(
default_provider);
}
private:
std::unique_ptr<FakeSuggestionsDatabase> fake_suggestions_database_;
TemplateURLService template_url_service_;
};
GURL FakeSuggestionsDatabaseTest::GetSearchURL(
const std::u16string& search_terms) {
TemplateURLRef::SearchTermsArgs search_terms_args(search_terms);
const auto& search_terms_data = template_url_service_.search_terms_data();
std::string search_url =
default_search_provider()->suggestions_url_ref().ReplaceSearchTerms(
search_terms_args, search_terms_data);
return GURL(search_url);
}
TEST_F(FakeSuggestionsDatabaseTest, HasFakeSuggestions) {
GURL url_1 = GetSearchURL(u"");
std::string fake_suggestions_1 = "FakeSuggestions1";
GURL url_2 = GetSearchURL(u"example query 2");
std::string fake_suggestions_2 = "FakeSuggestions2";
GURL url_no_fake = GetSearchURL(u"no fake suggestions");
FakeSuggestionsDatabase& database = fake_suggestions_database();
database.SetFakeSuggestions(url_1, fake_suggestions_1);
database.SetFakeSuggestions(url_2, fake_suggestions_2);
EXPECT_TRUE(database.HasFakeSuggestions(url_1));
EXPECT_TRUE(database.HasFakeSuggestions(url_2));
EXPECT_FALSE(database.HasFakeSuggestions(url_no_fake));
}
TEST_F(FakeSuggestionsDatabaseTest, GetSetFakeSuggestions) {
GURL url_1 = GetSearchURL(u"");
std::string fake_suggestions_1 = "FakeSuggestions1";
GURL url_2 = GetSearchURL(u"oneterm");
std::string fake_suggestions_2 = "FakeSuggestions2";
GURL url_3 = GetSearchURL(u"multiple terms");
std::string fake_suggestions_3 = "FakeSuggestions3";
FakeSuggestionsDatabase& database = fake_suggestions_database();
database.SetFakeSuggestions(url_1, fake_suggestions_1);
database.SetFakeSuggestions(url_2, fake_suggestions_2);
database.SetFakeSuggestions(url_3, fake_suggestions_3);
EXPECT_EQ(fake_suggestions_1, database.GetFakeSuggestions(url_1));
EXPECT_EQ(fake_suggestions_2, database.GetFakeSuggestions(url_2));
EXPECT_EQ(fake_suggestions_3, database.GetFakeSuggestions(url_3));
}