services/sync/tests/unit/test_enginemanager.js

changeset 0
6474c204b198
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/services/sync/tests/unit/test_enginemanager.js	Wed Dec 31 06:09:35 2014 +0100
     1.3 @@ -0,0 +1,97 @@
     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://services-sync/engines.js");
     1.8 +Cu.import("resource://services-sync/service.js");
     1.9 +
    1.10 +function run_test() {
    1.11 +  run_next_test();
    1.12 +}
    1.13 +
    1.14 +function PetrolEngine() {}
    1.15 +PetrolEngine.prototype.name = "petrol";
    1.16 +
    1.17 +function DieselEngine() {}
    1.18 +DieselEngine.prototype.name = "diesel";
    1.19 +
    1.20 +function DummyEngine() {}
    1.21 +DummyEngine.prototype.name = "dummy";
    1.22 +
    1.23 +function ActualEngine() {}
    1.24 +ActualEngine.prototype = {__proto__: Engine.prototype,
    1.25 +                          name: 'actual'};
    1.26 +
    1.27 +add_test(function test_basics() {
    1.28 +  _("We start out with a clean slate");
    1.29 +
    1.30 +  let manager = new EngineManager(Service);
    1.31 +
    1.32 +  let engines = manager.getAll();
    1.33 +  do_check_eq(engines.length, 0);
    1.34 +  do_check_eq(manager.get('dummy'), undefined);
    1.35 +
    1.36 +  _("Register an engine");
    1.37 +  manager.register(DummyEngine);
    1.38 +  let dummy = manager.get('dummy');
    1.39 +  do_check_true(dummy instanceof DummyEngine);
    1.40 +
    1.41 +  engines = manager.getAll();
    1.42 +  do_check_eq(engines.length, 1);
    1.43 +  do_check_eq(engines[0], dummy);
    1.44 +
    1.45 +  _("Register an already registered engine is ignored");
    1.46 +  manager.register(DummyEngine);
    1.47 +  do_check_eq(manager.get('dummy'), dummy);
    1.48 +
    1.49 +  _("Register multiple engines in one go");
    1.50 +  manager.register([PetrolEngine, DieselEngine]);
    1.51 +  let petrol = manager.get('petrol');
    1.52 +  let diesel = manager.get('diesel');
    1.53 +  do_check_true(petrol instanceof PetrolEngine);
    1.54 +  do_check_true(diesel instanceof DieselEngine);
    1.55 +
    1.56 +  engines = manager.getAll();
    1.57 +  do_check_eq(engines.length, 3);
    1.58 +  do_check_neq(engines.indexOf(petrol), -1);
    1.59 +  do_check_neq(engines.indexOf(diesel), -1);
    1.60 +
    1.61 +  _("Retrieve multiple engines in one go");
    1.62 +  engines = manager.get(["dummy", "diesel"]);
    1.63 +  do_check_eq(engines.length, 2);
    1.64 +  do_check_neq(engines.indexOf(dummy), -1);
    1.65 +  do_check_neq(engines.indexOf(diesel), -1);
    1.66 +
    1.67 +  _("getEnabled() only returns enabled engines");
    1.68 +  engines = manager.getEnabled();
    1.69 +  do_check_eq(engines.length, 0);
    1.70 +
    1.71 +  petrol.enabled = true;
    1.72 +  engines = manager.getEnabled();
    1.73 +  do_check_eq(engines.length, 1);
    1.74 +  do_check_eq(engines[0], petrol);
    1.75 +
    1.76 +  dummy.enabled = true;
    1.77 +  diesel.enabled = true;
    1.78 +  engines = manager.getEnabled();
    1.79 +  do_check_eq(engines.length, 3);
    1.80 +
    1.81 +  _("Unregister an engine by name");
    1.82 +  manager.unregister('dummy');
    1.83 +  do_check_eq(manager.get('dummy'), undefined);
    1.84 +  engines = manager.getAll();
    1.85 +  do_check_eq(engines.length, 2);
    1.86 +  do_check_eq(engines.indexOf(dummy), -1);
    1.87 +
    1.88 +  _("Unregister an engine by value");
    1.89 +  // manager.unregister() checks for instanceof Engine, so let's make one:
    1.90 +  manager.register(ActualEngine);
    1.91 +  let actual = manager.get('actual');
    1.92 +  do_check_true(actual instanceof ActualEngine);
    1.93 +  do_check_true(actual instanceof Engine);
    1.94 +
    1.95 +  manager.unregister(actual);
    1.96 +  do_check_eq(manager.get('actual'), undefined);
    1.97 +
    1.98 +  run_next_test();
    1.99 +});
   1.100 +

mercurial