blob: aea888cc51240835f8f189ffd88281f7c468a768 [file] [log] [blame]
// Copyright 2025 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/contextual_tasks/public/contextual_task.h"
#include <string>
#include "base/uuid.h"
#include "components/sessions/core/session_id.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "url/gurl.h"
namespace contextual_tasks {
TEST(ContextualTaskTest, GetTaskId) {
base::Uuid task_id = base::Uuid::GenerateRandomV4();
ContextualTask task(task_id);
EXPECT_EQ(task_id, task.GetTaskId());
}
TEST(ContextualTaskTest, IsEphemeral) {
base::Uuid task_id1 = base::Uuid::GenerateRandomV4();
base::Uuid task_id2 = base::Uuid::GenerateRandomV4();
ContextualTask task1(task_id1, /*is_ephemeral=*/true);
ContextualTask task2(task_id2, /*is_ephemeral=*/false);
EXPECT_TRUE(task1.IsEphemeral());
EXPECT_FALSE(task2.IsEphemeral());
EXPECT_EQ(task_id1, task1.GetTaskId());
EXPECT_EQ(task_id2, task2.GetTaskId());
}
TEST(ContextualTaskTest, AddAndRemoveUrlResource) {
base::Uuid task_id = base::Uuid::GenerateRandomV4();
ContextualTask task(task_id);
UrlResource url_resource(base::Uuid::GenerateRandomV4(),
GURL("https://www.google.com"));
EXPECT_TRUE(task.AddUrlResource(url_resource));
EXPECT_FALSE(task.AddUrlResource(url_resource));
EXPECT_EQ(1u, task.GetUrlResources().size());
EXPECT_EQ(url_resource.url_id, task.RemoveUrl(url_resource.url));
EXPECT_EQ(0u, task.GetUrlResources().size());
EXPECT_EQ(std::nullopt, task.RemoveUrl(url_resource.url));
}
TEST(ContextualTaskTest, AddThread) {
base::Uuid task_id = base::Uuid::GenerateRandomV4();
ContextualTask task(task_id);
ThreadType type = ThreadType::kAiMode;
std::string server_id = "server_id";
std::string title = "foo";
std::string conversation_turn_id = "conversation_turn_id";
task.AddThread(Thread(type, server_id, title, conversation_turn_id));
EXPECT_TRUE(task.GetThread().has_value());
EXPECT_EQ(task.GetThread()->type, type);
EXPECT_EQ(task.GetThread()->server_id, server_id);
EXPECT_EQ(task.GetThread()->title, title);
EXPECT_EQ(task.GetThread()->conversation_turn_id, conversation_turn_id);
std::string server_id_2 = "server_id_2";
std::string title_2 = "foo_2";
std::string conversation_turn_id_2 = "conversation_turn_id_2";
task.AddThread(Thread(type, server_id_2, title_2, conversation_turn_id_2));
EXPECT_TRUE(task.GetThread().has_value());
EXPECT_EQ(task.GetThread()->type, type);
EXPECT_EQ(task.GetThread()->server_id, server_id_2);
EXPECT_EQ(task.GetThread()->title, title_2);
EXPECT_EQ(task.GetThread()->conversation_turn_id, conversation_turn_id_2);
}
TEST(ContextualTaskTest, RemoveThread) {
base::Uuid task_id = base::Uuid::GenerateRandomV4();
ContextualTask task(task_id);
ThreadType type = ThreadType::kAiMode;
std::string server_id = "server_id";
std::string title = "foo";
std::string conversation_turn_id = "conversation_turn_id";
task.AddThread(Thread(type, server_id, title, conversation_turn_id));
EXPECT_TRUE(task.GetThread().has_value());
task.RemoveThread(type, "wrong_server_id");
EXPECT_TRUE(task.GetThread().has_value());
task.RemoveThread(type, server_id);
EXPECT_FALSE(task.GetThread().has_value());
}
TEST(ContextualTaskTest, AddAndRemoveTabId) {
base::Uuid task_id = base::Uuid::GenerateRandomV4();
ContextualTask task(task_id);
SessionID tab_id = SessionID::FromSerializedValue(1);
task.AddTabId(tab_id);
task.AddTabId(tab_id);
EXPECT_EQ(1u, task.GetTabIds().size());
task.RemoveTabId(tab_id);
EXPECT_EQ(0u, task.GetTabIds().size());
}
TEST(ContextualTaskTest, ClearTabIds) {
base::Uuid task_id = base::Uuid::GenerateRandomV4();
ContextualTask task(task_id);
task.AddTabId(SessionID::FromSerializedValue(1));
task.AddTabId(SessionID::FromSerializedValue(2));
ASSERT_EQ(2u, task.GetTabIds().size());
task.ClearTabIds();
EXPECT_EQ(0u, task.GetTabIds().size());
}
TEST(ContextualTaskTest, SetAndGetTitle) {
base::Uuid task_id = base::Uuid::GenerateRandomV4();
ContextualTask task(task_id);
std::string title = "test title";
task.SetTitle(title);
EXPECT_EQ(title, task.GetTitle());
}
} // namespace contextual_tasks