summaryrefslogtreecommitdiffstats
path: root/browser/components/pagedata/tests/unit/test_pagedata_basic.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/components/pagedata/tests/unit/test_pagedata_basic.js')
-rw-r--r--browser/components/pagedata/tests/unit/test_pagedata_basic.js100
1 files changed, 100 insertions, 0 deletions
diff --git a/browser/components/pagedata/tests/unit/test_pagedata_basic.js b/browser/components/pagedata/tests/unit/test_pagedata_basic.js
new file mode 100644
index 0000000000..5d31645a4c
--- /dev/null
+++ b/browser/components/pagedata/tests/unit/test_pagedata_basic.js
@@ -0,0 +1,100 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/ */
+
+/*
+ * Simply tests that the notification is dispatched when new page data is
+ * discovered.
+ */
+
+ChromeUtils.defineESModuleGetters(this, {
+ PageDataService: "resource:///modules/pagedata/PageDataService.sys.mjs",
+});
+
+add_task(async function test_pageDataDiscovered_notifies() {
+ let url = "https://www.mozilla.org/";
+
+ Assert.equal(
+ PageDataService.getCached(url),
+ null,
+ "Should be no cached data."
+ );
+
+ let promise = PageDataService.once("page-data");
+
+ PageDataService.pageDataDiscovered({
+ url,
+ date: 32453456,
+ data: {
+ [PageDataSchema.DATA_TYPE.PRODUCT]: {
+ name: "Bolts",
+ price: { value: 276 },
+ },
+ },
+ });
+
+ let pageData = await promise;
+ Assert.equal(
+ pageData.url,
+ url,
+ "Should have notified data for the expected url"
+ );
+
+ Assert.deepEqual(
+ pageData,
+ {
+ url,
+ date: 32453456,
+ data: {
+ [PageDataSchema.DATA_TYPE.PRODUCT]: {
+ name: "Bolts",
+ price: { value: 276 },
+ },
+ },
+ },
+ "Should have returned the correct product data"
+ );
+
+ Assert.equal(
+ PageDataService.getCached(url),
+ null,
+ "Should not have cached the data as there was no actor locking."
+ );
+
+ let actor = {};
+ PageDataService.lockEntry(actor, url);
+
+ PageDataService.pageDataDiscovered({
+ url,
+ date: 32453456,
+ data: {
+ [PageDataSchema.DATA_TYPE.PRODUCT]: {
+ name: "Bolts",
+ price: { value: 276 },
+ },
+ },
+ });
+
+ // Should now be in the cache.
+ Assert.deepEqual(
+ PageDataService.getCached(url),
+ {
+ url,
+ date: 32453456,
+ data: {
+ [PageDataSchema.DATA_TYPE.PRODUCT]: {
+ name: "Bolts",
+ price: { value: 276 },
+ },
+ },
+ },
+ "Should have cached the data"
+ );
+
+ PageDataService.unlockEntry(actor, url);
+
+ Assert.equal(
+ PageDataService.getCached(url),
+ null,
+ "Should have dropped the data from the cache."
+ );
+});