FIX: correctly show validation errors in automation (#27622)

A previous refactor has prevented errors to show correctly. The guilt of the issue is that we were not calling the error variable correctly in the templates.

This commit also adds a spec for this case, and removes the need for `I18n.backend.store_translations` in specs so we don't have to write too much boilerplate each time we write a spec.
This commit is contained in:
Joffrey JAFFEUX
2024-06-26 14:09:26 +02:00
committed by GitHub
parent 54a59be617
commit 01e36cbb47
6 changed files with 59 additions and 38 deletions

View File

@ -8,11 +8,18 @@ module DiscourseAutomation
scriptables =
DiscourseAutomation::Scriptable.all.map do |s|
id = s.to_s.gsub(/^__scriptable_/, "")
description_key = "discourse_automation.scriptables.#{id}.description"
doc_key = "discourse_automation.scriptables.#{id}.doc"
{
id: id,
name: I18n.t("discourse_automation.scriptables.#{id}.title"),
description: I18n.t("discourse_automation.scriptables.#{id}.description", default: ""),
doc: I18n.t("discourse_automation.scriptables.#{id}.doc", default: ""),
name:
I18n.t(
"discourse_automation.scriptables.#{id}.title",
default: "Missing translation for discourse_automation.scriptables.#{id}.title",
),
description: I18n.exists?(description_key, :en) ? I18n.t(description_key) : nil,
doc: I18n.exists?(doc_key, :en) ? I18n.t(doc_key) : nil,
}
end

View File

@ -47,8 +47,12 @@ module DiscourseAutomation
{
id: object.script,
version: scriptable.version,
name: I18n.t("#{key}.#{object.script}.title"),
description: I18n.t("#{key}.#{object.script}.description"),
name:
I18n.t(
"#{key}.#{object.script}.title",
default: "Missing translation for #{key}.#{object.script}.title",
),
description: I18n.t("#{key}.#{object.script}.description", default: ""),
doc: I18n.exists?(doc_key, :en) ? I18n.t(doc_key) : nil,
with_trigger_doc:
I18n.exists?(script_with_trigger_key, :en) ? I18n.t(script_with_trigger_key) : nil,
@ -66,8 +70,12 @@ module DiscourseAutomation
{
id: object.trigger,
name: I18n.t("#{key}.#{object.trigger}.title"),
description: I18n.t("#{key}.#{object.trigger}.description"),
name:
I18n.t(
"#{key}.#{object.trigger}.title",
default: "Missing translation for #{key}.#{object.trigger}.title",
),
description: I18n.t("#{key}.#{object.trigger}.description", default: ""),
doc: I18n.exists?(doc_key, :en) ? I18n.t(doc_key) : nil,
not_found: triggerable&.not_found,
templates: process_templates(triggerable&.fields || []),