Thu, 22 Jan 2015 13:21:57 +0100
Incorporate requested changes from Mozilla in review:
https://bugzilla.mozilla.org/show_bug.cgi?id=1123480#c6
1 <!DOCTYPE HTML>
2 <html>
3 <head>
4 <meta charset="utf-8">
5 <title>Test for DataStore - basic operation on a readonly db</title>
6 </head>
7 <body>
8 <div id="container"></div>
9 <script type="application/javascript;version=1.7">
11 var gStore;
13 function is(a, b, msg) {
14 alert((a === b ? 'OK' : 'KO') + ' ' + msg)
15 }
17 function ok(a, msg) {
18 alert((a ? 'OK' : 'KO')+ ' ' + msg)
19 }
21 function cbError() {
22 alert('KO error');
23 }
25 function finish() {
26 alert('DONE');
27 }
29 function testGetDataStores() {
30 navigator.getDataStores('foo').then(function(stores) {
31 is(stores.length, 1, "getDataStores('foo') returns 1 element");
32 is(stores[0].name, 'foo', 'The dataStore.name is foo');
33 is(stores[0].readOnly, false, 'The dataStore foo is not in readonly');
35 var store = stores[0];
36 ok("get" in store, "store.get exists");
37 ok("put" in store, "store.put exists");
38 ok("add" in store, "store.add exists");
39 ok("remove" in store, "store.remove exists");
40 ok("clear" in store, "store.clear exists");
41 ok("revisionId" in store, "store.revisionId exists");
42 ok("getLength" in store, "store.getLength exists");
43 ok("sync" in store, "store.sync exists");
45 gStore = stores[0];
47 runTest();
48 }, cbError);
49 }
51 function testStoreGet(id, value) {
52 gStore.get(id).then(function(what) {
53 ok(true, "store.get() retrieves data");
54 is(what, value, "store.get(" + id + ") returns " + value);
55 }, function() {
56 ok(false, "store.get(" + id + ") retrieves data");
57 }).then(runTest, cbError);
58 }
60 function testStoreAdd(value) {
61 return gStore.add(value).then(function(what) {
62 ok(true, "store.add() is called");
63 ok(what > 0, "store.add() returns something");
64 return what;
65 }, cbError);
66 }
68 function testStorePut(value, id) {
69 return gStore.put(value, id).then(function() {
70 ok(true, "store.put() is called");
71 }, cbError);
72 }
74 function testStoreGetLength(number) {
75 return gStore.getLength().then(function(n) {
76 is(number, n, "store.getLength() returns the right number");
77 }, cbError);
78 }
80 function testStoreRemove(id) {
81 return gStore.remove(id).then(function() {
82 ok(true, "store.remove() is called");
83 }, cbError);
84 }
86 function testStoreClear() {
87 return gStore.clear().then(function() {
88 ok(true, "store.clear() is called");
89 }, cbError);
90 }
92 var tests = [
93 // Test for GetDataStore
94 testGetDataStores,
96 // Unknown ID
97 function() { testStoreGet(42, undefined); },
98 function() { testStoreGet(42, undefined); }, // twice
100 // Add + Get - number
101 function() { testStoreAdd(42).then(function(id) {
102 gId = id; runTest(); }, cbError); },
103 function() { testStoreGet(gId, 42); },
105 // Add + Get - boolean
106 function() { testStoreAdd(true).then(function(id) {
107 gId = id; runTest(); }, cbError); },
108 function() { testStoreGet(gId, true); },
110 // Add + Get - string
111 function() { testStoreAdd("hello world").then(function(id) {
112 gId = id; runTest(); }, cbError); },
113 function() { testStoreGet(gId, "hello world"); },
115 // Put + Get - string
116 function() { testStorePut("hello world 2", gId).then(function() {
117 runTest(); }, cbError); },
118 function() { testStoreGet(gId, "hello world 2"); },
120 // getLength
121 function() { testStoreGetLength(3).then(function() { runTest(); }, cbError); },
123 // Remove
124 function() { testStoreRemove(gId).then(function(what) {
125 runTest(); }, cbError); },
126 function() { testStoreGet(gId, undefined); },
128 // Remove - wrong ID
129 function() { testStoreRemove(gId).then(function(what) {
130 runTest(); }, cbError); },
132 // Clear
133 function() { testStoreClear().then(function(what) {
134 runTest(); }, cbError); },
135 ];
137 function runTest() {
138 if (!tests.length) {
139 finish();
140 return;
141 }
143 var test = tests.shift();
144 test();
145 }
147 runTest();
148 </script>
149 </body>
150 </html>