Skip to content
This repository was archived by the owner on Jul 22, 2025. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion lib/automation.rb
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ def self.available_models
values
.filter do |value_h|
value_h["id"] > 0 ||
SiteSetting.ai_automation_allowed_seeded_models_map.includes?(value_h["id"].to_s)
SiteSetting.ai_automation_allowed_seeded_models_map.include?(value_h["id"].to_s)
end
.each { |value_h| value_h["id"] = "custom:#{value_h["id"]}" }

Expand Down
61 changes: 61 additions & 0 deletions spec/lib/discourse_automation/automation_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
# frozen_string_literal: true

require "rails_helper"

RSpec.describe DiscourseAi::Automation do
describe "manually configured model" do
let!(:llm_model) { Fabricate(:llm_model) }
it "returns a list of available models for automation" do
models = DiscourseAi::Automation.available_models
expect(models).to be_an(Array)
expect(models.first["translated_name"]).to eq(llm_model.display_name)
end
end

describe "no models" do
it "returns an empty list" do
models = DiscourseAi::Automation.available_models
expect(models).to be_empty
end
end

describe "seeded models" do
let!(:llm_model) { Fabricate(:seeded_model) }
it "returns an empty list if no seeded models are allowed" do
models = DiscourseAi::Automation.available_models
expect(models).to be_empty
end

it "returns a list of seeded models if allowed" do
SiteSetting.ai_automation_allowed_seeded_models = llm_model.id.to_s
models = DiscourseAi::Automation.available_models
expect(models.first["translated_name"]).to eq(llm_model.display_name)
end
end

describe "mixed models" do
let!(:llm_model) { Fabricate(:llm_model) }
let!(:seeded_model) { Fabricate(:seeded_model) }

it "returns only the manually configured model if seeded is not allowed" do
models = DiscourseAi::Automation.available_models
expect(models.length).to eq(1)
expect(models.first["translated_name"]).to eq(llm_model.display_name)
end

it "returns a list of seeded and custom models when seeded is allowed" do
SiteSetting.ai_automation_allowed_seeded_models = seeded_model.id.to_s
models = DiscourseAi::Automation.available_models

expect(models).to match_array(
[
{ "translated_name" => "#{llm_model.display_name}", "id" => "custom:#{llm_model.id}" },
{
"translated_name" => "#{seeded_model.display_name}",
"id" => "custom:#{seeded_model.id}",
},
],
)
end
end
end
Loading