blob: 6eab24e7f759fe193bda5cb74f05ae403ad69a9d [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 "chrome/browser/ash/mahi/mahi_cache_manager.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace ash {
class MahiCacheManagerTest : public testing::Test {
public:
MahiCacheManagerTest() = default;
MahiCacheManagerTest(const MahiCacheManagerTest&) = delete;
MahiCacheManagerTest& operator=(const MahiCacheManagerTest&) = delete;
~MahiCacheManagerTest() override = default;
MahiCacheManager* GetMahiCacheManager() { return mahi_cache_manager_.get(); }
std::map<GURL, MahiCacheManager::MahiData> GetPageCache() {
return mahi_cache_manager_->page_cache_;
}
// testing::Test:
void SetUp() override {
mahi_cache_manager_ = std::make_unique<MahiCacheManager>();
mahi_cache_manager_->page_cache_[GURL("http://url1.com/")] =
MahiCacheManager::MahiData(
"http://url1.com", u"title 1", std::nullopt, u"page content 1",
u"summary 1",
{{u"Question 1", u"Answer 1"}, {u"Question 2", u"Answer 2"}});
mahi_cache_manager_->page_cache_[GURL("http://url2.com/")] =
MahiCacheManager::MahiData("http://url2.com", u"title 2", std::nullopt,
u"page content 2", u"summary 2",
{{u"question 1", u"answer 1"}});
}
void TearDown() override { mahi_cache_manager_.reset(); }
private:
std::unique_ptr<MahiCacheManager> mahi_cache_manager_;
};
TEST_F(MahiCacheManagerTest, AddNewURL) {
EXPECT_EQ(GetPageCache().size(), 2u);
GetMahiCacheManager()->AddCacheForUrl("http://url3.com",
{"http://url3.com",
u"title 3",
std::nullopt,
u"page content 3",
u"summary 3",
{{u"new question", u"new answer"}}});
EXPECT_EQ(GetPageCache().size(), 3u);
}
TEST_F(MahiCacheManagerTest, ReplacingExistingURLWithNewContent) {
MahiCacheManager::MahiData new_data(
"http://url1.com", u"New title", std::nullopt, u"New content",
u"New summary", {{u"new question", u"new answer"}});
GetMahiCacheManager()->AddCacheForUrl("http://url1.com", new_data);
EXPECT_EQ(GetPageCache().size(), 2u);
EXPECT_EQ(GetPageCache().at(GURL("http://url1.com")).url, new_data.url);
EXPECT_EQ(GetPageCache().at(GURL("http://url1.com")).title, new_data.title);
EXPECT_EQ(GetPageCache().at(GURL("http://url1.com")).page_content,
new_data.page_content);
EXPECT_EQ(GetPageCache().at(GURL("http://url1.com")).summary,
new_data.summary);
EXPECT_EQ(GetPageCache().at(GURL("http://url1.com")).previous_qa.size(), 1u);
}
TEST_F(MahiCacheManagerTest, GetSummaryFromTheCacheSameURL) {
auto result = GetMahiCacheManager()->GetSummaryForUrl("http://url1.com");
EXPECT_TRUE(result.has_value());
EXPECT_EQ(result.value(), u"summary 1");
}
TEST_F(MahiCacheManagerTest, GetSummaryFromTheCacheDifferentURL) {
auto result =
GetMahiCacheManager()->GetSummaryForUrl("http://url1.com/search");
EXPECT_FALSE(result.has_value());
}
TEST_F(MahiCacheManagerTest, GetSummaryFromTheCacheWithRef) {
auto result = GetMahiCacheManager()->GetSummaryForUrl("http://url1.com/#ref");
EXPECT_TRUE(result.has_value());
EXPECT_EQ(result.value(), u"summary 1");
}
TEST_F(MahiCacheManagerTest, GetQAFromCacheSameURL) {
auto result = GetMahiCacheManager()->GetQAForUrl("http://url1.com");
EXPECT_EQ(result.size(), 2u);
EXPECT_EQ(result[0].question, u"Question 1");
EXPECT_EQ(result[0].answer, u"Answer 1");
EXPECT_EQ(result[1].question, u"Question 2");
EXPECT_EQ(result[1].answer, u"Answer 2");
}
TEST_F(MahiCacheManagerTest, GetQAFromCacheURLWithRef) {
auto result = GetMahiCacheManager()->GetQAForUrl("http://url1.com/#ref");
EXPECT_EQ(result.size(), 2u);
EXPECT_EQ(result[0].question, u"Question 1");
EXPECT_EQ(result[0].answer, u"Answer 1");
EXPECT_EQ(result[1].question, u"Question 2");
EXPECT_EQ(result[1].answer, u"Answer 2");
}
TEST_F(MahiCacheManagerTest, ClearCacheSuccessfully) {
GetMahiCacheManager()->ClearCache();
EXPECT_EQ(GetPageCache().size(), 0u);
}
} // namespace ash