DEV: add spec where missing upload doesn't fail a theme's CSS precompilation (#19075)

In this PR, we're making sure when a theme upload which is used in the theme's CSS is missing it won't break the stylesheet precompilation process. See also: 6ebd2cecda
This commit is contained in:
Vinoth Kannan 2022-11-24 01:29:59 +05:30 committed by GitHub
parent eef3532952
commit 01aa42c4b4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 43 additions and 0 deletions

View File

@ -872,6 +872,49 @@ RSpec.describe Stylesheet::Manager do
content = StylesheetCache.last.content
expect(content).to match(/# sourceMappingURL=[^\/]+\.css\.map\?__ws=test\.localhost/)
end
it "generates precompiled CSS with a missing upload" do
image = file_from_fixtures("logo.png")
upload = UploadCreator.new(image, "logo.png").create_for(-1)
scheme = ColorScheme.create!(name: "scheme")
core_targets = [:desktop, :mobile, :desktop_rtl, :mobile_rtl, :admin, :wizard]
theme_targets = [:desktop_theme, :mobile_theme]
default_theme = Fabricate(:theme, color_scheme: scheme).tap do |t|
field = ThemeField.create!(
theme_id: t.id,
target_id: Theme.targets[:common],
name: "logo",
value: "",
upload_id: upload.id,
type_id: ThemeField.types[:theme_upload_var]
)
t.set_field(
target: :common,
name: :scss,
value: "body { background: url($logo); border: 3px solid green; }"
)
t.save!
end
default_theme.set_default!
upload.destroy!
StylesheetCache.destroy_all
Stylesheet::Manager.precompile_theme_css
manager = manager(default_theme.id)
theme_builder = Stylesheet::Manager::Builder.new(
target: :desktop_theme,
theme: default_theme,
manager: manager
)
css = File.read(theme_builder.stylesheet_fullpath)
expect(css).to include("border:3px solid green}")
end
end
describe ".fs_asset_cachebuster" do