diff --git a/test/microwaveprop/markdown_test.exs b/test/microwaveprop/markdown_test.exs new file mode 100644 index 00000000..d072a810 --- /dev/null +++ b/test/microwaveprop/markdown_test.exs @@ -0,0 +1,169 @@ +defmodule Microwaveprop.MarkdownTest do + use ExUnit.Case, async: true + + alias Microwaveprop.Markdown + + describe "headings" do + test "renders h1" do + assert Markdown.to_html!("# Hello") =~ "

Hello

" + end + + test "renders h2 through h6" do + for level <- 2..6 do + hashes = String.duplicate("#", level) + assert Markdown.to_html!("#{hashes} Title") =~ "Title" + end + end + + test "caps at h6 for excessive hashes" do + assert Markdown.to_html!("####### Too many") =~ "
" + end + end + + describe "paragraphs" do + test "renders simple paragraph" do + assert Markdown.to_html!("Hello world") =~ "

Hello world

" + end + + test "joins multi-line paragraphs" do + result = Markdown.to_html!("Line one\nLine two") + assert result =~ "

Line one Line two

" + end + + test "separates paragraphs by blank lines" do + result = Markdown.to_html!("Para one\n\nPara two") + assert result =~ "

Para one

" + assert result =~ "

Para two

" + end + end + + describe "fenced code blocks" do + test "renders code block" do + md = "```\nfoo\nbar\n```" + result = Markdown.to_html!(md) + assert result =~ "
foo\nbar
" + end + + test "renders code block with language" do + md = "```elixir\nIO.puts(\"hi\")\n```" + result = Markdown.to_html!(md) + assert result =~ ~s() + end + + test "escapes HTML in code blocks" do + md = "```\n\n```" + result = Markdown.to_html!(md) + assert result =~ "<script>" + refute result =~ "