# frozen_string_literal: true require 'rails_helper' RSpec.describe Sanitize::Config do describe '::MASTODON_STRICT' do subject { described_class::MASTODON_STRICT } it 'converts h1 to p strong' do expect(Sanitize.fragment('

Foo

', subject)).to eq '

Foo

' end it 'keeps ul' do expect(Sanitize.fragment('

Check out:

', subject)).to eq '

Check out:

' end it 'keeps start and reversed attributes of ol' do expect(Sanitize.fragment('

Check out:

  1. Foo
  2. Bar
', subject)).to eq '

Check out:

  1. Foo
  2. Bar
' end it 'keeps ruby tags' do expect(Sanitize.fragment('

明日 (Ashita)

', subject)).to eq '

明日 (Ashita)

' end it 'removes a without href' do expect(Sanitize.fragment('Test', subject)).to eq 'Test' end it 'removes a without href and only keeps text content' do expect(Sanitize.fragment('Test', subject)).to eq 'foo&Test' end it 'removes a with unsupported scheme in href' do expect(Sanitize.fragment('Test', subject)).to eq 'Test' end it 'does not re-interpret HTML when removing unsupported links' do expect(Sanitize.fragment('Test<a href="https://example.com">test</a>', subject)).to eq 'Test<a href="https://example.com">test</a>' end it 'removes math when unparsable due to missing attributes' do expect(Sanitize.fragment('x', subject)).to eq '' end it 'removes math when unparsable due to missing encoding attribute' do expect(Sanitize.fragment('x', subject)).to eq '' end it 'keeps a with href' do expect(Sanitize.fragment('Test', subject)).to eq 'Test' end it 'keeps a with translate="no"' do expect(Sanitize.fragment('Test', subject)).to eq 'Test' end it 'removes "translate" attribute with invalid value' do expect(Sanitize.fragment('Test', subject)).to eq 'Test' end it 'removes a with unparsable href' do expect(Sanitize.fragment('Test', subject)).to eq 'Test' end it 'keeps a with supported scheme and no host' do expect(Sanitize.fragment('Test', subject)).to eq 'Test' end it 'sanitizes math to LaTeX' do mathml = 'xn+yx^n+y' expect(Sanitize.fragment(mathml, subject)).to eq '$x^n+y$' end it 'sanitizes math blocks to LaTeX' do mathml = 'xn+yx^n+y' expect(Sanitize.fragment(mathml, subject)).to eq '$$x^n+y$$' end it 'math sanitizer falls back to plaintext' do mathml = 'xsqrt(x)' expect(Sanitize.fragment(mathml, subject)).to eq 'sqrt(x)' end it 'prefers latex' do mathml = 'xsqrt(x)\\sqrt x' expect(Sanitize.fragment(mathml, subject)).to eq '$\sqrt x$' end end end