# frozen_string_literal: true
require "spec_helper"
describe OtwSanitize::MediaSanitizer do
describe ".transformer" do
it "returns a callable object" do
transform = OtwSanitize::MediaSanitizer.transformer
expect(transform).to respond_to(:call)
end
context "when sanitizing" do
let(:config) do
Sanitize::Config.merge(
Sanitize::Config::BASIC,
transformers: [
OtwSanitize::MediaSanitizer.transformer
]
)
end
it "allows audio elements" do
html = ""
content = Sanitize.fragment(html, config)
expect(content).to match(/audio/)
end
it "allows video elements" do
html = ""
content = Sanitize.fragment(html, config)
expect(content).to match(/video/)
end
it "adds video defaults" do
html = ""
content = Sanitize.fragment(html, config)
expect(content).to match("controls=\"controls\"")
expect(content).to match("crossorigin=\"anonymous\"")
expect(content).to match("preload=\"metadata\"")
expect(content).to match("playsinline=\"playsinline\"")
end
it "adds audio defaults" do
html = ""
content = Sanitize.fragment(html, config)
expect(content).to match("controls=\"controls\"")
expect(content).to match("crossorigin=\"anonymous\"")
expect(content).to match("preload=\"metadata\"")
end
it "allows source elements" do
html = "
"
content = Sanitize.fragment(html, config)
expect(content).to match("flower.webm")
end
it "does not close source elements" do
html = "
"
content = Sanitize.fragment(html, config)
expect(content).to match("")
end
it "allows track elements" do
html = "
"
content = Sanitize.fragment(html, config)
expect(content).to match("japanese.vtt")
end
it "does not close track elements" do
html = "
"
content = Sanitize.fragment(html, config)
expect(content).to match("