mirror of
https://github.com/discourse/discourse-ai.git
synced 2025-07-08 07:12:49 +00:00
* FIX: improve transition logic in forms previously back button would take you back to the /new route * FIX: enum selection not working for persona tools * seed information correctly in the DB * fix broken spec * Update assets/javascripts/discourse/components/ai-tool-editor-form.gjs Co-authored-by: Alan Guo Xiang Tan <gxtan1990@gmail.com> --------- Co-authored-by: Alan Guo Xiang Tan <gxtan1990@gmail.com>
59 lines
2.0 KiB
Ruby
59 lines
2.0 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
RSpec.describe "AI personas", type: :system, js: true do
|
|
fab!(:admin)
|
|
fab!(:gpt_4) { Fabricate(:llm_model, name: "gpt-4") }
|
|
|
|
before do
|
|
SiteSetting.ai_bot_enabled = true
|
|
toggle_enabled_bots(bots: [gpt_4])
|
|
sign_in(admin)
|
|
end
|
|
|
|
it "can select and save persona tool options" do
|
|
visit "/admin/plugins/discourse-ai/ai-personas"
|
|
find(".ai-persona-list-editor__new-button").click
|
|
|
|
expect(page).to have_current_path("/admin/plugins/discourse-ai/ai-personas/new")
|
|
|
|
form = PageObjects::Components::FormKit.new("form")
|
|
form.field("name").fill_in("Test Persona")
|
|
form.field("description").fill_in("This is a test persona.")
|
|
form.field("system_prompt").fill_in("You are a helpful assistant.")
|
|
form.field("tools").select("Update Artifact")
|
|
form.field("toolOptions.UpdateArtifact.update_algorithm").select("full")
|
|
form.submit
|
|
|
|
expect(page).to have_current_path(%r{/admin/plugins/discourse-ai/ai-personas/\d+/edit})
|
|
|
|
persona = AiPersona.order("id desc").first
|
|
|
|
expect(persona.name).to eq("Test Persona")
|
|
expect(persona.description).to eq("This is a test persona.")
|
|
expect(persona.tools.count).to eq(1)
|
|
expect(persona.tools.first[0]).to eq("UpdateArtifact")
|
|
expect(persona.tools.first[1]["update_algorithm"]).to eq("full")
|
|
end
|
|
|
|
it "remembers the last selected persona" do
|
|
visit "/"
|
|
find(".d-header .ai-bot-button").click()
|
|
persona_selector =
|
|
PageObjects::Components::SelectKit.new(".persona-llm-selector__persona-dropdown")
|
|
|
|
id = DiscourseAi::Personas::Persona.all(user: admin).first.id
|
|
|
|
expect(persona_selector).to have_selected_value(id)
|
|
|
|
persona_selector.expand
|
|
persona_selector.select_row_by_value(-2)
|
|
|
|
visit "/"
|
|
find(".d-header .ai-bot-button").click()
|
|
persona_selector =
|
|
PageObjects::Components::SelectKit.new(".persona-llm-selector__persona-dropdown")
|
|
persona_selector.expand
|
|
expect(persona_selector).to have_selected_value(-2)
|
|
end
|
|
end
|