From 18ca3d373dc3c16daaeccfbc1a6ffeee0af994f8 Mon Sep 17 00:00:00 2001 From: Alan Guo Xiang Tan Date: Tue, 27 Feb 2024 15:46:12 +0800 Subject: [PATCH] FIX: `ThemeSettingsValidator.validate_value` returning wrong error (#25901) Why this change? Before this change, the error messages returned when validating theme settings of typed objects was an array of array instead of just an array. --- lib/theme_settings_validator.rb | 2 +- spec/lib/theme_settings_validator_spec.rb | 25 +++++++++++++++++++++++ 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/lib/theme_settings_validator.rb b/lib/theme_settings_validator.rb index db6725e54dd..ecee0c99fe7 100644 --- a/lib/theme_settings_validator.rb +++ b/lib/theme_settings_validator.rb @@ -52,7 +52,7 @@ class ThemeSettingsValidator translation_prefix: "string", ) when types[:objects] - errors.push( + errors.concat( ThemeSettingsObjectValidator.validate_objects(schema: opts[:schema], objects: value), ) end diff --git a/spec/lib/theme_settings_validator_spec.rb b/spec/lib/theme_settings_validator_spec.rb index a47d423fc43..5145114604a 100644 --- a/spec/lib/theme_settings_validator_spec.rb +++ b/spec/lib/theme_settings_validator_spec.rb @@ -7,5 +7,30 @@ RSpec.describe ThemeSettingsValidator do expect(errors).to eq([]) end + + it "returns the right error messages when value is invalid for type `objects`" do + errors = + described_class.validate_value( + [{ name: "something" }], + ThemeSetting.types[:objects], + { + schema: { + name: "test", + properties: { + name: { + type: "string", + validations: { + max_length: 1, + }, + }, + }, + }, + }, + ) + + expect(errors).to contain_exactly( + "The property at JSON Pointer '/0/name' must be at most 1 characters long.", + ) + end end end