forked from mirrors/gecko-dev
		
	 78607df6d6
			
		
	
	
		78607df6d6
		
	
	
	
	
		
			
			This is just a start and there are a number of JSON-LD features not currently handled. Differential Revision: https://phabricator.services.mozilla.com/D133878
		
			
				
	
	
		
			213 lines
		
	
	
	
		
			5.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			213 lines
		
	
	
	
		
			5.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| /* This Source Code Form is subject to the terms of the Mozilla Public
 | |
|  * License, v. 2.0. If a copy of the MPL was not distributed with this
 | |
|  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 | |
| 
 | |
| /**
 | |
|  * Tests that the page data service can parse schema.org metadata into PageData.
 | |
|  */
 | |
| 
 | |
| add_task(async function test_single_product_microdata() {
 | |
|   await verifyPageData(
 | |
|     `
 | |
|       <!DOCTYPE html>
 | |
|       <html>
 | |
|       <head>
 | |
|       <title>Product Info 1</title>
 | |
|       </head>
 | |
|       <body>
 | |
|         <div itemscope itemtype="https://schema.org/Organization">
 | |
|           <div itemprop="employee" itemscope itemtype="https://schema.org/Person">
 | |
|             <span itemprop="name">Mr. Nested Name</span>
 | |
|           </div>
 | |
| 
 | |
|           <span itemprop="name">Mozilla</span>
 | |
|         </div>
 | |
| 
 | |
|         <div itemscope itemtype="https://schema.org/Product">
 | |
|           <img itemprop="image" src="bon-echo-microwave-17in.jpg" />
 | |
|           <a href="microwave.html" itemprop="url">
 | |
|             <span itemprop="name">Bon Echo Microwave</span>
 | |
|           </a>
 | |
| 
 | |
|           <div itemprop="offers" itemscope itemtype="https://schema.org/Offer">
 | |
|             <span itemprop="price" content="3.50">£3.50</span>
 | |
|             <span itemprop="priceCurrency" content="GBP"></span>
 | |
|           </div>
 | |
| 
 | |
|           <span itemprop="gtin" content="13572468"></span>
 | |
| 
 | |
|           <span itemprop="description">The most amazing microwave in the world</span>
 | |
|         </div>
 | |
|       </body>
 | |
|       </html>
 | |
|     `,
 | |
|     {
 | |
|       siteName: "Mozilla",
 | |
|       description: "The most amazing microwave in the world",
 | |
|       image: BASE_URL + "/bon-echo-microwave-17in.jpg",
 | |
|       data: {
 | |
|         [PageDataSchema.DATA_TYPE.PRODUCT]: {
 | |
|           name: "Bon Echo Microwave",
 | |
|           price: {
 | |
|             value: 3.5,
 | |
|             currency: "GBP",
 | |
|           },
 | |
|         },
 | |
|       },
 | |
|     }
 | |
|   );
 | |
| });
 | |
| 
 | |
| add_task(async function test_single_product_json_ld() {
 | |
|   await verifyPageData(
 | |
|     `
 | |
|       <!DOCTYPE html>
 | |
|       <html>
 | |
|       <head>
 | |
|       <script type="application/ld+json">
 | |
|         {
 | |
|           "@context": "http://schema.org",
 | |
|           "@type": "Organization",
 | |
|           "employee": {
 | |
|             "@type": "Person",
 | |
|             "name": "Mr. Nested Name"
 | |
|           },
 | |
|           "name": "Mozilla"
 | |
|         }
 | |
|       </script>
 | |
|       <script type="application/ld+json">
 | |
|         {
 | |
|           "@context": "https://schema.org",
 | |
|           "@type": "Product",
 | |
|           "image": "bon-echo-microwave-17in.jpg",
 | |
|           "url": "microwave.html",
 | |
|           "name": "Bon Echo Microwave",
 | |
|           "offers": {
 | |
|             "@type": "Offer",
 | |
|             "price": "3.50",
 | |
|             "priceCurrency": "GBP"
 | |
|           },
 | |
|           "gtin": "13572468",
 | |
|           "description": "The most amazing microwave in the world"
 | |
|         }
 | |
|       </script>
 | |
|       </head>
 | |
|       <body>
 | |
|       </body>
 | |
|       </html>
 | |
|     `,
 | |
|     {
 | |
|       siteName: "Mozilla",
 | |
|       description: "The most amazing microwave in the world",
 | |
|       image: BASE_URL + "/bon-echo-microwave-17in.jpg",
 | |
|       data: {
 | |
|         [PageDataSchema.DATA_TYPE.PRODUCT]: {
 | |
|           name: "Bon Echo Microwave",
 | |
|           price: {
 | |
|             value: 3.5,
 | |
|             currency: "GBP",
 | |
|           },
 | |
|         },
 | |
|       },
 | |
|     }
 | |
|   );
 | |
| });
 | |
| 
 | |
| add_task(async function test_single_product_combined() {
 | |
|   await verifyPageData(
 | |
|     `
 | |
|       <!DOCTYPE html>
 | |
|       <html>
 | |
|       <head>
 | |
|       <script type="application/ld+json">
 | |
|         {
 | |
|           "@context": "https://schema.org",
 | |
|           "@type": "Product",
 | |
|           "image": "bon-echo-microwave-17in.jpg",
 | |
|           "url": "microwave.html",
 | |
|           "name": "Bon Echo Microwave",
 | |
|           "offers": {
 | |
|             "@type": "Offer",
 | |
|             "price": "3.50",
 | |
|             "priceCurrency": "GBP"
 | |
|           },
 | |
|           "gtin": "13572468",
 | |
|           "description": "The most amazing microwave in the world"
 | |
|         }
 | |
|       </script>
 | |
|       </head>
 | |
|       <body>
 | |
|         <div itemscope itemtype="https://schema.org/Organization">
 | |
|           <div itemprop="employee" itemscope itemtype="https://schema.org/Person">
 | |
|             <span itemprop="name">Mr. Nested Name</span>
 | |
|           </div>
 | |
| 
 | |
|           <span itemprop="name">Mozilla</span>
 | |
|         </div>
 | |
|       </body>
 | |
|       </html>
 | |
|     `,
 | |
|     {
 | |
|       siteName: "Mozilla",
 | |
|       description: "The most amazing microwave in the world",
 | |
|       image: BASE_URL + "/bon-echo-microwave-17in.jpg",
 | |
|       data: {
 | |
|         [PageDataSchema.DATA_TYPE.PRODUCT]: {
 | |
|           name: "Bon Echo Microwave",
 | |
|           price: {
 | |
|             value: 3.5,
 | |
|             currency: "GBP",
 | |
|           },
 | |
|         },
 | |
|       },
 | |
|     }
 | |
|   );
 | |
| });
 | |
| 
 | |
| add_task(async function test_single_multiple_microdata() {
 | |
|   await verifyPageData(
 | |
|     `
 | |
|       <!DOCTYPE html>
 | |
|       <html>
 | |
|       <head>
 | |
|       <title>Product Info 2</title>
 | |
|       </head>
 | |
|       <body>
 | |
|         <div itemscope itemtype="https://schema.org/Product">
 | |
|           <img itemprop="image" src="bon-echo-microwave-17in.jpg" />
 | |
|           <a href="microwave.html" itemprop="url">
 | |
|             <span itemprop="name">Bon Echo Microwave</span>
 | |
|           </a>
 | |
| 
 | |
|           <div itemprop="offers" itemscope itemtype="https://schema.org/Offer">
 | |
|             <span itemprop="price" content="3.28">£3.28</span>
 | |
|             <span itemprop="priceCurrency" content="GBP"></span>
 | |
|           </div>
 | |
| 
 | |
|           <span itemprop="gtin" content="13572468"></span>
 | |
|         </div>
 | |
|         <div itemscope itemtype="http://schema.org/Product">
 | |
|           <img itemprop="image" src="gran-paradiso-toaster-17in.jpg" />
 | |
|           <a href="toaster.html" itemprop="url">
 | |
|             <span itemprop="name">Gran Paradiso Toaster</span>
 | |
|           </a>
 | |
| 
 | |
|           <span itemprop="gtin" content="15263748"></span>
 | |
|         </div>
 | |
|       </body>
 | |
|       </html>
 | |
|     `,
 | |
|     {
 | |
|       image: BASE_URL + "/bon-echo-microwave-17in.jpg",
 | |
|       data: {
 | |
|         [PageDataSchema.DATA_TYPE.PRODUCT]: {
 | |
|           name: "Bon Echo Microwave",
 | |
|           price: {
 | |
|             value: 3.28,
 | |
|             currency: "GBP",
 | |
|           },
 | |
|         },
 | |
|       },
 | |
|     }
 | |
|   );
 | |
| });
 |