From 54598a27dccbf48712c462f339a357d8d26b75f1 Mon Sep 17 00:00:00 2001 From: David Ryan Date: Thu, 28 May 2026 15:15:43 +1000 Subject: [PATCH] Fix workflow save error showing literal I18n method call instead of translated message MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit errors.add(:save, "I18n.t(...)") passes the method call as a string literal. Calling I18n.t directly returns the translated string. Also fix two pre-existing assertions that were silently passing regardless of error state: assert workflow.errors.inspect → assert_empty workflow.errors --- apps/dashboard/app/models/workflow.rb | 2 +- apps/dashboard/test/models/workflow_test.rb | 10 ++++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/apps/dashboard/app/models/workflow.rb b/apps/dashboard/app/models/workflow.rb index 7326ecf83a..0943979bc1 100644 --- a/apps/dashboard/app/models/workflow.rb +++ b/apps/dashboard/app/models/workflow.rb @@ -84,7 +84,7 @@ def save return false unless valid?(:create) if @project_dir.empty? - errors.add(:save, "I18n.t('dashboard.jobs_project_directory_error')") + errors.add(:save, I18n.t('dashboard.jobs_project_directory_error')) return false end diff --git a/apps/dashboard/test/models/workflow_test.rb b/apps/dashboard/test/models/workflow_test.rb index 0a9c5aeec8..ca147dd4c4 100644 --- a/apps/dashboard/test/models/workflow_test.rb +++ b/apps/dashboard/test/models/workflow_test.rb @@ -15,6 +15,12 @@ class WorkflowsTest < ActiveSupport::TestCase assert_equal '0', workflow.sync_key_enabled end + test 'save without project_dir returns translated error message' do + workflow = Workflow.new(name: 'test', launcher_ids: ['sample']) + assert_not workflow.save + assert_equal I18n.t('dashboard.jobs_project_directory_error'), workflow.errors[:save].first + end + test 'create workflow validation' do Dir.mktmpdir do |tmp| # add error in workflow save if project_dir is not valid @@ -66,7 +72,7 @@ class WorkflowsTest < ActiveSupport::TestCase launcher_ids: ['sample'] ) - assert workflow.errors.inspect + assert_empty workflow.errors assert Dir.entries("#{project_dir}/.ondemand/workflows").include?("#{workflow_id}.yml") assert_equal workflow_id, workflow.id assert_equal 'MyLocalName', workflow.name @@ -86,7 +92,7 @@ class WorkflowsTest < ActiveSupport::TestCase sync_key_enabled: '1' ) - assert workflow.errors.inspect + assert_empty workflow.errors manifest_file = Pathname.new("#{project_dir}/.ondemand/workflows/#{workflow.id}.yml") assert_equal manifest_file, workflow.manifest_file assert File.file?(manifest_file)