services/common/tests/unit/test_storageservice_bso.js

branch
TOR_BUG_3246
changeset 5
4ab42b5ab56c
equal deleted inserted replaced
-1:000000000000 0:6a2c81a1a22d
1 /* Any copyright is dedicated to the Public Domain.
2 * http://creativecommons.org/publicdomain/zero/1.0/ */
3
4 Cu.import("resource://services-common/storageservice.js");
5
6 function run_test() {
7 initTestLogging("Trace");
8
9 run_next_test();
10 }
11
12 add_test(function test_bso_constructor() {
13 _("Ensure created BSO instances are initialized properly.");
14
15 let bso = new BasicStorageObject();
16 do_check_eq(bso.id, null);
17 do_check_eq(bso.collection, null);
18 do_check_attribute_count(bso.data, 0);
19 do_check_eq(bso.payload, null);
20 do_check_eq(bso.modified, null);
21 do_check_eq(bso.sortindex, 0);
22 do_check_eq(bso.ttl, null);
23
24 let bso = new BasicStorageObject("foobar");
25 do_check_eq(bso.id, "foobar");
26 do_check_eq(bso.collection, null);
27 do_check_attribute_count(bso.data, 0);
28
29 let bso = new BasicStorageObject("foo", "coll");
30 do_check_eq(bso.id, "foo");
31 do_check_eq(bso.collection, "coll");
32 do_check_attribute_count(bso.data, 0);
33
34 run_next_test();
35 });
36
37 add_test(function test_bso_attributes() {
38 _("Ensure attribute getters and setters work.");
39
40 let bso = new BasicStorageObject("foobar");
41 bso.payload = "pay";
42 do_check_eq(bso.payload, "pay");
43
44 bso.modified = 35423;
45 do_check_eq(bso.modified, 35423);
46
47 bso.sortindex = 10;
48 do_check_eq(bso.sortindex, 10);
49
50 bso.ttl = 60;
51 do_check_eq(bso.ttl, 60);
52
53 run_next_test();
54 });
55
56 add_test(function test_bso_deserialize() {
57 _("Ensure that deserialize() works.");
58
59 _("A simple working test.");
60 let json = '{"id": "foobar", "payload": "pay", "modified": 1223145532}';
61 let bso = new BasicStorageObject();
62 bso.deserialize(json);
63 do_check_neq(bso, null);
64 do_check_eq(bso.id, "foobar");
65 do_check_eq(bso.payload, "pay");
66 do_check_eq(bso.modified, 1223145532);
67
68 _("Invalid JSON.");
69 let json = '{id: "foobar}';
70 let bso = new BasicStorageObject();
71 try {
72 bso.deserialize(json);
73 do_check_true(false);
74 } catch (ex) {
75 do_check_eq(ex.name, "SyntaxError");
76 }
77
78 _("Invalid key in JSON.");
79 let json = '{"id": "foo", "payload": "pay", "BADKEY": "irrelevant"}';
80 let bso = new BasicStorageObject();
81 try {
82 bso.deserialize(json);
83 do_check_true(false);
84 } catch (ex) {
85 do_check_eq(ex.name, "Error");
86 do_check_eq(ex.message.indexOf("Invalid key"), 0);
87 }
88
89 _("Loading native JS objects works.");
90 let bso = new BasicStorageObject();
91 bso.deserialize({id: "foo", payload: "pay"});
92 do_check_neq(bso, null);
93 do_check_eq(bso.id, "foo");
94 do_check_eq(bso.payload, "pay");
95
96 _("Passing invalid type is caught.");
97 let bso = new BasicStorageObject();
98 try {
99 bso.deserialize(["foo", "bar"]);
100 do_check_true(false);
101 } catch (ex) {
102 do_check_eq(ex.name, "Error");
103 }
104
105 run_next_test();
106 });
107
108 add_test(function test_bso_toJSON() {
109 _("Ensure JSON serialization works.");
110
111 let bso = new BasicStorageObject();
112 do_check_attribute_count(bso.toJSON(), 0);
113
114 bso.id = "foo";
115 bso.payload = "pay";
116 let json = bso.toJSON();
117 let original = json;
118
119 do_check_attribute_count(original, 2);
120 do_check_eq(original.id, "foo");
121 do_check_eq(original.payload, "pay");
122
123 run_next_test();
124 });

mercurial