Use MDEx streaming to render chat content
This commit is contained in:
@@ -5,6 +5,40 @@ defmodule MusicLibraryWeb.MarkdownTest do
|
||||
|
||||
doctest MusicLibraryWeb.Markdown
|
||||
|
||||
describe "streaming" do
|
||||
test "new document renders empty string" do
|
||||
doc = Markdown.new_streaming_doc()
|
||||
assert Markdown.streaming_to_html(doc) == ""
|
||||
end
|
||||
|
||||
test "incremental chunks produce valid HTML" do
|
||||
doc = Markdown.new_streaming_doc()
|
||||
doc = MDEx.Document.put_markdown(doc, "**bold")
|
||||
html = Markdown.streaming_to_html(doc)
|
||||
assert html =~ "<strong>bold</strong>"
|
||||
|
||||
doc = MDEx.Document.put_markdown(doc, " text**")
|
||||
html = Markdown.streaming_to_html(doc)
|
||||
assert html =~ "<strong>bold text</strong>"
|
||||
end
|
||||
|
||||
test "handles incomplete code fences" do
|
||||
doc = Markdown.new_streaming_doc()
|
||||
doc = MDEx.Document.put_markdown(doc, "```elixir\nIO.puts")
|
||||
html = Markdown.streaming_to_html(doc)
|
||||
assert html =~ "IO"
|
||||
assert html =~ "puts"
|
||||
assert html =~ "<code"
|
||||
end
|
||||
|
||||
test "sanitizes script tags" do
|
||||
doc = Markdown.new_streaming_doc()
|
||||
doc = MDEx.Document.put_markdown(doc, "<script>alert(1)</script>")
|
||||
html = Markdown.streaming_to_html(doc)
|
||||
refute html =~ "<script>"
|
||||
end
|
||||
end
|
||||
|
||||
describe "to_html/1" do
|
||||
test "strips script tags" do
|
||||
result = Markdown.to_html("<script>alert('xss')</script>")
|
||||
|
||||
Reference in New Issue
Block a user