(ns microformats.parser-test
(:require [clojure.test :refer :all]
[microformats.parser :refer :all]))
(deftest empty-document
(testing "Empty HTML document should return an empty 'items' array and 'rels' hash."
(is (= {:items [] :rels {}}
(parse "")))))
(deftest parse-p-inner-text
(testing "Inner text of a p- property should be parsed")
(are [ex in] (= ex (parse in))
{:items [{:properties {:name "Example User"}}] :rels {}}
"
"
{:items [{:properties {:nickname "exuser"}}] :rels {}}
""))
(deftest parse-p-special-elements
(testing "img, abbr and data elements should be parsed differently"
(are [ex in] (= ex (parse in))
{:items [{:properties {:name "Example User"}}] :rels {}}
""
{:items [{:properties {:name "Example User"}}] :rels {}}
""
{:items [{:properties {:name "Example User"}}] :rels {}}
"
")))
(deftest parse-p-empty-br-hr
(testing "br and hr tags should return empty strings"
(are [ex in] (= ex (parse in))
{:items [{:properties {:name ""}}] :rels {}}
"
"
{:items [{:properties {:name ""}}] :rels {}}
"
")))
(deftest parse-u-elements
(testing "Tags should have their values parsed as a u-* value"
(are [ex in] (= ex (parse in))
{:items [{:properties {:url "http://example.com"}}] :rels {}}
""
{:items [{:properties {:photo "http://example.com/someimage.png"}}] :rels {}}
""
{:items [{:properties {:photo "http://example.com/someimage.png"}}] :rels {}}
" "
{:items [{:properties {:photo "http://example.com/someimage.png"}}] :rels {}}
"
"
{:items [{:properties {:photo "http://example.com/someimage.png"}}] :rels {}}
""
{:items [{:properties {:photo "http://example.com/someimage.png"}}] :rels {}}
"
")))