| // 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 |