all repos — archive/microformats @ 08f9c2b929f1a19e39a1cda2743da3837f3cc132

Incomplete Clojure microformats library

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>")))