# frozen_string_literal: true RSpec.describe DiscourseAi::AiBot::QuestionConsolidator do let(:llm) { DiscourseAi::Completions::Llm.proxy("fake:fake") } let(:fake_endpoint) { DiscourseAi::Completions::Endpoints::Fake } fab!(:user) describe ".consolidate_question" do it "properly picks all the right messages and consolidates" do messages = [ { type: :user, content: "What is the capital of France?" }, { type: :tool_call, content: "search:google", id: "123" }, { type: :tool, content: "some results from google", id: "123" }, { type: :model, content: "Paris" }, { type: :user, content: "What about Germany?" }, ] result = described_class.consolidate_question(llm, messages, user) expect(result).to eq(fake_endpoint.fake_content) call = fake_endpoint.last_call prompt = call[:dialect].prompt expect(prompt.messages.length).to eq(2) content = prompt.messages[1][:content] expect(content).to include("Germany") expect(content).to include("France") expect(content).to include("Paris") expect(content).not_to include("google") end end end