test_clear.js (2489B)
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 name = this.window ? window.location.pathname : "Splendid Test"; 11 const entryCount = 1000; 12 13 let request = indexedDB.open(name, 1); 14 request.onerror = errorHandler; 15 request.onupgradeneeded = grabEventAndContinueHandler; 16 let event = yield undefined; 17 18 let db = request.result; 19 20 event.target.onsuccess = continueToNextStep; 21 22 let objectStore = db.createObjectStore("foo", { autoIncrement: true }); 23 24 let firstKey; 25 for (let i = 0; i < entryCount; i++) { 26 request = objectStore.add({}); 27 request.onerror = errorHandler; 28 if (!i) { 29 request.onsuccess = function (event) { 30 firstKey = event.target.result; 31 }; 32 } 33 } 34 yield undefined; 35 36 isnot(firstKey, undefined, "got first key"); 37 38 let seenEntryCount = 0; 39 40 request = db.transaction("foo").objectStore("foo").openCursor(); 41 request.onerror = errorHandler; 42 request.onsuccess = function (event) { 43 let cursor = event.target.result; 44 if (cursor) { 45 seenEntryCount++; 46 cursor.continue(); 47 } else { 48 continueToNextStep(); 49 } 50 }; 51 yield undefined; 52 53 is(seenEntryCount, entryCount, "Correct entry count"); 54 55 try { 56 db.transaction("foo").objectStore("foo").clear(); 57 ok(false, "clear should throw on READ_ONLY transactions"); 58 } catch (e) { 59 ok(true, "clear should throw on READ_ONLY transactions"); 60 } 61 62 request = db.transaction("foo", "readwriteflush").objectStore("foo").clear(); 63 request.onerror = errorHandler; 64 request.onsuccess = grabEventAndContinueHandler; 65 event = yield undefined; 66 67 ok(event.target.result === undefined, "Correct event.target.result"); 68 ok(request.result === undefined, "Correct request.result"); 69 ok(request === event.target, "Correct event.target"); 70 71 request = db.transaction("foo").objectStore("foo").openCursor(); 72 request.onerror = errorHandler; 73 request.onsuccess = function () { 74 let cursor = request.result; 75 if (cursor) { 76 ok(false, "Shouldn't have any entries"); 77 } 78 continueToNextStep(); 79 }; 80 yield undefined; 81 82 request = db.transaction("foo", "readwrite").objectStore("foo").add({}); 83 request.onerror = errorHandler; 84 request.onsuccess = grabEventAndContinueHandler; 85 event = yield undefined; 86 87 isnot(event.target.result, firstKey, "Got a different key"); 88 89 finishTest(); 90 }