Better handling of custom SVG sprites in themes when using S3
This commit is contained in:
parent
9bdfaa195e
commit
42818b810e
|
@ -202,11 +202,13 @@ module SvgSprite
|
||||||
ThemeField.where(type_id: ThemeField.types[:theme_upload_var], name: THEME_SPRITE_VAR_NAME, theme_id: Theme.transform_ids(theme_ids))
|
ThemeField.where(type_id: ThemeField.types[:theme_upload_var], name: THEME_SPRITE_VAR_NAME, theme_id: Theme.transform_ids(theme_ids))
|
||||||
.pluck(:upload_id).each do |upload_id|
|
.pluck(:upload_id).each do |upload_id|
|
||||||
|
|
||||||
upload = Upload.find(upload_id)
|
upload = Upload.find(upload_id) rescue nil
|
||||||
original_path = Discourse.store.path_for(upload)
|
|
||||||
if original_path.blank?
|
if Discourse.store.external?
|
||||||
external_copy = Discourse.store.download(upload) rescue nil
|
external_copy = Discourse.store.download(upload) rescue nil
|
||||||
original_path = external_copy.try(:path)
|
original_path = external_copy.try(:path)
|
||||||
|
else
|
||||||
|
original_path = Discourse.store.path_for(upload)
|
||||||
end
|
end
|
||||||
|
|
||||||
custom_sprite_paths << original_path if original_path.present?
|
custom_sprite_paths << original_path if original_path.present?
|
||||||
|
|
|
@ -119,6 +119,30 @@ describe SvgSprite do
|
||||||
expect(SvgSprite.bundle([theme.id])).to match(/my-custom-theme-icon/)
|
expect(SvgSprite.bundle([theme.id])).to match(/my-custom-theme-icon/)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
context "s3" do
|
||||||
|
let(:upload_s3) { Fabricate(:upload_s3) }
|
||||||
|
|
||||||
|
before do
|
||||||
|
SiteSetting.enable_s3_uploads = true
|
||||||
|
SiteSetting.s3_upload_bucket = "s3bucket"
|
||||||
|
SiteSetting.s3_access_key_id = "s3_access_key_id"
|
||||||
|
SiteSetting.s3_secret_access_key = "s3_secret_access_key"
|
||||||
|
|
||||||
|
stub_request(:get, upload_s3.url).to_return(status: 200, body: "Hello world")
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'includes svg sprites in themes stored in s3' do
|
||||||
|
theme = Fabricate(:theme)
|
||||||
|
theme.set_field(target: :common, name: SvgSprite.theme_sprite_variable_name, upload_id: upload_s3.id, type: :theme_upload_var)
|
||||||
|
theme.save!
|
||||||
|
|
||||||
|
sprite_files = SvgSprite.custom_svg_sprites([theme.id]).join("|")
|
||||||
|
|
||||||
|
expect(sprite_files).to match(/#{upload_s3.sha1}/)
|
||||||
|
expect(sprite_files).not_to match(/amazonaws/)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
it 'includes icons from SiteSettings' do
|
it 'includes icons from SiteSettings' do
|
||||||
SiteSetting.svg_icon_subset = "blender|drafting-compass|fab-bandcamp"
|
SiteSetting.svg_icon_subset = "blender|drafting-compass|fab-bandcamp"
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue