summaryrefslogtreecommitdiffstats
path: root/browser/components/pagedata/tests/unit/test_schemaorg.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/components/pagedata/tests/unit/test_schemaorg.js')
-rw-r--r--browser/components/pagedata/tests/unit/test_schemaorg.js213
1 files changed, 213 insertions, 0 deletions
diff --git a/browser/components/pagedata/tests/unit/test_schemaorg.js b/browser/components/pagedata/tests/unit/test_schemaorg.js
new file mode 100644
index 0000000000..5470410e4f
--- /dev/null
+++ b/browser/components/pagedata/tests/unit/test_schemaorg.js
@@ -0,0 +1,213 @@
+/* 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",
+ },
+ },
+ },
+ }
+ );
+});