DEV: enable raise_error in test envs for deprecated icons in svg_sprite.rb (#30980)

This PR raises an error on any deprecated icon names being converted by
svg_sprite.rb, which will result in any deprecated icons being processed
by the ruby lib to fail tests.
This commit is contained in:
Kelv 2025-02-04 21:21:20 +08:00 committed by GitHub
parent 8ad34862e4
commit 65324b6e5d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 15 additions and 6 deletions

View File

@ -524,7 +524,10 @@ License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL
new_name = remap_from_fa5(new_name)
if icon_name != new_name
Discourse.deprecate("The icon `#{icon_name}` is deprecated. Use `#{new_name}` instead.")
Discourse.deprecate(
"The icon `#{icon_name}` is deprecated. Use `#{new_name}` instead.",
raise_error: Rails.env.test?,
)
return new_name
end

View File

@ -6,6 +6,7 @@ RSpec.describe SvgSprite do
before do
SvgSprite.clear_plugin_svg_sprite_cache!
SvgSprite.expire_cache
allow(Rails.env).to receive(:test?).and_return(false)
end
it "can generate a bundle" do
@ -44,7 +45,7 @@ RSpec.describe SvgSprite do
it "version string changes" do
version1 = SvgSprite.version
Fabricate(:badge, name: "Custom Icon Badge", icon: "fa-gamepad")
Fabricate(:badge, name: "Custom Icon Badge", icon: "gamepad")
version2 = SvgSprite.version
expect(version1).not_to eq(version2)
@ -96,6 +97,11 @@ RSpec.describe SvgSprite do
expect(SvgSprite.all_icons).to include("far-building")
end
it "raises an error in test for deprecated icons" do
allow(Rails.env).to receive(:test?).and_return(true)
expect { SvgSprite.search("fa-gamepad") }.to raise_error(Discourse::Deprecation)
end
it "includes icons defined in theme settings" do
# Works for default settings:
theme.set_field(target: :settings, name: :yaml, value: "custom_icon: dragon")

View File

@ -35,14 +35,14 @@ RSpec.describe SvgSpriteController do
describe "#search" do
it "should not work for anons" do
get "/svg-sprite/search/fa-bolt"
get "/svg-sprite/search/bolt"
expect(response.status).to eq(404)
end
it "should return symbol for FA icon search" do
sign_in(user)
get "/svg-sprite/search/fa-bolt"
get "/svg-sprite/search/bolt"
expect(response.status).to eq(200)
expect(response.body).to include("bolt")
end
@ -50,7 +50,7 @@ RSpec.describe SvgSpriteController do
it "should return 404 when looking for non-existent FA icon" do
sign_in(user)
get "/svg-sprite/search/fa-not-a-valid-icon"
get "/svg-sprite/search/not-a-valid-icon"
expect(response.status).to eq(404)
end
@ -72,7 +72,7 @@ RSpec.describe SvgSpriteController do
sign_in(user)
get "/svg-sprite/search/fa-my-custom-theme-icon"
get "/svg-sprite/search/my-custom-theme-icon"
expect(response.status).to eq(200)
expect(response.body).to include("my-custom-theme-icon")
end