discourse-ai/spec/system/ai_user_preferences_spec.rb
Keegan George a4194d3fb2
FIX: AI preferences tab button not appearing unless Helper enabled (#1452)
This update fixes an issue where the AI user preferences tab was not appearing unless `SiteSetting.ai_helper_enabled` was `true`. This is because we previously checked for it's presence when user preferences only had a single setting related to Helper. However, since then, we've also added search discoveries setting there too. As such, we don't want it to depend on Helper. We also sneak in this update a modernization of converting the preferences template from `.hbs` to `.gjs`.
2025-06-20 10:12:08 -07:00

81 lines
3.0 KiB
Ruby

# frozen_string_literal: true
RSpec.describe "User AI preferences", type: :system, js: true do
fab!(:user) { Fabricate(:admin, refresh_auto_groups: true) }
fab!(:llm_model)
let(:user_preferences_ai_page) { PageObjects::Pages::UserPreferencesAi.new }
fab!(:discovery_persona) do
Fabricate(:ai_persona, allowed_group_ids: [Group::AUTO_GROUPS[:admins]])
end
before do
SiteSetting.discourse_ai_enabled = true
SiteSetting.ai_bot_discover_persona = discovery_persona.id
Group.find_by(id: Group::AUTO_GROUPS[:admins]).add(user)
assign_fake_provider_to(:ai_helper_model)
assign_fake_provider_to(:ai_helper_image_caption_model)
sign_in(user)
end
describe "automatic image caption setting" do
context "when ai helper is disabled" do
before { SiteSetting.ai_helper_enabled = false }
it "should not have the setting present in the user preferences page" do
user_preferences_ai_page.visit(user)
expect(user_preferences_ai_page).to have_no_ai_preference("pref-auto-image-caption")
end
end
context "when toggling the setting from the user preferences page" do
before do
SiteSetting.ai_helper_enabled = true
SiteSetting.ai_helper_enabled_features = "image_caption"
user.user_option.update!(auto_image_caption: false)
end
it "should update the preference to enabled" do
user_preferences_ai_page.visit(user)
user_preferences_ai_page.toggle_setting("pref-auto-image-caption")
user_preferences_ai_page.save_changes
wait_for(timeout: 5) { user.reload.user_option.auto_image_caption }
expect(user.reload.user_option.auto_image_caption).to eq(true)
end
end
end
describe "search discoveries setting" do
context "when discoveries are enabled" do
before { SiteSetting.ai_bot_enabled = true }
it "should have the setting present in the user preferences page" do
user_preferences_ai_page.visit(user)
expect(user_preferences_ai_page).to have_ai_preference("pref-ai-search-discoveries")
end
end
context "when discoveries are disabled" do
SiteSetting.ai_bot_enabled = false
SiteSetting.ai_bot_discover_persona = nil
it "should not have the setting present in the user preferences page" do
user_preferences_ai_page.visit(user)
expect(user_preferences_ai_page).to have_no_ai_preference("pref-ai-search-discoveries")
end
end
end
describe "when no settings are available" do
before do
SiteSetting.ai_helper_enabled = false
SiteSetting.ai_bot_enabled = false
end
it "should not have any AI preferences and should show a message" do
user_preferences_ai_page.visit(user)
expect(user_preferences_ai_page).to have_no_ai_preference("pref-auto-image-caption")
expect(user_preferences_ai_page).to have_no_ai_preference("pref-ai-search-discoveries")
expect(page).to have_content(I18n.t("js.discourse_ai.user_preferences.empty"))
end
end
end