FIX: creating an automation without script should error (#28752)

This commit ensure we are properly showing an error to the end user and not just a vague 500.
This commit is contained in:
Joffrey JAFFEUX 2024-09-05 11:18:38 +02:00 committed by GitHub
parent 1a96269be0
commit 67ce50c141
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 48 additions and 1 deletions

View File

@ -27,7 +27,8 @@ module DiscourseAutomation
DiscourseAutomation::Automation.new(
automation_params.merge(last_updated_by_id: current_user.id),
)
if automation.scriptable.forced_triggerable
if automation.scriptable&.forced_triggerable
automation.trigger = scriptable.forced_triggerable[:triggerable].to_s
end

View File

@ -0,0 +1,20 @@
# frozen_string_literal: true
describe "DiscourseAutomation | New automation", type: :system, js: true do
fab!(:admin)
before do
SiteSetting.discourse_automation_enabled = true
sign_in(admin)
end
let(:new_automation_page) { PageObjects::Pages::NewAutomation.new }
context "when the script is not selected" do
it "shows an error" do
new_automation_page.visit.fill_name("aaaaa").create
expect(new_automation_page).to have_error(I18n.t("errors.messages.blank"))
end
end
end

View File

@ -0,0 +1,26 @@
# frozen_string_literal: true
module PageObjects
module Pages
class NewAutomation < PageObjects::Pages::Base
def visit
super("/admin/plugins/discourse-automation/new")
self
end
def fill_name(name)
find_field("automation-name").fill_in(with: name)
self
end
def create
find(".create-automation").click
self
end
def has_error?(message)
find(".form-errors").has_text?(message)
end
end
end
end