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