(ns clarktown.renderers.heading-block-test
(:require
[clojure.test :refer [deftest testing is]]
[clarktown.renderers.heading-block :as heading-block]))
(deftest atx-heading-renderer-test
(testing "ATX heading block that's a H1"
(is (= "
This is a heading block.
"
(heading-block/render "# This is a heading block." nil nil))))
(testing "ATX heading block that's a H2"
(is (= "This is a heading block.
"
(heading-block/render "## This is a heading block." nil nil))))
(testing "ATX heading block that's a H3"
(is (= "This is a heading block.
"
(heading-block/render "### This is a heading block." nil nil))))
(testing "ATX heading block that's a H4"
(is (= "This is a heading block.
"
(heading-block/render "#### This is a heading block." nil nil))))
(testing "ATX heading block that's a H5"
(is (= "This is a heading block.
"
(heading-block/render "##### This is a heading block." nil nil))))
(testing "ATX heading block that's a H6"
(is (= "This is a heading block.
"
(heading-block/render "###### This is a heading block." nil nil))))
(testing "No H tag when 7 or more # characters"
(is (= "####### This is not a heading block."
(heading-block/render "####### This is not a heading block." nil nil))))
(testing "No H tag when there is no space between # characters and value"
(is (= "#This is not a heading block."
(heading-block/render "#This is not a heading block." nil nil)))))
(deftest settext-heading-renderer-text
(testing "Settext heading block that's a H1"
(is (= "This is a heading block.
"
(heading-block/render "This is a heading block.\n=========" nil nil))))
(testing "Settext heading block that's a H1 spanning multiple lines"
(is (= "This is a \nheading block spanning multiple lines.
"
(heading-block/render "This is a \nheading block spanning multiple lines.\n========" nil nil))))
(testing "Settext heading block that's a H2"
(is (= "This is a heading block.
"
(heading-block/render "This is a heading block.\n---------" nil nil))))
(testing "Settext heading block that's a H2 spanning multiple lines"
(is (= "This is a \nheading block spanning multiple lines.
"
(heading-block/render "This is a \nheading block spanning multiple lines.\n--------" nil nil)))))