discourse/spec/serializers/remote_theme_serializer_spec.rb
Martin Brennan e708c99e12
FIX: Hide broken theme about/license URLs (#29930)
At the top of the theme show page we have a link
to the theme About and License, which are supposed
to be URLs. However some themes have left placeholder
text in these metadata fields, which leads to a wonky
experience.

Instead, we can just not serialize these fields if they
are not valid URLs, then they will not show as links
in the UI.
2024-11-26 13:53:10 +10:00

38 lines
1.3 KiB
Ruby

# frozen_string_literal: true
RSpec.describe RemoteThemeSerializer do
fab!(:remote_theme) do
Fabricate(
:remote_theme,
about_url: "https://meta.discourse.org/t/some-theme/123",
license_url: "https://github.com/repo/repo/LICENSE.md",
)
end
describe "about_url" do
it "returns the about_url" do
serialized = RemoteThemeSerializer.new(remote_theme).as_json[:remote_theme]
expect(serialized[:about_url]).to eq("https://meta.discourse.org/t/some-theme/123")
end
it "returns nil if the URL is not a valid URL" do
remote_theme.update!(about_url: "todo: Put your theme's public repo or Meta topic URL here")
serialized = RemoteThemeSerializer.new(remote_theme).as_json[:remote_theme]
expect(serialized[:about_url]).to be_nil
end
end
describe "license_url" do
it "returns the license_url" do
serialized = RemoteThemeSerializer.new(remote_theme).as_json[:remote_theme]
expect(serialized[:license_url]).to eq("https://github.com/repo/repo/LICENSE.md")
end
it "returns nil if the URL is not a valid URL" do
remote_theme.update!(license_url: "todo: Put your theme's LICENSE URL here")
serialized = RemoteThemeSerializer.new(remote_theme).as_json[:remote_theme]
expect(serialized[:license_url]).to be_nil
end
end
end