discourse-ai/spec/configuration/llm_validator_spec.rb

45 lines
1.5 KiB
Ruby
Raw Normal View History

# frozen_string_literal: true
2025-07-16 14:51:32 -07:00
require "rails_helper"
describe DiscourseAi::Configuration::LlmValidator do
describe "#valid_value?" do
2025-07-16 14:51:32 -07:00
let(:validator) { described_class.new(name: :ai_default_llm_model) }
2025-07-17 14:46:15 -07:00
fab!(:llm_model)
2025-07-16 14:51:32 -07:00
before do
assign_fake_provider_to(:ai_default_llm_model)
SiteSetting.ai_helper_enabled = false
SiteSetting.ai_summarization_enabled = false
SiteSetting.ai_embeddings_semantic_search_enabled = false
SiteSetting.ai_translation_enabled = false
end
2025-07-16 14:51:32 -07:00
it "returns true when no modules are enabled and value is empty string" do
expect(validator.valid_value?("")).to eq(true)
end
2025-07-16 14:51:32 -07:00
it "returns false when a module is enabled and value is empty string" do
SiteSetting.ai_helper_enabled = true
expect(validator.valid_value?("")).to eq(false)
expect(validator.error_message).to include("ai_helper_enabled")
end
it "returns false when multiple modules are enabled and value is empty string" do
SiteSetting.ai_helper_enabled = true
SiteSetting.ai_summarization_enabled = true
expect(validator.valid_value?("")).to eq(false)
expect(validator.error_message).to include("ai_helper_enabled, ai_summarization_enabled")
end
2025-07-16 14:51:32 -07:00
it "returns true for non-empty values regardless of module state" do
SiteSetting.ai_helper_enabled = true
SiteSetting.ai_summarization_enabled = true
2025-07-17 14:46:15 -07:00
DiscourseAi::Completions::Llm.with_prepared_responses([true]) do
expect(validator.valid_value?(llm_model)).to eq(true)
end
end
end
end