summaryrefslogtreecommitdiffstats
path: root/services/sync/tests/unit/test_block_sync.js
blob: f83b7b7408c4b9bff20a0303b6c69e7a6c399f40 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
/* Any copyright is dedicated to the Public Domain.
   http://creativecommons.org/publicdomain/zero/1.0/ */
Cu.import("resource://services-sync/main.js");
Cu.import("resource://services-sync/util.js");

// Simple test for block/unblock.
add_task(function *() {
  Assert.ok(!Weave.Service.scheduler.isBlocked, "sync is not blocked.")
  Assert.ok(!Svc.Prefs.has("scheduler.blocked-until"), "have no blocked pref");
  Weave.Service.scheduler.blockSync();

  Assert.ok(Weave.Service.scheduler.isBlocked, "sync is blocked.")
  Assert.ok(Svc.Prefs.has("scheduler.blocked-until"), "have the blocked pref");

  Weave.Service.scheduler.unblockSync();
  Assert.ok(!Weave.Service.scheduler.isBlocked, "sync is not blocked.")
  Assert.ok(!Svc.Prefs.has("scheduler.blocked-until"), "have no blocked pref");

  // now check the "until" functionality.
  let until = Date.now() + 1000;
  Weave.Service.scheduler.blockSync(until);
  Assert.ok(Weave.Service.scheduler.isBlocked, "sync is blocked.")
  Assert.ok(Svc.Prefs.has("scheduler.blocked-until"), "have the blocked pref");

  // wait for 'until' to pass.
  yield new Promise((resolve, reject) => {
    CommonUtils.namedTimer(resolve, 1000, {}, "timer");
  });

  // should have automagically unblocked and removed the pref.
  Assert.ok(!Weave.Service.scheduler.isBlocked, "sync is not blocked.")
  Assert.ok(!Svc.Prefs.has("scheduler.blocked-until"), "have no blocked pref");
});

function run_test() {
  run_next_test();
}