test_tracker_addChanged.js (1704B)
1 /* Any copyright is dedicated to the Public Domain. 2 http://creativecommons.org/publicdomain/zero/1.0/ */ 3 4 const { Service } = ChromeUtils.importESModule( 5 "resource://services-sync/service.sys.mjs" 6 ); 7 8 add_task(async function test_tracker_basics() { 9 let tracker = new LegacyTracker("Tracker", Service); 10 11 let id = "the_id!"; 12 13 _("Make sure nothing exists yet.."); 14 let changes = await tracker.getChangedIDs(); 15 Assert.equal(changes[id], null); 16 17 _("Make sure adding of time 0 works"); 18 await tracker.addChangedID(id, 0); 19 changes = await tracker.getChangedIDs(); 20 Assert.equal(changes[id], 0); 21 22 _("A newer time will replace the old 0"); 23 await tracker.addChangedID(id, 10); 24 changes = await tracker.getChangedIDs(); 25 Assert.equal(changes[id], 10); 26 27 _("An older time will not replace the newer 10"); 28 await tracker.addChangedID(id, 5); 29 changes = await tracker.getChangedIDs(); 30 Assert.equal(changes[id], 10); 31 32 _("Adding without time defaults to current time"); 33 await tracker.addChangedID(id); 34 changes = await tracker.getChangedIDs(); 35 Assert.greater(changes[id], 10); 36 }); 37 38 add_task(async function test_tracker_persistence() { 39 let tracker = new LegacyTracker("Tracker", Service); 40 let id = "abcdef"; 41 42 let promiseSave = new Promise((resolve, reject) => { 43 let save = tracker._storage._save; 44 tracker._storage._save = function () { 45 save.call(tracker._storage).then(resolve, reject); 46 }; 47 }); 48 49 await tracker.addChangedID(id, 5); 50 51 await promiseSave; 52 53 _("IDs saved."); 54 const changes = await tracker.getChangedIDs(); 55 Assert.equal(5, changes[id]); 56 57 let json = await Utils.jsonLoad(["changes", "tracker"], tracker); 58 Assert.equal(5, json[id]); 59 });