|
3 | 3 | RSpec.describe "AI Bot - Personal Message", type: :system do
|
4 | 4 | let(:topic_page) { PageObjects::Pages::Topic.new }
|
5 | 5 | let(:composer) { PageObjects::Components::Composer.new }
|
| 6 | + let(:ai_pm_homepage) { PageObjects::Components::AiPmHomepage.new } |
| 7 | + let(:sidebar) { PageObjects::Components::NavigationMenu::Sidebar.new } |
| 8 | + let(:header_dropdown) { PageObjects::Components::NavigationMenu::HeaderDropdown.new } |
6 | 9 |
|
7 | 10 | fab!(:user)
|
8 | 11 | fab!(:group)
|
9 |
| - fab!(:gpt_4) { Fabricate(:llm_model, name: "gpt-4") } |
10 |
| - let(:bot_user) { DiscourseAi::AiBot::EntryPoint.find_user_from_model("gpt-4") } |
11 | 12 |
|
12 |
| - let(:pm) do |
| 13 | + fab!(:bot_user) do |
| 14 | + user = Fabricate(:user) |
| 15 | + AiPersona.last.update!(user_id: user.id) |
| 16 | + user |
| 17 | + end |
| 18 | + fab!(:llm_model) do |
| 19 | + Fabricate(:llm_model, provider: "anthropic", name: "claude-3-opus", enabled_chat_bot: true) |
| 20 | + end |
| 21 | + |
| 22 | + fab!(:pm) do |
13 | 23 | Fabricate(
|
14 | 24 | :private_message_topic,
|
15 | 25 | title: "AI Conversation Test",
|
|
20 | 30 | ],
|
21 | 31 | )
|
22 | 32 | end
|
23 |
| - |
24 |
| - let(:pm_posts) do |
25 |
| - posts = [] |
26 |
| - i = 1 |
27 |
| - 3.times do |
28 |
| - posts << Fabricate(:post, topic: pm, user: user, raw: "test test test user reply #{i}") |
29 |
| - posts << Fabricate(:post, topic: pm, user: bot_user, raw: "test test test bot reply #{i}") |
30 |
| - i += 1 |
31 |
| - end |
32 |
| - |
33 |
| - posts |
34 |
| - end |
| 33 | + fab!(:reply) { Fabricate(:post, topic: pm, user: user, raw: "test test test user reply") } |
| 34 | + fab!(:bot_reply) { Fabricate(:post, topic: pm, user: bot_user, raw: "test test test bot reply") } |
35 | 35 |
|
36 | 36 | before do
|
37 | 37 | SiteSetting.ai_enable_experimental_bot_ux = true
|
38 |
| - |
39 | 38 | SiteSetting.ai_bot_enabled = true
|
40 |
| - toggle_enabled_bots(bots: [gpt_4]) |
41 | 39 | SiteSetting.ai_bot_allowed_groups = group.id.to_s
|
42 | 40 | sign_in(user)
|
43 | 41 |
|
|
53 | 51 | it "has normal bot interaction when `ai_enable_experimental_bot_ux` is disabled" do
|
54 | 52 | SiteSetting.ai_enable_experimental_bot_ux = false
|
55 | 53 | visit "/"
|
56 |
| - expect(page).to have_selector(".ai-bot-button") |
57 | 54 | find(".ai-bot-button").click
|
58 | 55 |
|
| 56 | + expect(ai_pm_homepage).to have_no_homepage |
59 | 57 | expect(composer).to be_opened
|
60 | 58 | end
|
61 | 59 |
|
62 |
| - it "renders landing page when `ai_enable_experimental_bot_ux` is enabled" do |
63 |
| - visit "/" |
64 |
| - expect(page).to have_selector(".ai-bot-button") |
65 |
| - find(".ai-bot-button").click |
| 60 | + context "when `ai_enable_experimental_bot_ux` is enabled" do |
| 61 | + it "renders landing page on bot click" do |
| 62 | + visit "/" |
| 63 | + find(".ai-bot-button").click |
| 64 | + expect(ai_pm_homepage).to have_homepage |
| 65 | + expect(sidebar).to be_visible |
| 66 | + end |
| 67 | + |
| 68 | + it "renders sidebar even when navigation menu is set to header" do |
| 69 | + SiteSetting.navigation_menu = "header dropdown" |
| 70 | + visit "/" |
| 71 | + find(".ai-bot-button").click |
| 72 | + expect(ai_pm_homepage).to have_homepage |
| 73 | + expect(sidebar).to be_visible |
| 74 | + epxect(header_dropdown).to be_visible |
| 75 | + end |
| 76 | + |
| 77 | + it "hides default content in the sidebar" do |
| 78 | + visit "/" |
| 79 | + find(".ai-bot-button").click |
66 | 80 |
|
67 |
| - expect(page).to have_css(".custom-homepage__content-wrapper") |
| 81 | + expect(ai_pm_homepage).to have_homepage |
| 82 | + expect(sidebar).to have_no_tags_section |
| 83 | + expect(sidebar).to have_no_section("categories") |
| 84 | + expect(sidebar).to have_no_section("messages") |
| 85 | + expect(sidebar).to have_no_section("chat-dms") |
| 86 | + expect(sidebar).to have_no_section("chat-channels") |
| 87 | + expect(sidebar).to have_no_section("user-threads") |
| 88 | + end |
| 89 | + |
| 90 | + it "shows the bot conversation in the sidebar" do |
| 91 | + visit "/" |
| 92 | + find(".ai-bot-button").click |
| 93 | + |
| 94 | + expect(ai_pm_homepage).to have_homepage |
| 95 | + expect(sidebar).to have_section("custom-messages") |
| 96 | + expect(sidebar).to have_section_link(pm.title, href: pm.relative_url) |
| 97 | + end |
68 | 98 | end
|
69 | 99 | end
|
0 commit comments