test_objectStore_remove_values.js (2531B)
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 12 var data = [ 13 { 14 name: "inline key; key generator", 15 autoIncrement: true, 16 storedObject: { name: "Lincoln" }, 17 keyName: "id", 18 keyValue: undefined, 19 }, 20 { 21 name: "inline key; no key generator", 22 autoIncrement: false, 23 storedObject: { id: 1, name: "Lincoln" }, 24 keyName: "id", 25 keyValue: undefined, 26 }, 27 { 28 name: "out of line key; key generator", 29 autoIncrement: true, 30 storedObject: { name: "Lincoln" }, 31 keyName: undefined, 32 keyValue: undefined, 33 }, 34 { 35 name: "out of line key; no key generator", 36 autoIncrement: false, 37 storedObject: { name: "Lincoln" }, 38 keyName: null, 39 keyValue: 1, 40 }, 41 ]; 42 43 for (let i = 0; i < data.length; i++) { 44 let test = data[i]; 45 46 let request = indexedDB.open(name, i + 1); 47 request.onerror = errorHandler; 48 request.onupgradeneeded = grabEventAndContinueHandler; 49 request.onsuccess = grabEventAndContinueHandler; 50 let event = yield undefined; 51 52 let db = event.target.result; 53 db.onversionchange = function (event) { 54 event.target.close(); 55 }; 56 57 let objectStore = db.createObjectStore(test.name, { 58 keyPath: test.keyName, 59 autoIncrement: test.autoIncrement, 60 }); 61 62 request = objectStore.add(test.storedObject, test.keyValue); 63 request.onerror = errorHandler; 64 request.onsuccess = grabEventAndContinueHandler; 65 event = yield undefined; 66 67 let id = event.target.result; 68 request = objectStore.get(id); 69 request.onerror = errorHandler; 70 request.onsuccess = grabEventAndContinueHandler; 71 event = yield undefined; 72 73 // Sanity check! 74 is( 75 test.storedObject.name, 76 event.target.result.name, 77 "The correct object was stored." 78 ); 79 80 request = objectStore.delete(id); 81 request.onerror = errorHandler; 82 request.onsuccess = grabEventAndContinueHandler; 83 event = yield undefined; 84 85 // Make sure it was removed. 86 request = objectStore.get(id); 87 request.onerror = errorHandler; 88 request.onsuccess = grabEventAndContinueHandler; 89 event = yield undefined; 90 91 ok(event.target.result === undefined, "Object was deleted"); 92 93 // Wait for success 94 yield undefined; 95 } 96 97 finishTest(); 98 }