services/common/tests/unit/test_storageservice_bso.js

changeset 0
6474c204b198
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/services/common/tests/unit/test_storageservice_bso.js	Wed Dec 31 06:09:35 2014 +0100
     1.3 @@ -0,0 +1,124 @@
     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-common/storageservice.js");
     1.8 +
     1.9 +function run_test() {
    1.10 +  initTestLogging("Trace");
    1.11 +
    1.12 +  run_next_test();
    1.13 +}
    1.14 +
    1.15 +add_test(function test_bso_constructor() {
    1.16 +  _("Ensure created BSO instances are initialized properly.");
    1.17 +
    1.18 +  let bso = new BasicStorageObject();
    1.19 +  do_check_eq(bso.id, null);
    1.20 +  do_check_eq(bso.collection, null);
    1.21 +  do_check_attribute_count(bso.data, 0);
    1.22 +  do_check_eq(bso.payload, null);
    1.23 +  do_check_eq(bso.modified, null);
    1.24 +  do_check_eq(bso.sortindex, 0);
    1.25 +  do_check_eq(bso.ttl, null);
    1.26 +
    1.27 +  let bso = new BasicStorageObject("foobar");
    1.28 +  do_check_eq(bso.id, "foobar");
    1.29 +  do_check_eq(bso.collection, null);
    1.30 +  do_check_attribute_count(bso.data, 0);
    1.31 +
    1.32 +  let bso = new BasicStorageObject("foo", "coll");
    1.33 +  do_check_eq(bso.id, "foo");
    1.34 +  do_check_eq(bso.collection, "coll");
    1.35 +  do_check_attribute_count(bso.data, 0);
    1.36 +
    1.37 +  run_next_test();
    1.38 +});
    1.39 +
    1.40 +add_test(function test_bso_attributes() {
    1.41 +  _("Ensure attribute getters and setters work.");
    1.42 +
    1.43 +  let bso = new BasicStorageObject("foobar");
    1.44 +  bso.payload = "pay";
    1.45 +  do_check_eq(bso.payload, "pay");
    1.46 +
    1.47 +  bso.modified = 35423;
    1.48 +  do_check_eq(bso.modified, 35423);
    1.49 +
    1.50 +  bso.sortindex = 10;
    1.51 +  do_check_eq(bso.sortindex, 10);
    1.52 +
    1.53 +  bso.ttl = 60;
    1.54 +  do_check_eq(bso.ttl, 60);
    1.55 +
    1.56 +  run_next_test();
    1.57 +});
    1.58 +
    1.59 +add_test(function test_bso_deserialize() {
    1.60 +  _("Ensure that deserialize() works.");
    1.61 +
    1.62 +  _("A simple working test.");
    1.63 +  let json = '{"id": "foobar", "payload": "pay", "modified": 1223145532}';
    1.64 +  let bso = new BasicStorageObject();
    1.65 +  bso.deserialize(json);
    1.66 +  do_check_neq(bso, null);
    1.67 +  do_check_eq(bso.id, "foobar");
    1.68 +  do_check_eq(bso.payload, "pay");
    1.69 +  do_check_eq(bso.modified, 1223145532);
    1.70 +
    1.71 +  _("Invalid JSON.");
    1.72 +  let json = '{id: "foobar}';
    1.73 +  let bso = new BasicStorageObject();
    1.74 +  try {
    1.75 +    bso.deserialize(json);
    1.76 +    do_check_true(false);
    1.77 +  } catch (ex) {
    1.78 +    do_check_eq(ex.name, "SyntaxError");
    1.79 +  }
    1.80 +
    1.81 +  _("Invalid key in JSON.");
    1.82 +  let json = '{"id": "foo", "payload": "pay", "BADKEY": "irrelevant"}';
    1.83 +  let bso = new BasicStorageObject();
    1.84 +  try {
    1.85 +    bso.deserialize(json);
    1.86 +    do_check_true(false);
    1.87 +  } catch (ex) {
    1.88 +    do_check_eq(ex.name, "Error");
    1.89 +    do_check_eq(ex.message.indexOf("Invalid key"), 0);
    1.90 +  }
    1.91 +
    1.92 +  _("Loading native JS objects works.");
    1.93 +  let bso = new BasicStorageObject();
    1.94 +  bso.deserialize({id: "foo", payload: "pay"});
    1.95 +  do_check_neq(bso, null);
    1.96 +  do_check_eq(bso.id, "foo");
    1.97 +  do_check_eq(bso.payload, "pay");
    1.98 +
    1.99 +  _("Passing invalid type is caught.");
   1.100 +  let bso = new BasicStorageObject();
   1.101 +  try {
   1.102 +    bso.deserialize(["foo", "bar"]);
   1.103 +    do_check_true(false);
   1.104 +  } catch (ex) {
   1.105 +    do_check_eq(ex.name, "Error");
   1.106 +  }
   1.107 +
   1.108 +  run_next_test();
   1.109 +});
   1.110 +
   1.111 +add_test(function test_bso_toJSON() {
   1.112 +  _("Ensure JSON serialization works.");
   1.113 +
   1.114 +  let bso = new BasicStorageObject();
   1.115 +  do_check_attribute_count(bso.toJSON(), 0);
   1.116 +
   1.117 +  bso.id = "foo";
   1.118 +  bso.payload = "pay";
   1.119 +  let json = bso.toJSON();
   1.120 +  let original = json;
   1.121 +
   1.122 +  do_check_attribute_count(original, 2);
   1.123 +  do_check_eq(original.id, "foo");
   1.124 +  do_check_eq(original.payload, "pay");
   1.125 +
   1.126 +  run_next_test();
   1.127 +});

mercurial