Fri, 16 Jan 2015 18:13:44 +0100
Integrate suggestion from review to improve consistency with existing code.
1 <html>
2 <head>
3 <title>Testing Microformats.js</title>
4 <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
5 <script type="text/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
6 <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"></link>
7 <style type="text/css">
8 /*vcards weee! */
9 .floated div {
10 float:left;
11 }
12 </style>
14 </head>
15 <body>
16 <div id="content" style="display: none">
17 <div id="test_1">
18 <div class="vcard" id="vcard1_node">
19 <a class="url fn" href="http://tantek.com/">Tantek Çelik</a>
20 <div id="vcard1_org" class="org">Technorati</div>
21 </div>
22 <div class="vcard" id="vcard2_node">
23 <a class="url" href="http://tantek.com/">Tantek Çelik</a>
24 <div id="vcard2_org" class="org">Technorati</div>
25 </div>
26 </div>
27 <div class="vcard" id="outer_vcard">
28 <div class="vcard" id="middle_vcard">
29 <div class="vcard" id="inner_vcard">
30 <span class="fn">Inner User</span>
31 </div>
32 <span class="fn">Middle User</span>
33 </div>
34 <span class="fn">Outer User</span>
35 </div>
36 <div class="vcard" id="outer_vcard2">
37 <div class="vevent" id="middle_vevent2">
38 <div class="vcard" id="inner_vcard2">
39 <span class="fn">Inner User</span>
40 </div>
41 <span class="summary">Middle Event</span>
42 </div>
43 <span class="fn">Outer User</span>
44 </div>
45 <div class="vevent" id="outer_vevent3">
46 <div class="vcard" id="middle_vcard3">
47 <div class="vevent" id="inner_vevent3">
48 <span class="summary">Inner Event</span>
49 </div>
50 <span class="fn">Middle User</span>
51 </div>
52 <span class="summary">Outer Event</span>
53 </div>
55 <div class="vevent" id="outer_vevent4">
56 <a rel="tag" id="inner_tag4" href="http://www.example.com/inner_tag">
57 Inner tag
58 </a>
59 <span class="summary">Outer Event</span>
60 </div>
62 <a rel="tag" id="outer_tag5" href="http://www.example.com/outer_tag">
63 <div class="vevent" id="inner_vevent5">
64 <span class="summary">Inner Event</span>
65 </div>
66 </a>
68 <div class="vcard" id="value_test">
69 <span class="fn">
70 <span class="value">John</span>
71 <span><span class="value">Middle</span></span>
72 <span class="value">Doe</span>
73 </span>
74 </div>
76 <div class="vcard" id="nested_vcard1">
77 <div class="agent vcard" id="nested_vcard2">
78 <div class="agent vcard" id="nested_vcard3">
79 <span class="fn">Bob Smith</span>
80 <span class="title">Office Assistant</span>
81 </div>
82 <span class="fn">Jack Jones</span>
83 <span class="title">Executive Assistant</span>
84 </div>
85 <span class="fn">John Doe</span>
86 <span class="title">CEO</span>
87 </div>
89 <div class="vevent" id="date_vcal">
90 <span class="description">Mozilla's Birthday</span>
91 <span class="dtstart">1998-01-22</span>
92 </div>
94 <div class="vevent" id="vcal_vcard">
95 <div class="vcard">
96 <span class="description">
97 <span class="fn org">Mozilla</span>'s Birthday
98 </span>
99 </div>
100 <span class="dtstart">1998-01-22</span>
101 </div>
103 <div id="geo_vcard" class="vcard">
104 <span class="fn">John Doe</span>
105 <span class="geo" id="ill_geo5">abc;def</span>
106 </div>
107 <div id="loc_vevent" class="vevent">
108 <span class="summary">Party</span>
109 <span class="location">The White House</span>
110 </div>
111 <div id="loc_vcard_vevent" class="vevent">
112 <span class="summary">Party</span>
113 <span class="location vcard"><span class="fn">The White House</span></span>
114 </div>
116 <div class="vcard" id="valuespace_1">
117 <span class="fn">
118 <span class="value">John</span>
119 <span class="value"> </span>
120 <span class="value">Doe</span>
121 </span>
122 </div>
123 <div class="vcard" id="valuespace_2">
124 <span class="fn">
125 <span class="value">John</span>
126 <span class="value"> </span>
127 <span class="value">Doe</span>
128 </span>
129 </div>
130 <div class="vcard" id="valuespace_3">
131 <span class="fn">
132 <span class="value"> John</span>
133 <span class="value"> </span>
134 <span class="value">Doe </span>
135 </span>
136 </div>
137 <div class="vcard" id="valuespace_4">
138 <span class="fn">
139 <span class="value">John </span>
140 <span class="value"> Doe</span>
141 </span>
142 </div>
143 <div class="vcard" id="valuespace_5">
144 <span class="fn">
145 <span class="value"> John</span>
146 <span class="value"> Doe </span>
147 </span>
148 </div>
149 <div class="vcard" id="valuespace_6">
150 <span class="fn">
151 <span class="value">John
152 </span>
153 <span class="value">
154 Doe</span>
155 </span>
156 </div>
157 <div class="vcard" id="valuespace_7">
158 <span class="fn">
159 <span class="value">John</span>
160 <span class="value">Doe</span>
161 </span>
162 </div>
164 <span id="austin" class="location">Austin - Sixth Street</span>
165 <table summary="Timetable">
166 <thead>
167 <tr>
168 <th id="location-1"><a href="#austin" class="include"></a>New York</th>
169 </tr>
170 </thead>
171 <tbody>
172 <tr>
173 <th id="time-1"><abbr title="2008-01-01" class="dtstart">Jan 1, 2008</abbr></th>
174 <td id="nested_header_include" class="vevent" headers="time-1 location-1"><div class="summary">New Years Party</div></td>
175 </tr>
176 </tbody>
177 </table>
179 </div>
181 <div id="float_test">
182 <div class="vcard floated" id="one">
183 <div class="fn">John Doe</div>
184 </div>
185 <div class="vcard" id="two">
186 <div class="fn">John Smith</div>
187 </div>
188 </div>
190 <pre id="test">
191 <script class="testbody" type="application/javascript;version=1.8">
193 test_Microformats();
194 test_hCard();
196 function test_Microformats() {
197 let { Microformats, hCard, hCalendar } = SpecialPowers.Cu.import("resource://gre/modules/Microformats.js");
199 ok(Microformats, "Check global access to Microformats");
200 var hCards = Microformats.get("hCard", document.getElementById("test_1"), {showHidden: true});
201 is(hCards.length, 1, "Check Microformats.get");
202 is(Microformats.count("hCard", document.getElementById("test_1"), {showHidden: true}), 1, "Check Microformats.count");
203 is(Microformats.count("hCard", document.getElementById("test_1"), {showHidden: true, debug: true}), 2, "Check Microformats.count (debug)");
204 ok(Microformats.isMicroformat(document.getElementById("vcard1_node")), "Check isMicroformat");
205 is(SpecialPowers.unwrap(Microformats.getParent(document.getElementById("vcard1_org"))), document.getElementById("vcard1_node"), "Check getParent");
206 is(Microformats.getNamesFromNode(document.getElementById("vcard1_node")), "hCard", "Check getNamesFromNode");
208 var hCardArray1 = Microformats.get("hCard", document.getElementById("test_1"), {showHidden: true});
209 is(hCardArray1.length, 1, "Check showHidden=true");
210 var hCardArray2 = Microformats.get("hCard", document.getElementById("test_1"), {showHidden: false});
211 is(hCardArray2.length, 0, "Check showHidden=false");
213 var inner_parent = Microformats.getParent(document.getElementById("inner_vcard"));
214 is(inner_parent.id, "middle_vcard", "GetParent gets correct ancestor 1");
216 var inner_parent = Microformats.getParent(document.getElementById("inner_vcard2"));
217 is(inner_parent.id, "middle_vevent2", "GetParent gets correct ancestor 2");
219 var inner_parent = Microformats.getParent(document.getElementById("middle_vevent2"));
220 is(inner_parent.id, "outer_vcard2", "GetParent gets correct ancestor 2a");
222 var inner_parent = Microformats.getParent(document.getElementById("inner_vevent3"));
223 is(inner_parent.id, "middle_vcard3", "GetParent gets correct ancestor 3");
225 var inner_parent = Microformats.getParent(document.getElementById("middle_vcard3"));
226 is(inner_parent.id, "outer_vevent3", "GetParent gets correct ancestor 3a");
228 var inner_parent = Microformats.getParent(document.getElementById("inner_tag4"));
229 is(inner_parent.id, "outer_vevent4", "GetParent gets correct ancestor 4");
231 var inner_parent = Microformats.getParent(document.getElementById("inner_vevent5"));
232 is(inner_parent.id, "outer_tag5", "GetParent gets correct ancestor 5");
234 var valueCard = new hCard(document.getElementById("value_test"));
236 is(valueCard.fn, "JohnDoe", "value_test");
238 var nestCard1 = new hCard(document.getElementById("nested_vcard1"));
239 var nestCard2 = new hCard(document.getElementById("nested_vcard2"));
240 var nestCard3 = new hCard(document.getElementById("nested_vcard3"));
242 is(nestCard1.fn, "John Doe", "nesting (fn) 1");
243 is(nestCard1.title, "CEO", "nesting (title) 1");
244 is(nestCard2.fn, "Jack Jones", "nesting (fn) 2");
245 is(nestCard2.title, "Executive Assistant", "nesting (title) 2");
246 is(nestCard3.fn, "Bob Smith", "nesting (fn) 3");
247 is(nestCard3.title, "Office Assistant", "nesting (title) 3");
248 is(nestCard1.agent[0].agent[0].fn, "Bob Smith", "nesting all");
250 var dateCal = new hCalendar(document.getElementById("date_vcal"));
251 jsdate = Microformats.dateFromISO8601(dateCal.dtstart);
252 origdate = Microformats.iso8601FromDate(jsdate, true);
253 is(dateCal.dtstart, origdate, "date round trip");
255 var dateCal = new hCalendar(document.getElementById("vcal_vcard"));
256 is(dateCal.description, "Mozilla's Birthday", "vcard in vcal");
258 is(Microformats.count("hCard", document.getElementById("float_test")), 2, "Check Microformats.count for floated div");
260 var hcard = new hCard(document.getElementById("geo_vcard"));
261 ok(!hcard.geo, "Check if invalid geo does not exist");
262 var hcal = new hCalendar(document.getElementById("loc_vevent"));
263 is(hcal.location, "The White House", "Check if non vcard location works");
264 var hcal = new hCalendar(document.getElementById("loc_vcard_vevent"));
265 is(hcal.location.fn, "The White House", "Check if vcard location works");
267 var nestedCal = new hCalendar(document.getElementById("nested_header_include"));
268 is(nestedCal.dtstart, "2008-01-01", "nested_header_include - dtstart");
269 is(nestedCal.location, "Austin - Sixth Street", "nested_header_include - location");
270 is(nestedCal.summary, "New Years Party", "nested_header_include - summary");
272 var valueCard = new hCard(document.getElementById("valuespace_1"));
273 is(valueCard.fn, "John Doe", "valuespace_1");
274 var valueCard = new hCard(document.getElementById("valuespace_2"));
275 is(valueCard.fn, "John Doe", "valuespace_2");
276 var valueCard = new hCard(document.getElementById("valuespace_3"));
277 is(valueCard.fn, "John Doe", "valuespace_3");
278 var valueCard = new hCard(document.getElementById("valuespace_4"));
279 is(valueCard.fn, "John Doe", "valuespace_4");
280 var valueCard = new hCard(document.getElementById("valuespace_5"));
281 is(valueCard.fn, "John Doe", "valuespace_5");
282 var valueCard = new hCard(document.getElementById("valuespace_6"));
283 is(valueCard.fn, "John Doe", "valuespace_6");
284 var valueCard = new hCard(document.getElementById("valuespace_7"));
285 is(valueCard.fn, "JohnDoe", "valuespace_7");
287 }
289 function test_hCard() {
290 var Microformats = SpecialPowers.Cu.import("resource://gre/modules/Microformats.js").Microformats;
292 var hCards = Microformats.get("hCard", document.getElementById("test_1"), {showHidden: true});
294 is(hCards[0].fn, "Tantek Çelik", "Check for fn on test vcard");
295 is(hCards[0].url, "http://tantek.com/", "Check for url on test vcard");
296 }
298 </script>
299 </pre>
300 </body>
301 </html>