test_create_index_with_integer_keys.js (1758B)
1 /** 2 * Any copyright is dedicated to the Public Domain. 3 * http://creativecommons.org/publicdomain/zero/1.0/ 4 */ 5 6 /* exported testGenerator */ 7 var testGenerator = testSteps(); 8 9 function* testSteps() { 10 const data = { 11 id: new Date().getTime(), 12 num: parseInt(Math.random() * 1000), 13 }; 14 15 let request = indexedDB.open( 16 this.window ? window.location.pathname : "Splendid Test", 17 1 18 ); 19 request.onerror = errorHandler; 20 request.onupgradeneeded = grabEventAndContinueHandler; 21 let event = yield undefined; 22 23 let db = event.target.result; 24 db.onerror = errorHandler; 25 26 event.target.onsuccess = continueToNextStep; 27 28 // Make object store, add data. 29 let objectStore = db.createObjectStore("foo", { keyPath: "id" }); 30 objectStore.add(data); 31 yield undefined; 32 db.close(); 33 34 request = indexedDB.open( 35 this.window ? window.location.pathname : "Splendid Test", 36 2 37 ); 38 request.onerror = errorHandler; 39 request.onupgradeneeded = grabEventAndContinueHandler; 40 event = yield undefined; 41 42 let db2 = event.target.result; 43 db2.onerror = errorHandler; 44 45 event.target.onsuccess = continueToNextStep; 46 47 // Create index. 48 event.target.transaction.objectStore("foo").createIndex("foo", "num"); 49 yield undefined; 50 51 // Make sure our object made it into the index. 52 let seenCount = 0; 53 54 db2 55 .transaction("foo") 56 .objectStore("foo") 57 .index("foo") 58 .openKeyCursor().onsuccess = function (event) { 59 let cursor = event.target.result; 60 if (cursor) { 61 is(cursor.key, data.num, "Good key"); 62 is(cursor.primaryKey, data.id, "Good value"); 63 seenCount++; 64 cursor.continue(); 65 } else { 66 continueToNextStep(); 67 } 68 }; 69 yield undefined; 70 71 is(seenCount, 1, "Saw our entry"); 72 73 finishTest(); 74 }