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 +});