discourse/plugins/discourse-ai/spec/evals/runners/ai_helper_spec.rb
Sam e3fae646d4
DEV: AI persona to agent migration (#38319)
Co-authored-by: Keegan George <kgeorge13@gmail.com>
2026-03-10 15:59:45 +11:00

33 lines
1.2 KiB
Ruby
Vendored

# frozen_string_literal: true
require_relative "../../../evals/lib/runners/ai_helper"
require_relative "../support/runner_helper"
RSpec.describe DiscourseAi::Evals::Runners::AiHelper do
describe "#run" do
let(:llm) { Fabricate.build(:fake_model) }
let(:execution_context) { DiscourseAi::Completions::ExecutionContext.new }
let(:eval_case) { OpenStruct.new(args: { input: "We need new titles." }) }
let(:titles_agent) { DiscourseAi::Agents::TitlesGenerator.new }
let(:runner) { described_class.new("title_suggestions") }
before do
stub_runner_bot(agent: titles_agent) do |blk|
structured_output =
instance_double(
DiscourseAi::Completions::StructuredOutput,
read_buffered_property: ["Title One", "Title Two <input>ignored</input>"],
)
blk.call(structured_output, nil, :structured_output)
end
end
it "returns newline-separated suggestions when the helper outputs an array" do
result = runner.run(eval_case, llm, execution_context: execution_context)
lines = result[:raw].split("\n")
expect(lines).to contain_exactly("Title One", "Title Two ignored")
expect(result[:metadata]).to include(feature_name: "title_suggestions")
end
end
end