dom/indexedDB/test/unit/test_cursor_update_updates_indexes.js

branch
TOR_BUG_9701
changeset 15
b8a032363ba2
equal deleted inserted replaced
-1:000000000000 0:5982ec34699b
1 /**
2 * Any copyright is dedicated to the Public Domain.
3 * http://creativecommons.org/publicdomain/zero/1.0/
4 */
5
6 var testGenerator = testSteps();
7
8 function testSteps()
9 {
10 const name = this.window ? window.location.pathname : "Splendid Test";
11 const START_DATA = "hi";
12 const END_DATA = "bye";
13 const objectStoreInfo = [
14 { name: "1", options: { keyPath: null }, key: 1,
15 entry: { data: START_DATA } },
16 { name: "2", options: { keyPath: "foo" },
17 entry: { foo: 1, data: START_DATA } },
18 { name: "3", options: { keyPath: null, autoIncrement: true },
19 entry: { data: START_DATA } },
20 { name: "4", options: { keyPath: "foo", autoIncrement: true },
21 entry: { data: START_DATA } },
22 ];
23
24 for (let i = 0; i < objectStoreInfo.length; i++) {
25 // Create our object stores.
26 let info = objectStoreInfo[i];
27
28 ok(true, "1");
29 request = indexedDB.open(name, i + 1);
30 request.onerror = errorHandler;
31 request.onupgradeneeded = grabEventAndContinueHandler;
32 event = yield undefined;
33
34 let db = event.target.result;
35
36 ok(true, "2");
37 let objectStore = info.hasOwnProperty("options") ?
38 db.createObjectStore(info.name, info.options) :
39 db.createObjectStore(info.name);
40
41 // Create the indexes on 'data' on the object store.
42 let index = objectStore.createIndex("data_index", "data",
43 { unique: false });
44 let uniqueIndex = objectStore.createIndex("unique_data_index", "data",
45 { unique: true });
46 // Populate the object store with one entry of data.
47 request = info.hasOwnProperty("key") ?
48 objectStore.add(info.entry, info.key) :
49 objectStore.add(info.entry);
50 request.onerror = errorHandler;
51 request.onsuccess = grabEventAndContinueHandler;
52 event = yield undefined;
53 ok(true, "3");
54
55 // Use a cursor to update 'data' to END_DATA.
56 request = objectStore.openCursor();
57 request.onerror = errorHandler;
58 request.onsuccess = grabEventAndContinueHandler;
59 event = yield undefined;
60 ok(true, "4");
61
62 let cursor = request.result;
63 let obj = cursor.value;
64 obj.data = END_DATA;
65 request = cursor.update(obj);
66 request.onerror = errorHandler;
67 request.onsuccess = grabEventAndContinueHandler;
68 event = yield undefined;
69 ok(true, "5");
70
71 // Check both indexes to make sure that they were updated.
72 request = index.get(END_DATA);
73 request.onerror = errorHandler;
74 request.onsuccess = grabEventAndContinueHandler;
75 event = yield undefined;
76 ok(true, "6");
77 ok(obj.data, event.target.result.data,
78 "Non-unique index was properly updated.");
79
80 request = uniqueIndex.get(END_DATA);
81 request.onerror = errorHandler;
82 request.onsuccess = grabEventAndContinueHandler;
83 event = yield undefined;
84
85 ok(true, "7");
86 ok(obj.data, event.target.result.data,
87 "Unique index was properly updated.");
88 db.close();
89 }
90
91 finishTest();
92 yield undefined;
93 }
94

mercurial