test_unique_index_update.js (1860B)
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 let request = indexedDB.open( 11 this.window ? window.location.pathname : "Splendid Test", 12 1 13 ); 14 request.onerror = errorHandler; 15 request.onupgradeneeded = grabEventAndContinueHandler; 16 request.onsuccess = grabEventAndContinueHandler; 17 18 let event = yield undefined; 19 20 let db = event.target.result; 21 22 for (let autoIncrement of [false, true]) { 23 let objectStore = db.createObjectStore(autoIncrement, { 24 keyPath: "id", 25 autoIncrement, 26 }); 27 objectStore.createIndex("", "index", { unique: true }); 28 29 for (let i = 0; i < 10; i++) { 30 objectStore.add({ id: i, index: i }); 31 } 32 } 33 34 event = yield undefined; 35 is(event.type, "success", "expect a success event"); 36 37 for (let autoIncrement of [false, true]) { 38 let objectStore = db 39 .transaction(autoIncrement, "readwrite") 40 .objectStore(autoIncrement); 41 42 request = objectStore.put({ id: 5, index: 6 }); 43 request.onsuccess = unexpectedSuccessHandler; 44 request.addEventListener("error", new ExpectError("ConstraintError", true)); 45 event = yield undefined; 46 47 event.preventDefault(); 48 49 let keyRange = IDBKeyRange.only(5); 50 51 objectStore.index("").openCursor(keyRange).onsuccess = function (event) { 52 let cursor = event.target.result; 53 ok(cursor, "Must have a cursor here"); 54 55 is(cursor.value.index, 5, "Still have the right index value"); 56 57 cursor.value.index = 6; 58 59 request = cursor.update(cursor.value); 60 request.onsuccess = unexpectedSuccessHandler; 61 request.addEventListener( 62 "error", 63 new ExpectError("ConstraintError", true) 64 ); 65 }; 66 67 yield undefined; 68 } 69 70 finishTest(); 71 }