diff --git a/lib/theme_settings_manager.rb b/lib/theme_settings_manager.rb index 1c353059f6..7a5f987ab8 100644 --- a/lib/theme_settings_manager.rb +++ b/lib/theme_settings_manager.rb @@ -184,7 +184,7 @@ class ThemeSettingsManager class Upload < self def value - cdn_url(super) + has_record? ? cdn_url(db_record.value) : default end def default diff --git a/spec/fixtures/theme_settings/valid_settings.yaml b/spec/fixtures/theme_settings/valid_settings.yaml index a6e8e9b6fa..4c3e3b480d 100644 --- a/spec/fixtures/theme_settings/valid_settings.yaml +++ b/spec/fixtures/theme_settings/valid_settings.yaml @@ -71,7 +71,7 @@ enum_setting_03: upload_setting: type: upload - default: "" + default: "default-upload" invalid_json_schema_setting: default: "" diff --git a/spec/lib/theme_settings_manager_spec.rb b/spec/lib/theme_settings_manager_spec.rb index f1ec48b6dd..ac507ad146 100644 --- a/spec/lib/theme_settings_manager_spec.rb +++ b/spec/lib/theme_settings_manager_spec.rb @@ -161,12 +161,30 @@ RSpec.describe ThemeSettingsManager do ).to be_truthy end - it "returns the CDN URL" do - upload_setting = find_by_name(:upload_setting) - upload_setting.value = upload.url - theme.reload + describe "#value" do + context "when it's changed to a custom upload" do + it "returns CDN URL" do + upload_setting = find_by_name(:upload_setting) + upload_setting.value = upload.url + theme.reload - expect(upload_setting.value).to eq(Discourse.store.cdn_url(upload.url)) + expect(upload_setting.value).to eq(Discourse.store.cdn_url(upload.url)) + end + end + + context "when there's a default upload" do + it "returns CDN URL" do + theme.set_field( + target: :common, + name: "default-upload", + type: :theme_upload_var, + upload_id: upload.id, + ) + theme.save! + upload_setting = find_by_name(:upload_setting) + expect(upload_setting.value).to eq(Discourse.store.cdn_url(upload.url)) + end + end end end end