40 lines
1.2 KiB
Ruby
40 lines
1.2 KiB
Ruby
|
#frozen_string_literal: true
|
||
|
|
||
|
RSpec.describe DiscourseAi::AiBot::Tools::SearchSettings do
|
||
|
let(:bot_user) { User.find(DiscourseAi::AiBot::EntryPoint::GPT3_5_TURBO_ID) }
|
||
|
let(:llm) { DiscourseAi::Completions::Llm.proxy("gpt-3.5-turbo") }
|
||
|
|
||
|
before { SiteSetting.ai_bot_enabled = true }
|
||
|
|
||
|
def search_settings(query)
|
||
|
described_class.new({ query: query })
|
||
|
end
|
||
|
|
||
|
describe "#process" do
|
||
|
it "can handle no results" do
|
||
|
results = search_settings("this will not exist frogs").invoke(bot_user, llm)
|
||
|
expect(results[:args]).to eq({ query: "this will not exist frogs" })
|
||
|
expect(results[:rows]).to eq([])
|
||
|
end
|
||
|
|
||
|
it "can return more many settings with no descriptions if there are lots of hits" do
|
||
|
results = search_settings("a").invoke(bot_user, llm)
|
||
|
|
||
|
expect(results[:rows].length).to be > 30
|
||
|
expect(results[:rows][0].length).to eq(1)
|
||
|
end
|
||
|
|
||
|
it "can return descriptions if there are few matches" do
|
||
|
results =
|
||
|
search_settings("this will not be found!@,default_locale,ai_bot_enabled_chat_bots").invoke(
|
||
|
bot_user,
|
||
|
llm,
|
||
|
)
|
||
|
|
||
|
expect(results[:rows].length).to eq(2)
|
||
|
|
||
|
expect(results[:rows][0][1]).not_to eq(nil)
|
||
|
end
|
||
|
end
|
||
|
end
|