forked from mirrors/gecko-dev
		
	
		
			
				
	
	
		
			100 lines
		
	
	
	
		
			2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			100 lines
		
	
	
	
		
			2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| /* 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."
 | |
|   );
 | |
| });
 | 
