diff --git a/app/helpers/formatting_helper.rb b/app/helpers/formatting_helper.rb
index a9d2f9651..c70931489 100644
--- a/app/helpers/formatting_helper.rb
+++ b/app/helpers/formatting_helper.rb
@@ -23,19 +23,28 @@ module FormattingHelper
before_html = begin
if status.spoiler_text?
- "
#{I18n.t('rss.content_warning', locale: available_locale_or_nil(status.language) || I18n.default_locale)} #{h(status.spoiler_text)}
"
- else
- ''
+ tag.p do
+ tag.strong do
+ I18n.t('rss.content_warning', locale: available_locale_or_nil(status.language) || I18n.default_locale)
+ end
+
+ status.spoiler_text
+ end + tag.hr
end
- end.html_safe # rubocop:disable Rails/OutputSafety
+ end
after_html = begin
if status.preloadable_poll
- "#{status.preloadable_poll.options.map { |o| " #{h(o)}" }.join('
')}
"
- else
- ''
+ tag.p do
+ safe_join(
+ status.preloadable_poll.options.map do |o|
+ tag.send(status.preloadable_poll.multiple? ? 'checkbox' : 'radio', o, disabled: true)
+ end,
+ tag.br
+ )
+ end
end
- end.html_safe # rubocop:disable Rails/OutputSafety
+ end
prerender_custom_emojis(
safe_join([before_html, html, after_html]),
diff --git a/spec/helpers/formatting_helper_spec.rb b/spec/helpers/formatting_helper_spec.rb
new file mode 100644
index 000000000..af604a87b
--- /dev/null
+++ b/spec/helpers/formatting_helper_spec.rb
@@ -0,0 +1,24 @@
+# frozen_string_literal: true
+
+require 'rails_helper'
+
+describe FormattingHelper, type: :helper do
+ include Devise::Test::ControllerHelpers
+
+ describe '#rss_status_content_format' do
+ let(:status) { Fabricate(:status, text: 'Hello world<>', spoiler_text: 'This is a spoiler<>', poll: Fabricate(:poll, options: %w(Yes<> No))) }
+ let(:html) { helper.rss_status_content_format(status) }
+
+ it 'renders the spoiler text' do
+ expect(html).to include('This is a spoiler<>
')
+ end
+
+ it 'renders the status text' do
+ expect(html).to include('Hello world<>
')
+ end
+
+ it 'renders the poll' do
+ expect(html).to include('Yes<>
')
+ end
+ end
+end