discourse-ai/spec/system/ai_user_preferences_spec.rb

81 lines
3.0 KiB
Ruby
Raw Normal View History

# frozen_string_literal: true
2025-06-20 23:49:44 +02:00
RSpec.describe "User AI preferences", type: :system 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