(ns microformats.parser-expectations (:require [expectations :refer :all] [microformats.parser :refer :all] [net.cgrand.enlive-html :refer [html-snippet]])) (defn- snippet [html] (first (html-snippet html))) (expect [:location] (into [] ((classes-to-props "p-") ["someclass" "p-location" "someotherclass"]))) (expect [:location :name] (into [] ((classes-to-props "p-") ["someclass" "p-location" "someotherclass" "p-name"]))) (expect "Foo bar" (apply str (#'microformats.parser/node-to-html '("Foo " {:tag :strong, :attrs nil, :content ("bar")})))) (expect {:name "Name"} (parse-p (snippet "

Name

"))) (expect {:name "Name Endname"} (parse-p (snippet "

Name (this should not be included) Endname

"))) (expect {:name "Example User"} (parse-p (snippet "

Example User

"))) (expect {:nickname "exuser"} (parse-p (snippet "

exuser

"))) (expect {:name "Example User"} (parse-p (snippet "\"Example"))) (expect {:name "Example User"} (parse-p (snippet "@example"))) (expect {:name "@example"} (parse-p (snippet "@example"))) (expect {:name "Example User"} (parse-p (snippet ""))) (expect {:name "Example User"} (parse-p (snippet "Example User"))) (expect {:name ""} (parse-p (snippet "
"))) (expect {:name ""} (parse-p (snippet "
"))) (expect {:url "http://example.com"} (parse-u (snippet "Awesome example website"))) (expect {:photo "http://example.com/someimage.png"} (parse-u (snippet ""))) (expect {:photo "http://example.com/someimage.png"} (parse-u (snippet ""))) (expect {:photo "http://example.com/someimage.png"} (parse-u (snippet ""))) (expect {:photo "http://example.com/someimage.png"} (parse-u (snippet ""))) (expect {:photo "http://example.com/someimage.png"} (parse-u (snippet "http://example.com/someimage.png"))) (expect {:photo "http://example.com/someimage.png"} (parse-u (snippet ""))) (expect {:photo "http://example.com/someimage.png"} (parse-u (snippet "http://example.com/someimage.png"))) (expect {:start "2012-08-05T14:50"} (parse-dt (snippet ""))) (expect {:start "2012-08-05T14:50"} (parse-dt (snippet ""))) (expect {:start "2012-08-05T14:50"} (parse-dt (snippet ""))) (expect {:end "2012-08-05T18:00"} (parse-dt (snippet ""))) (expect {:start "2012-08-05T14:50"} (parse-dt (snippet ""))) (expect {:start "2012-08-05T14:50"} (parse-dt (snippet "2012-08-05T14:50"))) (expect {:start "2012-08-05T14:50"} (parse-dt (snippet ""))) (expect {:start "2012-08-05T14:50"} (parse-dt (snippet "2012-08-05T14:50"))) (expect {:start "2012-08-05T14:50"} (parse-dt (snippet ""))) (expect {:content {:html "Here is a load of embedded markup" :value "Here is a load of embedded markup"}} (parse-e (snippet "
Here is a load of embedded markup
"))) (expect {:author ["http://example.com/a"]} (parse-rels (html-snippet "author a"))) (expect {:author ["http://example.com/a" "http://example.com/b"]} (parse-rels (html-snippet "author a author b"))) (expect {:items [] :rels {}} (parse "")) (expect {:items [{:properties {:name "Example User"}}] :rels {}} (parse "

Example User"))