tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

test_pagedata_basic.js (2084B)


      1 /* Any copyright is dedicated to the Public Domain.
      2 * http://creativecommons.org/publicdomain/zero/1.0/ */
      3 
      4 /*
      5 * Simply tests that the notification is dispatched when new page data is
      6 * discovered.
      7 */
      8 
      9 ChromeUtils.defineESModuleGetters(this, {
     10  PageDataService:
     11    "moz-src:///browser/components/pagedata/PageDataService.sys.mjs",
     12 });
     13 
     14 add_task(async function test_pageDataDiscovered_notifies() {
     15  let url = "https://www.mozilla.org/";
     16 
     17  Assert.equal(
     18    PageDataService.getCached(url),
     19    null,
     20    "Should be no cached data."
     21  );
     22 
     23  let promise = PageDataService.once("page-data");
     24 
     25  PageDataService.pageDataDiscovered({
     26    url,
     27    date: 32453456,
     28    data: {
     29      [PageDataSchema.DATA_TYPE.PRODUCT]: {
     30        name: "Bolts",
     31        price: { value: 276 },
     32      },
     33    },
     34  });
     35 
     36  let pageData = await promise;
     37  Assert.equal(
     38    pageData.url,
     39    url,
     40    "Should have notified data for the expected url"
     41  );
     42 
     43  Assert.deepEqual(
     44    pageData,
     45    {
     46      url,
     47      date: 32453456,
     48      data: {
     49        [PageDataSchema.DATA_TYPE.PRODUCT]: {
     50          name: "Bolts",
     51          price: { value: 276 },
     52        },
     53      },
     54    },
     55    "Should have returned the correct product data"
     56  );
     57 
     58  Assert.equal(
     59    PageDataService.getCached(url),
     60    null,
     61    "Should not have cached the data as there was no actor locking."
     62  );
     63 
     64  let actor = {};
     65  PageDataService.lockEntry(actor, url);
     66 
     67  PageDataService.pageDataDiscovered({
     68    url,
     69    date: 32453456,
     70    data: {
     71      [PageDataSchema.DATA_TYPE.PRODUCT]: {
     72        name: "Bolts",
     73        price: { value: 276 },
     74      },
     75    },
     76  });
     77 
     78  // Should now be in the cache.
     79  Assert.deepEqual(
     80    PageDataService.getCached(url),
     81    {
     82      url,
     83      date: 32453456,
     84      data: {
     85        [PageDataSchema.DATA_TYPE.PRODUCT]: {
     86          name: "Bolts",
     87          price: { value: 276 },
     88        },
     89      },
     90    },
     91    "Should have cached the data"
     92  );
     93 
     94  PageDataService.unlockEntry(actor, url);
     95 
     96  Assert.equal(
     97    PageDataService.getCached(url),
     98    null,
     99    "Should have dropped the data from the cache."
    100  );
    101 });