1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/services/sync/tests/unit/test_prefs_tracker.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,88 @@ 1.4 +/* Any copyright is dedicated to the Public Domain. 1.5 + http://creativecommons.org/publicdomain/zero/1.0/ */ 1.6 + 1.7 +Cu.import("resource://gre/modules/Preferences.jsm"); 1.8 +Cu.import("resource://services-common/utils.js"); 1.9 +Cu.import("resource://services-sync/constants.js"); 1.10 +Cu.import("resource://services-sync/engines/prefs.js"); 1.11 +Cu.import("resource://services-sync/service.js"); 1.12 +Cu.import("resource://services-sync/util.js"); 1.13 + 1.14 +function run_test() { 1.15 + let engine = Service.engineManager.get("prefs"); 1.16 + let tracker = engine._tracker; 1.17 + 1.18 + // Don't write out by default. 1.19 + tracker.persistChangedIDs = false; 1.20 + 1.21 + let prefs = new Preferences(); 1.22 + 1.23 + try { 1.24 + 1.25 + _("tracker.modified corresponds to preference."); 1.26 + do_check_eq(Svc.Prefs.get("engine.prefs.modified"), undefined); 1.27 + do_check_false(tracker.modified); 1.28 + 1.29 + tracker.modified = true; 1.30 + do_check_eq(Svc.Prefs.get("engine.prefs.modified"), true); 1.31 + do_check_true(tracker.modified); 1.32 + 1.33 + _("Engine's getChangedID() just returns the one GUID we have."); 1.34 + let changedIDs = engine.getChangedIDs(); 1.35 + let ids = Object.keys(changedIDs); 1.36 + do_check_eq(ids.length, 1); 1.37 + do_check_eq(ids[0], CommonUtils.encodeBase64URL(Services.appinfo.ID)); 1.38 + 1.39 + Svc.Prefs.set("engine.prefs.modified", false); 1.40 + do_check_false(tracker.modified); 1.41 + 1.42 + _("No modified state, so no changed IDs."); 1.43 + do_check_empty(engine.getChangedIDs()); 1.44 + 1.45 + _("Initial score is 0"); 1.46 + do_check_eq(tracker.score, 0); 1.47 + 1.48 + _("Test fixtures."); 1.49 + Svc.Prefs.set("prefs.sync.testing.int", true); 1.50 + 1.51 + _("Test fixtures haven't upped the tracker score yet because it hasn't started tracking yet."); 1.52 + do_check_eq(tracker.score, 0); 1.53 + 1.54 + _("Tell the tracker to start tracking changes."); 1.55 + Svc.Obs.notify("weave:engine:start-tracking"); 1.56 + prefs.set("testing.int", 23); 1.57 + do_check_eq(tracker.score, SCORE_INCREMENT_XLARGE); 1.58 + do_check_eq(tracker.modified, true); 1.59 + 1.60 + _("Clearing changed IDs reset modified status."); 1.61 + tracker.clearChangedIDs(); 1.62 + do_check_eq(tracker.modified, false); 1.63 + 1.64 + _("Resetting a pref ups the score, too."); 1.65 + prefs.reset("testing.int"); 1.66 + do_check_eq(tracker.score, SCORE_INCREMENT_XLARGE * 2); 1.67 + do_check_eq(tracker.modified, true); 1.68 + tracker.clearChangedIDs(); 1.69 + 1.70 + _("So does changing a pref sync pref."); 1.71 + Svc.Prefs.set("prefs.sync.testing.int", false); 1.72 + do_check_eq(tracker.score, SCORE_INCREMENT_XLARGE * 3); 1.73 + do_check_eq(tracker.modified, true); 1.74 + tracker.clearChangedIDs(); 1.75 + 1.76 + _("Now that the pref sync pref has been flipped, changes to it won't be picked up."); 1.77 + prefs.set("testing.int", 42); 1.78 + do_check_eq(tracker.score, SCORE_INCREMENT_XLARGE * 3); 1.79 + do_check_eq(tracker.modified, false); 1.80 + tracker.clearChangedIDs(); 1.81 + 1.82 + _("Changing some other random pref won't do anything."); 1.83 + prefs.set("testing.other", "blergh"); 1.84 + do_check_eq(tracker.score, SCORE_INCREMENT_XLARGE * 3); 1.85 + do_check_eq(tracker.modified, false); 1.86 + 1.87 + } finally { 1.88 + Svc.Obs.notify("weave:engine:stop-tracking"); 1.89 + prefs.resetBranch(""); 1.90 + } 1.91 +}