test/microformats/parser_test.clj (view raw)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | (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 {}} "<div class=\"h-card\"><p class=\"p-name\">Example User</p></div>" {:items [{:properties {:nickname "exuser"}}] :rels {}} "<div class=\"h-card\"><p class=\"p-nickname\">exuser</p></div>")) (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 {}} "<div class=\"h-card\"><img class=\"p-name\" alt=\"Example User\"></div>" {:items [{:properties {:name "Example User"}}] :rels {}} "<div class=\"h-card h-person\"><abbr class=\"p-name\" title=\"Example User\">@example</abbr></div>" {:items [{:properties {:name "Example User"}}] :rels {}} "<div class=\"h-card\"><data class=\"p-name\" value=\"Example User\"></data></div>"))) (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 {}} "<div class=\"h-card\"><br class=\"p-name\"/></div>" {:items [{:properties {:name ""}}] :rels {}} "<div class=\"h-card\"><hr class=\"p-name\"/></div>"))) (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 {}} "<div class=\"h-card\"><a class=\"u-url\" href=\"http://example.com\">Awesome example website</a></div>" {:items [{:properties {:photo "http://example.com/someimage.png"}}] :rels {}} "<div class=\"h-card\"><img class=\"u-photo\" src=\"http://example.com/someimage.png\"></div>" {:items [{:properties {:photo "http://example.com/someimage.png"}}] :rels {}} "<map class=\"h-card\"><area class=\"u-photo\" href=\"http://example.com/someimage.png\"></area></map>" {:items [{:properties {:photo "http://example.com/someimage.png"}}] :rels {}} "<div class=\"h-card\"><object class=\"u-photo\" data=\"http://example.com/someimage.png\"></object></div>" {:items [{:properties {:photo "http://example.com/someimage.png"}}] :rels {}} "<div class=\"h-card\"><abbr class=\"u-photo\" title=\"http://example.com/someimage.png\"></abbr></div>" {:items [{:properties {:photo "http://example.com/someimage.png"}}] :rels {}} "<div class=\"h-card\"><data class=\"u-photo\" value=\"http://example.com/someimage.png\"></data></div>"))) |