test_overlapping_transactions.js (2746B)
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 objectStores = ["foo", "bar"]; 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 = event.target.result; 19 is(db.objectStoreNames.length, 0, "Correct objectStoreNames list"); 20 21 event.target.onsuccess = grabEventAndContinueHandler; 22 for (let i in objectStores) { 23 db.createObjectStore(objectStores[i], { autoIncrement: true }); 24 } 25 event = yield undefined; 26 27 is( 28 db.objectStoreNames.length, 29 objectStores.length, 30 "Correct objectStoreNames list" 31 ); 32 33 for (let i = 0; i < 50; i++) { 34 let stepNumber = 0; 35 36 request = db.transaction(["foo"], "readwrite").objectStore("foo").add({}); 37 request.onerror = errorHandler; 38 request.onsuccess = function (event) { 39 is(stepNumber, 1, "This callback came first"); 40 stepNumber++; 41 event.target.transaction.oncomplete = grabEventAndContinueHandler; 42 }; 43 44 request = db.transaction(["foo"], "readwrite").objectStore("foo").add({}); 45 request.onerror = errorHandler; 46 request.onsuccess = function (event) { 47 is(stepNumber, 2, "This callback came second"); 48 stepNumber++; 49 event.target.transaction.oncomplete = grabEventAndContinueHandler; 50 }; 51 52 request = db 53 .transaction(["foo", "bar"], "readwrite") 54 .objectStore("bar") 55 .add({}); 56 request.onerror = errorHandler; 57 request.onsuccess = function (event) { 58 is(stepNumber, 3, "This callback came third"); 59 stepNumber++; 60 event.target.transaction.oncomplete = grabEventAndContinueHandler; 61 }; 62 63 request = db 64 .transaction(["foo", "bar"], "readwrite") 65 .objectStore("bar") 66 .add({}); 67 request.onerror = errorHandler; 68 request.onsuccess = function (event) { 69 is(stepNumber, 4, "This callback came fourth"); 70 stepNumber++; 71 event.target.transaction.oncomplete = grabEventAndContinueHandler; 72 }; 73 74 request = db.transaction(["bar"], "readwrite").objectStore("bar").add({}); 75 request.onerror = errorHandler; 76 request.onsuccess = function (event) { 77 is(stepNumber, 5, "This callback came fifth"); 78 stepNumber++; 79 event.target.transaction.oncomplete = grabEventAndContinueHandler; 80 }; 81 82 stepNumber++; 83 yield undefined; 84 yield undefined; 85 yield undefined; 86 yield undefined; 87 yield undefined; 88 89 is(stepNumber, 6, "All callbacks received"); 90 } 91 92 finishTest(); 93 }