2025-05-29 17:28:06 +08:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
|
|
|
require "rails_helper"
|
|
|
|
|
|
|
|
describe DiscourseAi::Translation::BaseTranslator do
|
2025-06-13 10:17:27 +08:00
|
|
|
let!(:persona) do
|
|
|
|
AiPersona.find(
|
|
|
|
DiscourseAi::Personas::Persona.system_personas[DiscourseAi::Personas::PostRawTranslator],
|
|
|
|
)
|
|
|
|
end
|
|
|
|
|
2025-05-29 17:28:06 +08:00
|
|
|
before do
|
|
|
|
Fabricate(:fake_model).tap do |fake_llm|
|
|
|
|
SiteSetting.public_send("ai_translation_model=", "custom:#{fake_llm.id}")
|
|
|
|
end
|
2025-06-13 10:17:27 +08:00
|
|
|
|
|
|
|
SiteSetting.ai_translation_enabled = true
|
2025-05-29 17:28:06 +08:00
|
|
|
end
|
|
|
|
|
|
|
|
describe ".translate" do
|
2025-06-06 23:24:24 +08:00
|
|
|
let(:text) { "cats are great" }
|
|
|
|
let(:target_locale) { "de" }
|
2025-05-29 17:28:06 +08:00
|
|
|
let(:llm_response) { "hur dur hur dur!" }
|
2025-06-13 10:17:27 +08:00
|
|
|
fab!(:post)
|
2025-05-29 17:28:06 +08:00
|
|
|
|
|
|
|
it "creates the correct prompt" do
|
|
|
|
post_translator =
|
2025-06-13 10:17:27 +08:00
|
|
|
DiscourseAi::Translation::PostRawTranslator.new(text:, target_locale:, post:)
|
2025-05-29 17:28:06 +08:00
|
|
|
allow(DiscourseAi::Completions::Prompt).to receive(:new).with(
|
2025-06-13 10:17:27 +08:00
|
|
|
persona.system_prompt,
|
2025-06-17 16:12:52 +08:00
|
|
|
messages: array_including({ type: :user, content: post_translator.formatted_content }),
|
2025-06-13 10:17:27 +08:00
|
|
|
post_id: post.id,
|
|
|
|
topic_id: post.topic_id,
|
2025-05-29 17:28:06 +08:00
|
|
|
).and_call_original
|
|
|
|
|
|
|
|
DiscourseAi::Completions::Llm.with_prepared_responses([llm_response]) do
|
|
|
|
post_translator.translate
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
it "returns the translation from the llm's response" do
|
|
|
|
DiscourseAi::Completions::Llm.with_prepared_responses([llm_response]) do
|
|
|
|
expect(
|
2025-06-06 23:24:24 +08:00
|
|
|
DiscourseAi::Translation::PostRawTranslator.new(text:, target_locale:).translate,
|
2025-05-29 17:28:06 +08:00
|
|
|
).to eq "hur dur hur dur!"
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|