add Recovery.Entities module
This commit is contained in:
1 parent
acc78f419a
commit
ca35ee7d5f
2 files changed
+171
No files matched your search
@@ -0,0 +1,40 @@
|
||||
defmodule FeedReader.Recovery.EntitiesTest do
|
||||
use ExUnit.Case, async: true
|
||||
|
||||
alias FeedReader.Recovery.Entities
|
||||
|
||||
test "preserves valid named and numeric entities" do
|
||||
xml = "& < > " ' © 😀"
|
||||
|
||||
assert normalize([xml]) == xml
|
||||
end
|
||||
|
||||
test "escapes raw and invalid entity references" do
|
||||
assert normalize(["A & B &unknown; C ¬-an-entity D"]) ==
|
||||
"A & B &unknown; C &not-an-entity D"
|
||||
end
|
||||
|
||||
test "preserves ampersands inside CDATA" do
|
||||
chunks = ["<![C", "DATA[<p>A & B</p>]]>"]
|
||||
|
||||
assert normalize(chunks) == "<![CDATA[<p>A & B</p>]]>"
|
||||
end
|
||||
|
||||
test "preserves ampersands inside comments" do
|
||||
chunks = ["<!-- source: A &", " B -->"]
|
||||
|
||||
assert normalize(chunks) == "<!-- source: A & B -->"
|
||||
end
|
||||
|
||||
test "handles an entity split across chunks" do
|
||||
assert normalize(["A &am", "p; B &#", "169; C"]) == "A & B © C"
|
||||
end
|
||||
|
||||
test "handles CDATA and comment terminators split across chunks" do
|
||||
chunks = ["<![CDATA[A & B]", "]><!-- C & D -", "->E & F"]
|
||||
|
||||
assert normalize(chunks) == "<![CDATA[A & B]]><!-- C & D -->E & F"
|
||||
end
|
||||
|
||||
defp normalize(chunks), do: chunks |> Entities.normalize() |> Enum.join()
|
||||
end
|
||||
Reference in new issue
Block a user