Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(8)

Side by Side Diff: javatests/org/chromium/distiller/SchemaOrgParserAccessorTest.java

Issue 1705123002: Add support for Schema.org/Recipe Base URL: https://github.com/chromium/dom-distiller.git@master
Patch Set: wychen's comments addressed Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 package org.chromium.distiller; 5 package org.chromium.distiller;
6 6
7 import com.google.gwt.dom.client.AnchorElement; 7 import com.google.gwt.dom.client.AnchorElement;
8 import com.google.gwt.dom.client.Element; 8 import com.google.gwt.dom.client.Element;
9 9
10 public class SchemaOrgParserAccessorTest extends DomDistillerJsTestCase { 10 public class SchemaOrgParserAccessorTest extends DomDistillerJsTestCase {
11 11
12 private static final String ITEM_TYPE = "itemscope itemtype=\"" +
13 "http://schema.org/";
14 private static final String ITEM_TYPE_ARTICLE = ITEM_TYPE +
15 "Article\"";
16 private static final String ITEM_TYPE_PERSON = ITEM_TYPE +
17 "Person\"";
18 private static final String ITEM_TYPE_RECIPE = ITEM_TYPE +
19 "Recipe\"";
20 private static final String ITEM_TYPE_MOVIE = ITEM_TYPE +
21 "Movie\"";
22 private static final String ITEM_TYPE_IMAGE_OBJECT = ITEM_TYPE +
23 "ImageObject\"";
24 private static final String ITEM_TYPE_ORGANIZATION = ITEM_TYPE +
25 "Organization\"";
26 private static final String ITEM_TYPE_AGGREGATE_RATING =
27 ITEM_TYPE + "AggregateRating\"";
28 private static final String RECIPE_DESCRIPTION =
29 "Testing RECIPE with required recipe schema.org attributes";
30 private static final String RECIPE_URL =
31 "http://dummy/test_article_with_embedded_items.html";
32 private static final String RECIPE_IMAGE_URL =
33 "http://dummy/test_article_with_embedded_items.jpeg";
34
12 public void testImageWithEmbeddedPublisher() { 35 public void testImageWithEmbeddedPublisher() {
13 String expectedUrl = "http://dummy/test_image_with_embedded_item.html"; 36 String expectedUrl = "http://dummy/test_image_with_embedded_item.html";
14 String expectedFormat = "jpeg"; 37 String expectedFormat = "jpeg";
15 String expectedCaption = "A test for IMAGE with embedded publisher"; 38 String expectedCaption = "A test for IMAGE with embedded publisher";
16 String htmlStr = 39 String htmlStr =
17 "<div id=\"1\" itemscope itemtype=\"http://schema.org/ImageObject\"> " + 40 "<div id=\"1\" " + ITEM_TYPE_IMAGE_OBJECT + ">" +
18 "<h1 itemprop=\"headline\">Testcase for IMAGE" + 41 "<h1 itemprop=\"headline\">Testcase for IMAGE" +
19 "</h1>" + 42 "</h1>" +
20 "<h2 itemprop=\"description\">Testing IMAGE with embedded publis her" + 43 "<h2 itemprop=\"description\">Testing IMAGE with embedded publis her" +
21 "</h2>" + 44 "</h2>" +
22 "<a itemprop=\"contentUrl\" href=\"" + expectedUrl + "\">test re sults" + 45 "<a itemprop=\"contentUrl\" href=\"" + expectedUrl + "\">test re sults" +
23 "</a>" + 46 "</a>" +
24 "<div id=\"2\" itemscope itemtype=\"http://schema.org/Organizati on\"" + 47 "<div id=\"2\"" + ITEM_TYPE_ORGANIZATION + "" +
25 " itemprop=\"publisher\">Publisher: " + 48 " itemprop=\"publisher\">Publisher: " +
26 "<span itemprop=\"name\">Whatever Image Incorporated" + 49 "<span itemprop=\"name\">Whatever Image Incorporated" +
27 "</span>" + 50 "</span>" +
28 "</div>" + 51 "</div>" +
29 "<div id=\"3\">" + 52 "<div id=\"3\">" +
30 "<span itemprop=\"copyrightYear\">1999-2022" + 53 "<span itemprop=\"copyrightYear\">1999-2022" +
31 "</span>" + 54 "</span>" +
32 "<span itemprop=\"copyrightHolder\">Whoever Image Copyrighte d" + 55 "<span itemprop=\"copyrightHolder\">Whoever Image Copyrighte d" +
33 "</span>" + 56 "</span>" +
34 "</div>" + 57 "</div>" +
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
67 90
68 public void test2Images() { 91 public void test2Images() {
69 String expectedUrl1 = "http://dummy/test_1st image.html"; 92 String expectedUrl1 = "http://dummy/test_1st image.html";
70 String expectedPublisher1 = "Whatever 1st Image Incorporated"; 93 String expectedPublisher1 = "Whatever 1st Image Incorporated";
71 String expectedFormat1 = "jpeg"; 94 String expectedFormat1 = "jpeg";
72 String expectedCaption1 = "A test for 1st IMAGE"; 95 String expectedCaption1 = "A test for 1st IMAGE";
73 String expectedUrl2 = "http://dummy/test_2nd image.html"; 96 String expectedUrl2 = "http://dummy/test_2nd image.html";
74 String expectedFormat2 = "gif"; 97 String expectedFormat2 = "gif";
75 String expectedCaption2 = "A test for 2nd IMAGE"; 98 String expectedCaption2 = "A test for 2nd IMAGE";
76 String htmlStr = 99 String htmlStr =
77 "<div id=\"1\" itemscope itemtype=\"http://schema.org/ImageObject\"> " + 100 "<div id=\"1\" " + ITEM_TYPE_IMAGE_OBJECT + ">" +
78 "<h1 itemprop=\"headline\">Testcase for 1st IMAGE" + 101 "<h1 itemprop=\"headline\">Testcase for 1st IMAGE" +
79 "</h1>" + 102 "</h1>" +
80 "<h2 itemprop=\"description\">Testing 1st IMAGE" + 103 "<h2 itemprop=\"description\">Testing 1st IMAGE" +
81 "</h2>" + 104 "</h2>" +
82 "<a itemprop=\"contentUrl\" href=\"" + expectedUrl1 + "\">1st te st results" + 105 "<a itemprop=\"contentUrl\" href=\"" + expectedUrl1 + "\">1st te st results" +
83 "</a>" + 106 "</a>" +
84 "<div id=\"2\" itemprop=\"publisher\">" + expectedPublisher1 + 107 "<div id=\"2\" itemprop=\"publisher\">" + expectedPublisher1 +
85 "</div>" + 108 "</div>" +
86 "<div id=\"3\">" + 109 "<div id=\"3\">" +
87 "<span itemprop=\"copyrightYear\">1000-1999" + 110 "<span itemprop=\"copyrightYear\">1000-1999" +
88 "</span>" + 111 "</span>" +
89 "<span itemprop=\"copyrightHolder\">Whoever 1st Image Copyri ghted" + 112 "<span itemprop=\"copyrightHolder\">Whoever 1st Image Copyri ghted" +
90 "</span>" + 113 "</span>" +
91 "</div>" + 114 "</div>" +
92 "<span itemprop=\"encodingFormat\">" + expectedFormat1 + 115 "<span itemprop=\"encodingFormat\">" + expectedFormat1 +
93 "</span>" + 116 "</span>" +
94 "<span itemprop=\"caption\">" + expectedCaption1 + 117 "<span itemprop=\"caption\">" + expectedCaption1 +
95 "</span>" + 118 "</span>" +
96 "<meta itemprop=\"representativeOfPage\" content=\"false\">" + 119 "<meta itemprop=\"representativeOfPage\" content=\"false\">" +
97 "<meta itemprop=\"width\" content=\"400\">" + 120 "<meta itemprop=\"width\" content=\"400\">" +
98 "<meta itemprop=\"height\" content=\"300\">" + 121 "<meta itemprop=\"height\" content=\"300\">" +
99 "</div>" + 122 "</div>" +
100 "<div id=\"4\" itemscope itemtype=\"http://schema.org/ImageObject\"> " + 123 "<div id=\"4\" " + ITEM_TYPE_IMAGE_OBJECT + ">" +
101 "<h3 itemprop=\"headline\">Testcase for 2nd IMAGE" + 124 "<h3 itemprop=\"headline\">Testcase for 2nd IMAGE" +
102 "</h3>" + 125 "</h3>" +
103 "<h4 itemprop=\"description\">Testing 2nd IMAGE" + 126 "<h4 itemprop=\"description\">Testing 2nd IMAGE" +
104 "</h4>" + 127 "</h4>" +
105 "<a itemprop=\"contentUrl\" href=\"" + expectedUrl2 + "\">2nd te st results" + 128 "<a itemprop=\"contentUrl\" href=\"" + expectedUrl2 + "\">2nd te st results" +
106 "</a>" + 129 "</a>" +
107 "<div id=\"5\" itemprop=\"publisher\">Whatever 2nd Image Incorpo rated" + 130 "<div id=\"5\" itemprop=\"publisher\">Whatever 2nd Image Incorpo rated" +
108 "</div>" + 131 "</div>" +
109 "<div id=\"6\">" + 132 "<div id=\"6\">" +
110 "<span itemprop=\"copyrightYear\">2000-2999" + 133 "<span itemprop=\"copyrightYear\">2000-2999" +
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
153 assertEquals("", image.secureUrl); 176 assertEquals("", image.secureUrl);
154 assertEquals(expectedFormat1, image.type); 177 assertEquals(expectedFormat1, image.type);
155 assertEquals(expectedCaption1, image.caption); 178 assertEquals(expectedCaption1, image.caption);
156 assertEquals(400, image.width); 179 assertEquals(400, image.width);
157 assertEquals(300, image.height); 180 assertEquals(300, image.height);
158 } 181 }
159 182
160 public void testArticleWithEmbeddedAuthorAndPublisher() { 183 public void testArticleWithEmbeddedAuthorAndPublisher() {
161 String expectedTitle = "Testcase for ARTICLE"; 184 String expectedTitle = "Testcase for ARTICLE";
162 String expectedDescription = "Testing ARTICLE with embedded author and p ublisher"; 185 String expectedDescription = "Testing ARTICLE with embedded author and p ublisher";
163 String expectedUrl = "http://dummy/test_article_with_embedded_items.html ";
164 String expectedImage = "http://dummy/test_article_with_embedded_items.jp eg";
165 String expectedAuthor = "Whoever authored"; 186 String expectedAuthor = "Whoever authored";
166 String expectedPublisher = "Whatever Article Incorporated"; 187 String expectedPublisher = "Whatever Article Incorporated";
167 String expectedDatePublished = "April 15, 2014"; 188 String expectedDatePublished = "April 15, 2014";
168 String expectedTimeModified = "2014-04-16T23:59"; 189 String expectedTimeModified = "2014-04-16T23:59";
169 String expectedCopyrightYear = "2000-2014"; 190 String expectedCopyrightYear = "2000-2014";
170 String expectedCopyrightHolder = "Whoever Article Copyrighted"; 191 String expectedCopyrightHolder = "Whoever Article Copyrighted";
171 String expectedSection = "Romance thriller"; 192 String expectedSection = "Romance thriller";
172 String htmlStr = 193 String htmlStr =
173 "<div id=\"1\" itemscope itemtype=\"http://schema.org/Article\">" + 194 "<div id=\"1\" " + ITEM_TYPE_ARTICLE + ">" +
174 "<h1 itemprop=\"headline\">" + expectedTitle + 195 "<h1 itemprop=\"headline\">" + expectedTitle +
175 "</h1>" + 196 "</h1>" +
176 "<h2 itemprop=\"description\">" + expectedDescription + 197 "<h2 itemprop=\"description\">" + expectedDescription +
177 "</h2>" + 198 "</h2>" +
178 "<a itemprop=\"url\" href=\"" + expectedUrl + "\">test results" + 199 "<a itemprop=\"url\" href=\"" + RECIPE_URL + "\">test results" +
179 "</a>" + 200 "</a>" +
180 "<img itemprop=\"image\" src=\"" + expectedImage + "\">" + 201 "<img itemprop=\"image\" src=\"" + RECIPE_IMAGE_URL + "\">" +
181 "<div id=\"2\" itemscope itemtype=\"http://schema.org/Person\"" + 202 "<div id=\"2\" " + ITEM_TYPE_PERSON +
182 " itemprop=\"author\">Author: " + 203 " itemprop=\"author\">Author: " +
183 "<span itemprop=\"name\">" + expectedAuthor + 204 "<span itemprop=\"name\">" + expectedAuthor +
184 "</span>" + 205 "</span>" +
185 "</div>" + 206 "</div>" +
186 "<div id=\"3\" itemscope itemtype=\"http://schema.org/Organizati on\"" + 207 "<div id=\"3\"" + ITEM_TYPE_ORGANIZATION + "" +
187 " itemprop=\"publisher\">Publisher: " + 208 " itemprop=\"publisher\">Publisher: " +
188 "<span itemprop=\"name\">" + expectedPublisher + 209 "<span itemprop=\"name\">" + expectedPublisher +
189 "</span>" + 210 "</span>" +
190 "</div>" + 211 "</div>" +
191 "<span itemprop=\"datePublished\">" + expectedDatePublished + 212 "<span itemprop=\"datePublished\">" + expectedDatePublished +
192 "</span>" + 213 "</span>" +
193 "<time itemprop=\"dateModified\" datetime=\"" + expectedTimeModi fied + 214 "<time itemprop=\"dateModified\" datetime=\"" + expectedTimeModi fied +
194 "\">April 16, 2014 11:59pm" + 215 "\">April 16, 2014 11:59pm" +
195 "</time>" + 216 "</time>" +
196 "<span itemprop=\"copyrightYear\">" + expectedCopyrightYear + 217 "<span itemprop=\"copyrightYear\">" + expectedCopyrightYear +
197 "</span>" + 218 "</span>" +
198 "<span itemprop=\"copyrightHolder\">" + expectedCopyrightHolder + 219 "<span itemprop=\"copyrightHolder\">" + expectedCopyrightHolder +
199 "</span>" + 220 "</span>" +
200 "<span itemprop=\"articleSection\">" + expectedSection + 221 "<span itemprop=\"articleSection\">" + expectedSection +
201 "</span>" + 222 "</span>" +
202 "</div>"; 223 "</div>";
203 224
204 Element rootDiv = TestUtil.createDiv(0); 225 Element rootDiv = TestUtil.createDiv(0);
205 rootDiv.setInnerHTML(htmlStr); 226 rootDiv.setInnerHTML(htmlStr);
206 mBody.appendChild(rootDiv); 227 mBody.appendChild(rootDiv);
207 228
208 SchemaOrgParserAccessor parser = new SchemaOrgParserAccessor(mRoot); 229 SchemaOrgParserAccessor parser = new SchemaOrgParserAccessor(mRoot);
209 assertEquals("Article", parser.getType()); 230 assertEquals("Article", parser.getType());
210 assertEquals(expectedTitle, parser.getTitle()); 231 assertEquals(expectedTitle, parser.getTitle());
211 assertEquals(expectedDescription, parser.getDescription()); 232 assertEquals(expectedDescription, parser.getDescription());
212 assertEquals(expectedUrl, parser.getUrl()); 233 assertEquals(RECIPE_URL, parser.getUrl());
213 assertEquals(expectedAuthor, parser.getAuthor()); 234 assertEquals(expectedAuthor, parser.getAuthor());
214 assertEquals(expectedPublisher, parser.getPublisher()); 235 assertEquals(expectedPublisher, parser.getPublisher());
215 assertEquals( "Copyright " + expectedCopyrightYear + " " + expectedCopyr ightHolder, 236 assertEquals( "Copyright " + expectedCopyrightYear + " " + expectedCopyr ightHolder,
216 parser.getCopyright()); 237 parser.getCopyright());
217 MarkupParser.Image[] images = parser.getImages(); 238 MarkupParser.Image[] images = parser.getImages();
218 assertEquals(1, images.length); 239 assertEquals(1, images.length);
219 assertEquals(expectedImage, images[0].url); 240 assertEquals(RECIPE_IMAGE_URL, images[0].url);
220 MarkupParser.Article article = parser.getArticle(); 241 MarkupParser.Article article = parser.getArticle();
221 assertEquals(expectedDatePublished, article.publishedTime); 242 assertEquals(expectedDatePublished, article.publishedTime);
222 assertEquals(expectedTimeModified, article.modifiedTime); 243 assertEquals(expectedTimeModified, article.modifiedTime);
223 assertEquals("", article.expirationTime); 244 assertEquals("", article.expirationTime);
224 assertEquals(expectedSection, article.section); 245 assertEquals(expectedSection, article.section);
225 assertEquals(1, article.authors.length); 246 assertEquals(1, article.authors.length);
226 assertEquals(expectedAuthor, article.authors[0]); 247 assertEquals(expectedAuthor, article.authors[0]);
227 } 248 }
228 249
229 public void testArticleWithEmbeddedAndTopLevelImages() { 250 public void testArticleWithEmbeddedAndTopLevelImages() {
230 String expectedTitle = "Testcase for ARTICLE with Embedded and Top-Level IMAGEs"; 251 String expectedTitle = "Testcase for ARTICLE with Embedded and Top-Level IMAGEs";
231 String expectedDescription = "Testing ARTICLE with embedded and top-leve l images"; 252 String expectedDescription = "Testing ARTICLE with embedded and top-leve l images";
232 String expectedUrl = "http://dummy/test_article_with_embedded_and_toplev el_images.html"; 253 String expectedUrl = "http://dummy/test_article_with_embedded_and_toplev el_images.html";
233 String expectedImage1 = "http://dummy/test_toplevel image.html"; 254 String expectedImage1 = "http://dummy/test_toplevel image.html";
234 String expectedFormat1 = "gif"; 255 String expectedFormat1 = "gif";
235 String expectedCaption1 = "A test for top-level IMAGE"; 256 String expectedCaption1 = "A test for top-level IMAGE";
236 String expectedImage2 = "http://dummy/test_article_with_embedded_and_top level_images.html"; 257 String expectedImage2 = "http://dummy/test_article_with_embedded_and_top level_images.html";
237 String expectedFormat2 = "jpeg"; 258 String expectedFormat2 = "jpeg";
238 String expectedCaption2 = "A test for emedded IMAGE in ARTICLE"; 259 String expectedCaption2 = "A test for emedded IMAGE in ARTICLE";
239 String htmlStr = 260 String htmlStr =
240 "<div id=\"1\" itemscope itemtype=\"http://schema.org/ImageObject\"> " + 261 "<div id=\"1\" " + ITEM_TYPE_IMAGE_OBJECT + ">" +
241 "<span itemprop=\"headline\">Title should be ignored" + 262 "<span itemprop=\"headline\">Title should be ignored" +
242 "</span>" + 263 "</span>" +
243 "<span itemprop=\"description\">Testing top-level IMAGE" + 264 "<span itemprop=\"description\">Testing top-level IMAGE" +
244 "</span>" + 265 "</span>" +
245 "<a itemprop=\"url\" href=\"http://dummy/to_be_ignored_url.html\ ">test results" + 266 "<a itemprop=\"url\" href=\"http://dummy/to_be_ignored_url.html\ ">test results" +
246 "</a>" + 267 "</a>" +
247 "<a itemprop=\"contentUrl\" href=\"" + expectedImage1 + "\">top- level image" + 268 "<a itemprop=\"contentUrl\" href=\"" + expectedImage1 + "\">top- level image" +
248 "</a>" + 269 "</a>" +
249 "<span itemprop=\"encodingFormat\">" + expectedFormat1 + 270 "<span itemprop=\"encodingFormat\">" + expectedFormat1 +
250 "</span>" + 271 "</span>" +
251 "<span itemprop=\"caption\">" + expectedCaption1 + 272 "<span itemprop=\"caption\">" + expectedCaption1 +
252 "</span>" + 273 "</span>" +
253 "<meta itemprop=\"representativeOfPage\" content=\"true\">" + 274 "<meta itemprop=\"representativeOfPage\" content=\"true\">" +
254 "<meta itemprop=\"width\" content=\"1000\">" + 275 "<meta itemprop=\"width\" content=\"1000\">" +
255 "<meta itemprop=\"height\" content=\"600\">" + 276 "<meta itemprop=\"height\" content=\"600\">" +
256 "</div>" + 277 "</div>" +
257 "<div id=\"2\" itemscope itemtype=\"http://schema.org/Article\">" + 278 "<div id=\"2\" " + ITEM_TYPE_ARTICLE + ">" +
258 "<span itemprop=\"headline\">" + expectedTitle + 279 "<span itemprop=\"headline\">" + expectedTitle +
259 "</span>" + 280 "</span>" +
260 "<span itemprop=\"description\">" + expectedDescription + 281 "<span itemprop=\"description\">" + expectedDescription +
261 "</span>" + 282 "</span>" +
262 "<a itemprop=\"url\" href=\"" + expectedUrl + "\">test results" + 283 "<a itemprop=\"url\" href=\"" + expectedUrl + "\">test results" +
263 "</a>" + 284 "</a>" +
264 "<img itemprop=\"image\" src=\"http://dummy/should_be_ignored_im age.jpeg\">" + 285 "<img itemprop=\"image\" src=\"http://dummy/should_be_ignored_im age.jpeg\">" +
265 "<div id=\"3\" itemscope itemtype=\"http://schema.org/ImageObjec t\"" + 286 "<div id=\"3\" " + ITEM_TYPE_IMAGE_OBJECT + "" +
266 " itemprop=\"associatedMedia\">" + 287 " itemprop=\"associatedMedia\">" +
267 "<a itemprop=\"url\" href=\"" + expectedImage2 + "\">associa ted image" + 288 "<a itemprop=\"url\" href=\"" + expectedImage2 + "\">associa ted image" +
268 "</a>" + 289 "</a>" +
269 "<span itemprop=\"encodingFormat\">" + expectedFormat2 + 290 "<span itemprop=\"encodingFormat\">" + expectedFormat2 +
270 "</span>" + 291 "</span>" +
271 "<span itemprop=\"caption\">" + expectedCaption2 + 292 "<span itemprop=\"caption\">" + expectedCaption2 +
272 "</span>" + 293 "</span>" +
273 "<meta itemprop=\"representativeOfPage\" content=\"false\">" + 294 "<meta itemprop=\"representativeOfPage\" content=\"false\">" +
274 "<meta itemprop=\"width\" content=\"600\">" + 295 "<meta itemprop=\"width\" content=\"600\">" +
275 "<meta itemprop=\"height\" content=\"400\">" + 296 "<meta itemprop=\"height\" content=\"400\">" +
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
319 // Remove "itemscope" and "itemtype" attributes in <html> tag, so that 340 // Remove "itemscope" and "itemtype" attributes in <html> tag, so that
320 // other testcases won't be affected. 341 // other testcases won't be affected.
321 mRoot.removeAttribute("ITEMSCOPE"); 342 mRoot.removeAttribute("ITEMSCOPE");
322 mRoot.removeAttribute("ITEMTYPE"); 343 mRoot.removeAttribute("ITEMTYPE");
323 } 344 }
324 345
325 public void testSupportedWithUnsupportedItemprop() { 346 public void testSupportedWithUnsupportedItemprop() {
326 String expectedTitle = "Testcase for Supported With Unsupported Itemprop "; 347 String expectedTitle = "Testcase for Supported With Unsupported Itemprop ";
327 String expectedSection = "Testing"; 348 String expectedSection = "Testing";
328 String htmlStr = 349 String htmlStr =
329 "<div id=\"1\" itemscope itemtype=\"http://schema.org/Article\">" + 350 "<div id=\"1\" " + ITEM_TYPE_ARTICLE + ">" +
330 "<span itemprop=\"headline\">" + expectedTitle + 351 "<span itemprop=\"headline\">" + expectedTitle +
331 "</span>" + 352 "</span>" +
332 "<span itemprop=\"articleSection\">" + expectedSection + 353 "<span itemprop=\"articleSection\">" + expectedSection +
333 "</span>" + 354 "</span>" +
334 // Add unsupported AggregateRating to supported Article as itemp rop. 355 // Add unsupported AggregateRating to supported Article as itemp rop.
335 "<div id=\"2\" itemscope itemtype=\"http://schema.org/AggregateR ating\"" + 356 "<div id=\"2\" " + ITEM_TYPE_AGGREGATE_RATING + "" +
336 " itemprop=\"aggregateRating\">Ratings: " + 357 " itemprop=\"aggregateRating\">Ratings: " +
337 "<span itemprop=\"ratingValue\">9.9" + 358 "<span itemprop=\"ratingValue\">9.9" +
338 "</span>" + 359 "</span>" +
339 // Add supported Person to unsupported AggregateRating as it emprop. 360 // Add supported Person to unsupported AggregateRating as it emprop.
340 "<div id=\"3\" itemscope itemtype=\"http://schema.org/Person \"" + 361 "<div id=\"3\" " + ITEM_TYPE_PERSON +
341 " itemprop=\"author\">Author: " + 362 " itemprop=\"author\">Author: " +
342 "<span itemprop=\"name\">Whoever authored" + 363 "<span itemprop=\"name\">Whoever authored" +
343 "</span>" + 364 "</span>" +
344 "</div>" + 365 "</div>" +
345 "</div>" + 366 "</div>" +
346 "</div>"; 367 "</div>";
347 368
348 Element rootDiv = TestUtil.createDiv(0); 369 Element rootDiv = TestUtil.createDiv(0);
349 rootDiv.setInnerHTML(htmlStr); 370 rootDiv.setInnerHTML(htmlStr);
350 mBody.appendChild(rootDiv); 371 mBody.appendChild(rootDiv);
351 372
352 SchemaOrgParserAccessor parser = new SchemaOrgParserAccessor(mRoot); 373 SchemaOrgParserAccessor parser = new SchemaOrgParserAccessor(mRoot);
353 assertEquals("Article", parser.getType()); 374 assertEquals("Article", parser.getType());
354 assertEquals(expectedTitle, parser.getTitle()); 375 assertEquals(expectedTitle, parser.getTitle());
355 assertEquals("", parser.getDescription()); 376 assertEquals("", parser.getDescription());
356 assertEquals("", parser.getUrl()); 377 assertEquals("", parser.getUrl());
357 assertEquals("", parser.getAuthor()); 378 assertEquals("", parser.getAuthor());
358 assertEquals("", parser.getPublisher()); 379 assertEquals("", parser.getPublisher());
359 assertEquals("", parser.getCopyright()); 380 assertEquals("", parser.getCopyright());
360 MarkupParser.Article article = parser.getArticle(); 381 MarkupParser.Article article = parser.getArticle();
361 assertEquals("", article.publishedTime); 382 assertEquals("", article.publishedTime);
362 assertEquals("", article.modifiedTime); 383 assertEquals("", article.modifiedTime);
363 assertEquals("", article.expirationTime); 384 assertEquals("", article.expirationTime);
364 assertEquals(expectedSection, article.section); 385 assertEquals(expectedSection, article.section);
365 assertEquals(0, article.authors.length); 386 assertEquals(0, article.authors.length);
366 } 387 }
367 388
368 public void testUnsupportedWithSupportedItemprop() { 389 public void testUnsupportedWithSupportedItemprop() {
369 String htmlStr = 390 String htmlStr =
370 "<div id=\"1\" itemscope itemtype=\"http://schema.org/Movie\">" + 391 "<div id=\"1\" " + ITEM_TYPE_MOVIE + ">" +
371 "<span itemprop=\"headline\">Testcase for Unsupported With Suppo rted Itemprop" + 392 "<span itemprop=\"headline\">Testcase for Unsupported With Suppo rted Itemprop" +
372 "</span>" + 393 "</span>" +
373 // Add supported Person to unsupported Movie as itemprop. 394 // Add supported Person to unsupported Movie as itemprop.
374 "<div id=\"3\" itemscope itemtype=\"http://schema.org/Person\"" + 395 "<div id=\"3\" " + ITEM_TYPE_PERSON +
375 " itemprop=\"publisher\">Publisher: " + 396 " itemprop=\"publisher\">Publisher: " +
376 "<span itemprop=\"name\">Whoever published" + 397 "<span itemprop=\"name\">Whoever published" +
377 "</span>" + 398 "</span>" +
378 "</div>" + 399 "</div>" +
379 "</div>"; 400 "</div>";
380 Element rootDiv = TestUtil.createDiv(0); 401 Element rootDiv = TestUtil.createDiv(0);
381 rootDiv.setInnerHTML(htmlStr); 402 rootDiv.setInnerHTML(htmlStr);
382 mBody.appendChild(rootDiv); 403 mBody.appendChild(rootDiv);
383 404
384 SchemaOrgParserAccessor parser = new SchemaOrgParserAccessor(mRoot); 405 SchemaOrgParserAccessor parser = new SchemaOrgParserAccessor(mRoot);
385 assertEquals("", parser.getType()); 406 assertEquals("", parser.getType());
386 assertEquals("", parser.getTitle()); 407 assertEquals("", parser.getTitle());
387 assertEquals("", parser.getDescription()); 408 assertEquals("", parser.getDescription());
388 assertEquals("", parser.getUrl()); 409 assertEquals("", parser.getUrl());
389 assertEquals("", parser.getAuthor()); 410 assertEquals("", parser.getAuthor());
390 assertEquals("", parser.getPublisher()); 411 assertEquals("", parser.getPublisher());
391 assertEquals("", parser.getCopyright()); 412 assertEquals("", parser.getCopyright());
392 assertEquals(null, parser.getArticle()); 413 assertEquals(null, parser.getArticle());
393 assertEquals(0, parser.getImages().length); 414 assertEquals(0, parser.getImages().length);
394 } 415 }
395 416
396 public void testUnsupportedWithNestedSupported() { 417 public void testUnsupportedWithNestedSupported() {
397 String expectedTitle = "Testcase for ARTICLE nested in Unsupported Type" ; 418 String expectedTitle = "Testcase for ARTICLE nested in Unsupported Type" ;
398 String expectedDescription = "Testing ARTICLE that is nested within unsu pported type"; 419 String expectedDescription = "Testing ARTICLE that is nested within unsu pported type";
399 String expectedUrl = "http://dummy/test_article_with_embedded_items.html ";
400 String expectedImage = "http://dummy/test_article_with_embedded_items.jp eg";
401 String expectedAuthor = "Whoever authored"; 420 String expectedAuthor = "Whoever authored";
402 String expectedPublisher = "Whatever Article Incorporated"; 421 String expectedPublisher = "Whatever Article Incorporated";
403 String expectedDatePublished = "April 15, 2014"; 422 String expectedDatePublished = "April 15, 2014";
404 String htmlStr = 423 String htmlStr =
405 "<div id=\"1\" itemscope itemtype=\"http://schema.org/Movie\">" + 424 "<div id=\"1\" " + ITEM_TYPE_MOVIE + ">" +
406 "<span itemprop=\"headline\">Testcase for Unsupported With Suppo rted Itemprop" + 425 "<span itemprop=\"headline\">Testcase for Unsupported With Suppo rted Itemprop" +
407 "</span>" + 426 "</span>" +
408 // Add supported Article to unsupported Movie as a non-itemprop. 427 // Add supported Article to unsupported Movie as a non-itemprop.
409 "<div id=\"2\" itemscope itemtype=\"http://schema.org/Article\"> " + 428 "<div id=\"2\" " + ITEM_TYPE_ARTICLE + ">" +
410 "<span itemprop=\"headline\">" + expectedTitle + 429 "<span itemprop=\"headline\">" + expectedTitle +
411 "</span>" + 430 "</span>" +
412 "<span itemprop=\"description\">" + expectedDescription + 431 "<span itemprop=\"description\">" + expectedDescription +
413 "</span>" + 432 "</span>" +
414 "<a itemprop=\"url\" href=\"" + expectedUrl + "\">test resul ts" + 433 "<a itemprop=\"url\" href=\"" + RECIPE_URL + "\">test result s" +
415 "</a>" + 434 "</a>" +
416 "<img itemprop=\"image\" src=\"" + expectedImage + "\">" + 435 "<img itemprop=\"image\" src=\"" + RECIPE_IMAGE_URL + "\">" +
417 "<div id=\"3\" itemscope itemtype=\"http://schema.org/Person \"" + 436 "<div id=\"3\" " + ITEM_TYPE_PERSON +
418 " itemprop=\"author\">Author: " + 437 " itemprop=\"author\">Author: " +
419 "<span itemprop=\"name\">" + expectedAuthor + 438 "<span itemprop=\"name\">" + expectedAuthor +
420 "</span>" + 439 "</span>" +
421 "</div>" + 440 "</div>" +
422 "<div id=\"4\" itemscope itemtype=\"http://schema.org/Organi zation\"" + 441 "<div id=\"4\"" + ITEM_TYPE_ORGANIZATION + "" +
423 " itemprop=\"publisher\">Publisher: " + 442 " itemprop=\"publisher\">Publisher: " +
424 "<span itemprop=\"name\">" + expectedPublisher + 443 "<span itemprop=\"name\">" + expectedPublisher +
425 "</span>" + 444 "</span>" +
426 "</div>" + 445 "</div>" +
427 "<span itemprop=\"datePublished\">" + expectedDatePublished + 446 "<span itemprop=\"datePublished\">" + expectedDatePublished +
428 "</span>" + 447 "</span>" +
429 "</div>" + 448 "</div>" +
430 "</div>"; 449 "</div>";
431 Element rootDiv = TestUtil.createDiv(0); 450 Element rootDiv = TestUtil.createDiv(0);
432 rootDiv.setInnerHTML(htmlStr); 451 rootDiv.setInnerHTML(htmlStr);
433 mBody.appendChild(rootDiv); 452 mBody.appendChild(rootDiv);
434 453
435 SchemaOrgParserAccessor parser = new SchemaOrgParserAccessor(mRoot); 454 SchemaOrgParserAccessor parser = new SchemaOrgParserAccessor(mRoot);
436 assertEquals("Article", parser.getType()); 455 assertEquals("Article", parser.getType());
437 assertEquals(expectedTitle, parser.getTitle()); 456 assertEquals(expectedTitle, parser.getTitle());
438 assertEquals(expectedDescription, parser.getDescription()); 457 assertEquals(expectedDescription, parser.getDescription());
439 assertEquals(expectedUrl, parser.getUrl()); 458 assertEquals(RECIPE_URL, parser.getUrl());
440 assertEquals(expectedAuthor, parser.getAuthor()); 459 assertEquals(expectedAuthor, parser.getAuthor());
441 assertEquals(expectedPublisher, parser.getPublisher()); 460 assertEquals(expectedPublisher, parser.getPublisher());
442 assertEquals("", parser.getCopyright()); 461 assertEquals("", parser.getCopyright());
443 MarkupParser.Image[] images = parser.getImages(); 462 MarkupParser.Image[] images = parser.getImages();
444 assertEquals(1, images.length); 463 assertEquals(1, images.length);
445 assertEquals(expectedImage, images[0].url); 464 assertEquals(RECIPE_IMAGE_URL, images[0].url);
446 MarkupParser.Article article = parser.getArticle(); 465 MarkupParser.Article article = parser.getArticle();
447 assertEquals(expectedDatePublished, article.publishedTime); 466 assertEquals(expectedDatePublished, article.publishedTime);
448 assertEquals("", article.expirationTime); 467 assertEquals("", article.expirationTime);
449 assertEquals(1, article.authors.length); 468 assertEquals(1, article.authors.length);
450 assertEquals(expectedAuthor, article.authors[0]); 469 assertEquals(expectedAuthor, article.authors[0]);
451 } 470 }
452 471
453 public void testSameItempropDifferentValues() { 472 public void testSameItempropDifferentValues() {
454 String expectedAuthor = "Author 1"; 473 String expectedAuthor = "Author 1, Author 2";
455 String htmlStr = 474 String htmlStr =
456 "<div id=\"1\" itemscope itemtype=\"http://schema.org/Article\">" + 475 "<div id=\"1\" " + ITEM_TYPE_ARTICLE + ">" +
457 "<div id=\"2\" itemscope itemtype=\"http://schema.org/Person\"" + 476 "<div id=\"2\" " + ITEM_TYPE_PERSON +
458 " itemprop=\"author\">Authors: " + 477 " itemprop=\"author\">Authors: " +
459 "<span itemprop=\"name\">" + expectedAuthor + 478 "<span itemprop=\"name\">Author 1" +
460 "</span>" + 479 "</span>" +
461 "<span itemprop=\"name\">Author 2" + 480 "<span itemprop=\"name\">Author 2" +
462 "</span>" + 481 "</span>" +
463 "</div>" + 482 "</div>" +
464 "</div>"; 483 "</div>";
465 484
466 Element rootDiv = TestUtil.createDiv(0); 485 Element rootDiv = TestUtil.createDiv(0);
467 rootDiv.setInnerHTML(htmlStr); 486 rootDiv.setInnerHTML(htmlStr);
468 mBody.appendChild(rootDiv); 487 mBody.appendChild(rootDiv);
469 488
470 SchemaOrgParserAccessor parser = new SchemaOrgParserAccessor(mRoot); 489 SchemaOrgParserAccessor parser = new SchemaOrgParserAccessor(mRoot);
471 assertEquals("Article", parser.getType()); 490 assertEquals("Article", parser.getType());
472 assertEquals(expectedAuthor, parser.getAuthor()); 491 assertEquals(expectedAuthor, parser.getAuthor());
473 MarkupParser.Article article = parser.getArticle(); 492 MarkupParser.Article article = parser.getArticle();
474 assertEquals(1, article.authors.length); 493 assertEquals(1, article.authors.length);
475 assertEquals(expectedAuthor, article.authors[0]); 494 assertEquals(expectedAuthor, article.authors[0]);
476 } 495 }
477 496
478 public void testItempropWithMultiProperties() { 497 public void testItempropWithMultiProperties() {
479 String expectedPerson = "Person foo"; 498 String expectedPerson = "Person foo";
480 String htmlStr = 499 String htmlStr =
481 "<div id=\"1\" itemscope itemtype=\"http://schema.org/Article\">" + 500 "<div id=\"1\" " + ITEM_TYPE_ARTICLE + ">" +
482 "<div id=\"2\" itemscope itemtype=\"http://schema.org/Person\"" + 501 "<div id=\"2\" " + ITEM_TYPE_PERSON +
483 " itemprop=\"author publisher\">" + 502 " itemprop=\"author publisher\">" +
484 "<span itemprop=\"name\">" + expectedPerson + 503 "<span itemprop=\"name\">" + expectedPerson +
485 "</span>" + 504 "</span>" +
486 "</div>" + 505 "</div>" +
487 "</div>"; 506 "</div>";
488 507
489 Element rootDiv = TestUtil.createDiv(0); 508 Element rootDiv = TestUtil.createDiv(0);
490 rootDiv.setInnerHTML(htmlStr); 509 rootDiv.setInnerHTML(htmlStr);
491 mBody.appendChild(rootDiv); 510 mBody.appendChild(rootDiv);
492 511
493 SchemaOrgParserAccessor parser = new SchemaOrgParserAccessor(mRoot); 512 SchemaOrgParserAccessor parser = new SchemaOrgParserAccessor(mRoot);
494 assertEquals("Article", parser.getType()); 513 assertEquals("Article", parser.getType());
495 assertEquals(expectedPerson, parser.getAuthor()); 514 assertEquals(expectedPerson, parser.getAuthor());
496 assertEquals(expectedPerson, parser.getPublisher()); 515 assertEquals(expectedPerson, parser.getPublisher());
497 MarkupParser.Article article = parser.getArticle(); 516 MarkupParser.Article article = parser.getArticle();
498 assertEquals(1, article.authors.length); 517 assertEquals(1, article.authors.length);
499 assertEquals(expectedPerson, article.authors[0]); 518 assertEquals(expectedPerson, article.authors[0]);
500 } 519 }
501 520
502 public void testAuthorPropertyFromDifferentSources() { 521 public void testAuthorPropertyFromDifferentSources() {
503 // Test that "creator" property is used when "author" property doens't e xist. 522 // Test that "creator" property is used when "author" property doens't e xist.
504 String expectedCreator = "Whoever created"; 523 String expectedCreator = "Whoever created";
505 String htmlStr = 524 String htmlStr =
506 "<div id=\"1\" itemscope itemtype=\"http://schema.org/Article\">" + 525 "<div id=\"1\" " + ITEM_TYPE_ARTICLE + ">" +
507 "<div id=\"2\" itemscope itemtype=\"http://schema.org/Person\"" + 526 "<div id=\"2\" " + ITEM_TYPE_PERSON +
508 " itemprop=\"author\">Creator: " + 527 " itemprop=\"author\">Creator: " +
509 "<span itemprop=\"name\">" + expectedCreator + 528 "<span itemprop=\"name\">" + expectedCreator +
510 "</span>" + 529 "</span>" +
511 "</div>" + 530 "</div>" +
512 "</div>"; 531 "</div>";
513 532
514 Element rootDiv = TestUtil.createDiv(0); 533 Element rootDiv = TestUtil.createDiv(0);
515 rootDiv.setInnerHTML(htmlStr); 534 rootDiv.setInnerHTML(htmlStr);
516 mBody.appendChild(rootDiv); 535 mBody.appendChild(rootDiv);
517 536
(...skipping 16 matching lines...) Expand all
534 553
535 parser = new SchemaOrgParserAccessor(mRoot); 554 parser = new SchemaOrgParserAccessor(mRoot);
536 assertEquals("", parser.getType()); 555 assertEquals("", parser.getType());
537 assertEquals(expectedAuthor, parser.getAuthor()); 556 assertEquals(expectedAuthor, parser.getAuthor());
538 assertEquals(null, parser.getArticle()); 557 assertEquals(null, parser.getArticle());
539 558
540 // Remove anchor from parent, so that other testcases won't be affected. 559 // Remove anchor from parent, so that other testcases won't be affected.
541 link.removeFromParent(); 560 link.removeFromParent();
542 } 561 }
543 562
563 public void testSingleRecipe() {
564 String htmlStr =
565 "<div id=\"1\" " + ITEM_TYPE_RECIPE + ">" +
566 "<meta http-equiv=\"Content-Language\" " +
567 "content=\"en_US\">" +
568 "<h1 itemprop=\"name\">Bat Rice Recipe</h1>" +
569 "<h2 itemprop=\"description\">" +
570 RECIPE_DESCRIPTION + "</h2>" +
571 "<a itemprop=\"url\" " +
572 "href=\"" + RECIPE_URL + "\">" +
573 "test results" + "</a>" +
574 "<img itemprop=\"image\" " +
575 "src=\"" + RECIPE_IMAGE_URL + "\" />" +
576 "<div itemprop=\"author\">Whoever authored</div>" +
577 "<div itemprop=\"recipeYield\" content=\"4\">" +
578 "4 servings</div>" +
579 "<time itemprop=\"prepTime\" datetime=\"PT15M\">" +
580 "15 Minutes" + "</time>" +
581 "<time itemprop=\"cookTime\" datetime=\"PT45M\">" +
582 "45 Minutes" + "</time>" +
583 "<time itemprop=\"totalTime\" datetime=\"PT9H\">" +
584 "9 Hours</time>" +
585 "<span itemprop=\"ingredients\">4 bats</span>" +
586 "<span itemprop=\"ingredients\">1/4 milk</span>" +
587 "<span itemprop=\"recipeInstructions\">" +
588 "Mix everything and wait for cook</span>" +
589 "</div>";
590
591 Element rootDiv = TestUtil.createDiv(0);
592 rootDiv.setInnerHTML(htmlStr);
593 mBody.appendChild(rootDiv);
594 SchemaOrgParserAccessor parser = new SchemaOrgParserAccessor(mRoot);
595 String result = parser.getStructuredData();
596
597 String expected =
598 "<img src='" + RECIPE_IMAGE_URL + "' />" +
599 "<p>Author: Whoever authored</p><p>Description: " +
600 RECIPE_DESCRIPTION + "</p>" +
601 "<p>Serves: 4 servings</p>" +
602 "<p>Prep time: 15 minute(s)</p>" +
603 "<p>Cook time: 45 minute(s)</p>" +
604 "<p>Total time: 9 hour(s)</p>" +
605 "Ingredients: <ul><li>4 bats</li>" +
606 "<li>1/4 milk</li>" +
607 "</ul><p>Instructions: <br />" +
608 "Mix everything and wait for cook</p>";
609 assertEquals(expected, result);
610 }
611
612 public void testSingleRecipeWithEmbeddedPerson() {
613 String htmlStr =
614 "<div id=\"1\" " + ITEM_TYPE_RECIPE + ">" +
615 "<h1 itemprop=\"name\">Bat Rice Recipe</h1>" +
616 "<h2 itemprop=\"description\">" +
617 RECIPE_DESCRIPTION + "</h2>" +
618 "<a itemprop=\"url\" href=\"" + RECIPE_URL + "\">" +
619 "test results" + "</a>" +
620 "<img itemprop=\"image\" " +
621 "src=\"" + RECIPE_IMAGE_URL + "\" />" +
622 "<span itemprop=\"author\" " + ITEM_TYPE_PERSON + ">" +
623 "<span itemprop=\"givenName\">Guest</span>" +
624 "<span itemprop=\"familyName\">Smith</span>" +
625 "</span>" +
626 "<div itemprop=\"recipeYield\" content=\"4\">" +
627 "4 servings</div>" +
628 "<time itemprop=\"prepTime\" datetime=\"PT15M\">1" +
629 "5 Minutes" + "</time>" +
630 "<time itemprop=\"cookTime\" datetime=\"PT45M\">" +
631 "45 Minutes" + "</time>" +
632 "<time itemprop=\"totalTime\" datetime=\"PT9H\">" +
633 "9 Hours</time>" +
634 "<span itemprop=\"ingredients\">4 bats</span>" +
635 "<span itemprop=\"ingredients\">1/4 milk</span>" +
636 "<span itemprop=\"recipeInstructions\">" +
637 "Mix everything and wait for cook</span>" +
638 "</div>";
639
640 Element rootDiv = TestUtil.createDiv(0);
641 rootDiv.setInnerHTML(htmlStr);
642 mRoot.setAttribute("lang", "en");
643 mBody.appendChild(rootDiv);
644 SchemaOrgParserAccessor parser = new SchemaOrgParserAccessor(mRoot);
645 String result = parser.getStructuredData();
646
647 String expected =
648 "<img src='" + RECIPE_IMAGE_URL + "' />" +
649 "<p>Author: <span>Guest Smith</span></p>" +
650 "<p>Description: " +
651 RECIPE_DESCRIPTION + "</p>" +
652 "<p>Serves: 4 servings</p>" +
653 "<p>Prep time: 15 minute(s)</p>" +
654 "<p>Cook time: 45 minute(s)</p>" +
655 "<p>Total time: 9 hour(s)</p>" +
656 "Ingredients: <ul><li>4 bats</li>" +
657 "<li>1/4 milk</li>" +
658 "</ul><p>Instructions: <br />" +
659 "Mix everything and wait for cook</p>";
660 assertEquals(expected, result);
661 }
662
663 public void testMoreThanOneSchemaOrg() {
664 String htmlStr =
665 "<div id=\"1\" " + ITEM_TYPE_RECIPE + ">" +
666 "<h1 itemprop=\"name\">Bat Rice Recipe</h1>" +
667 "<meta name=\"Language\" " +
668 "content=\"en_US\">" +
669 "<h2 itemprop=\"description\">" +
670 RECIPE_DESCRIPTION + "</h2>" +
671 "<a itemprop=\"url\" href=\"" + RECIPE_URL + "\">" +
672 "test results" + "</a>" +
673 "<img itemprop=\"image\" src=\"" +
674 RECIPE_IMAGE_URL + "\" />" +
675 "<div itemprop=\"author\">Whoever authored</div>" +
676 "<div itemprop=\"recipeYield\" content=\"4\">" +
677 "4 servings</div>" +
678 "<time itemprop=\"prepTime\" datetime=\"PT15M\">" +
679 "15 Minutes" + "</time>" +
680 "<time itemprop=\"cookTime\" datetime=\"PT45M\">" +
681 "45 Minutes" + "</time>" +
682 "<time itemprop=\"totalTime\" datetime=\"PT9H\">" +
683 "9 Hours</time>" +
684 "<span itemprop=\"ingredients\">4 bats</span>" +
685 "<span itemprop=\"ingredients\">1/4 milk</span>" +
686 "<span itemprop=\"recipeInstructions\">" +
687 "Mix everything and wait for cook</span>" +
688 "</div>" +
689 "<div id=\"1\" " + ITEM_TYPE_ARTICLE + ">" +
690 "<div id=\"2\" " + ITEM_TYPE_PERSON +
691 "itemprop=\"author\">Creator: " +
692 "<span itemprop=\"name\"> User </span>" +
693 "</div>" +
694 "</div>";
695
696 Element rootDiv = TestUtil.createDiv(0);
697 rootDiv.setInnerHTML(htmlStr);
698 mBody.appendChild(rootDiv);
699 SchemaOrgParserAccessor parser = new SchemaOrgParserAccessor(mRoot);
700 String result = parser.getStructuredData();
701
702 assertEquals("", result);
703 }
704
705 public void testNonEnglishPageSchemaOrgSupport() {
706 String htmlStr =
707 "<div id=\"1\" " + ITEM_TYPE_RECIPE + ">" +
708 "<meta itemprop=\"mainEntityOfPage\" " +
709 "content=\"true\">" +
710 "<h1 itemprop=\"name\">Bat Rice Recipe</h1>" +
711 "<h2 itemprop=\"description\">" +
712 RECIPE_DESCRIPTION + "</h2>" +
713 "<a itemprop=\"url\" href=\"" + RECIPE_URL + "\">" +
714 "test results" + "</a>" +
715 "<img itemprop=\"image\" src=\"" +
716 RECIPE_IMAGE_URL + "\" />" +
717 "<span itemprop=\"recipeInstructions\">" +
718 "Mix everything and wait for cook</span>" +
719 "</div>" +
720 "<div id=\"1\" " + ITEM_TYPE_ARTICLE + ">" +
721 "<div id=\"2\" " + ITEM_TYPE_PERSON +
722 "itemprop=\"author\">Creator: " +
723 "<span itemprop=\"name\"> User </span>" +
724 "</div>" +
725 "</div>";
726
727 Element rootDiv = TestUtil.createDiv(0);
728 rootDiv.setInnerHTML(htmlStr);
729 mBody.appendChild(rootDiv);
730 SchemaOrgParserAccessor parser = new SchemaOrgParserAccessor(mRoot);
731 String result = parser.getStructuredData();
732 assertEquals("", result);
733 }
734
735 public void testMultipleSchemaOrgWithMainEntity() {
736 String htmlStr =
737 "<div id=\"1\" " + ITEM_TYPE_RECIPE + ">" +
738 "<meta http-equiv=\"Content-Language\" " +
739 "content=\"en_US\">" +
740 "<meta itemprop=\"mainEntityOfPage\" " +
741 "content=\"true\">" +
742 "<h1 itemprop=\"name\">Bat Rice Recipe</h1>" +
743 "<h2 itemprop=\"description\">" +
744 RECIPE_DESCRIPTION + "</h2>" +
745 "<a itemprop=\"url\" href=\"" + RECIPE_URL + "\">" +
746 "test results" + "</a>" +
747 "<img itemprop=\"image\" src=\"" +
748 RECIPE_IMAGE_URL + "\" />" +
749 "<div itemprop=\"author\">Whoever authored</div>" +
750 "<div itemprop=\"recipeYield\" content=\"4\">" +
751 "4 servings</div>" +
752 "<time itemprop=\"prepTime\" datetime=\"PT15M\">" +
753 "15 Minutes" + "</time>" +
754 "<time itemprop=\"cookTime\" datetime=\"PT45M\">" +
755 "45 Minutes" + "</time>" +
756 "<time itemprop=\"totalTime\" datetime=\"PT9H\">" +
757 "9 Hours</time>" +
758 "<span itemprop=\"ingredients\">4 bats</span>" +
759 "<span itemprop=\"ingredients\">1/4 milk</span>" +
760 "<span itemprop=\"recipeInstructions\">" +
761 "Mix everything and wait for cook</span>" +
762 "</div>" +
763 "<div id=\"1\" " + ITEM_TYPE_ARTICLE + ">" +
764 "<div id=\"2\" " + ITEM_TYPE_PERSON +
765 "itemprop=\"author\">Creator: " +
766 "<span itemprop=\"name\"> User </span>" +
767 "</div>" +
768 "</div>";
769
770 Element rootDiv = TestUtil.createDiv(0);
771 rootDiv.setInnerHTML(htmlStr);
772 mBody.appendChild(rootDiv);
773 SchemaOrgParserAccessor parser = new SchemaOrgParserAccessor(mRoot);
774 String result = parser.getStructuredData();
775
776 String expected =
777 "<img src='" + RECIPE_IMAGE_URL + "' />" +
778 "<p>Author: Whoever authored</p><p>Description: " +
779 RECIPE_DESCRIPTION + "</p>" +
780 "<p>Serves: 4 servings</p>" +
781 "<p>Prep time: 15 minute(s)</p>" +
782 "<p>Cook time: 45 minute(s)</p>" +
783 "<p>Total time: 9 hour(s)</p>" +
784 "Ingredients: <ul><li>4 bats</li>" +
785 "<li>1/4 milk</li>" +
786 "</ul><p>Instructions: <br />" +
787 "Mix everything and wait for cook</p>";
788 assertEquals(expected, result);
789 }
790
544 public void testGetTitleWhenTheMainArticleDoesntHaveHeadline() { 791 public void testGetTitleWhenTheMainArticleDoesntHaveHeadline() {
545 String expectedTitle = "This is a headline"; 792 String expectedTitle = "This is a headline";
546 String elements = 793 String elements =
547 "<div itemscope itemtype=\"http://schema.org/Article\" " + 794 "<div itemscope itemtype=\"http://schema.org/Article\" " +
548 "style=\"width: 200; height: 300\">" + 795 "style=\"width: 200; height: 300\">" +
549 "<span itemprop=\"name\">A headline</span>" + 796 "<span itemprop=\"name\">A headline</span>" +
550 "</div>" + 797 "</div>" +
551 "<div itemscope itemtype=\"http://schema.org/Article\" " + 798 "<div itemscope itemtype=\"http://schema.org/Article\" " +
552 "style=\"width: 200; height: 400\">" + 799 "style=\"width: 200; height: 400\">" +
553 "<span itemprop=\"name\">" + expectedTitle + "</span>" + 800 "<span itemprop=\"name\">" + expectedTitle + "</span>" +
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
602 } 849 }
603 850
604 private void setItemScopeAndType(Element e, String type) { 851 private void setItemScopeAndType(Element e, String type) {
605 e.setAttribute("ITEMSCOPE", ""); 852 e.setAttribute("ITEMSCOPE", "");
606 e.setAttribute("ITEMTYPE", "http://schema.org/" + type); 853 e.setAttribute("ITEMTYPE", "http://schema.org/" + type);
607 } 854 }
608 855
609 private void setItemProp(Element e, String name) { 856 private void setItemProp(Element e, String name) {
610 e.setAttribute("itemprop", name); 857 e.setAttribute("itemprop", name);
611 } 858 }
612 } 859 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698