diff options
Diffstat (limited to 'packages/idb-bridge/src/idb-wpt-ported/idbindex-openCursor.test.ts')
-rw-r--r-- | packages/idb-bridge/src/idb-wpt-ported/idbindex-openCursor.test.ts | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/packages/idb-bridge/src/idb-wpt-ported/idbindex-openCursor.test.ts b/packages/idb-bridge/src/idb-wpt-ported/idbindex-openCursor.test.ts new file mode 100644 index 000000000..2dcab6034 --- /dev/null +++ b/packages/idb-bridge/src/idb-wpt-ported/idbindex-openCursor.test.ts @@ -0,0 +1,80 @@ +import test from "ava"; +import { BridgeIDBCursor } from ".."; +import { BridgeIDBCursorWithValue } from "../bridge-idb"; +import { IDBDatabase } from "../idbtypes"; +import { createdb } from "./wptsupport"; + +// IDBIndex.openCursor() - throw InvalidStateError when the index is deleted +test.cb("WPT test idbindex-openCursor.htm", (t) => { + var db; + + var open_rq = createdb(t); + open_rq.onupgradeneeded = function (e: any) { + db = e.target.result; + var store = db.createObjectStore("store", { keyPath: "key" }); + var index = store.createIndex("index", "indexedProperty"); + + store.add({ key: 1, indexedProperty: "data" }); + store.deleteIndex("index"); + + t.throws( + () => { + index.openCursor(); + }, + { name: "InvalidStateError" }, + ); + + t.end(); + }; +}); + +// IDBIndex.openCursor() - throw TransactionInactiveError on aborted transaction +test.cb("WPT test idbindex-openCursor2.htm", (t) => { + var db; + + var open_rq = createdb(t); + open_rq.onupgradeneeded = function (e: any) { + db = e.target.result; + var store = db.createObjectStore("store", { keyPath: "key" }); + var index = store.createIndex("index", "indexedProperty"); + store.add({ key: 1, indexedProperty: "data" }); + }; + open_rq.onsuccess = function (e: any) { + db = e.target.result; + var tx = db.transaction("store"); + var index = tx.objectStore("store").index("index"); + tx.abort(); + + t.throws( + () => { + index.openCursor(); + }, + { name: "TransactionInactiveError" }, + ); + + t.end(); + }; +}); + + +// IDBIndex.openCursor() - throw InvalidStateError on index deleted by aborted upgrade +test.cb("WPT test idbindex-openCursor3.htm", (t) => { + var db; + +var open_rq = createdb(t); +open_rq.onupgradeneeded = function(e: any) { + db = e.target.result; + var store = db.createObjectStore("store", { keyPath: "key" }); + var index = store.createIndex("index", "indexedProperty"); + store.add({ key: 1, indexedProperty: "data" }); + + e.target.transaction.abort(); + + t.throws(() => { + console.log("index before openCursor", index); + index.openCursor(); + }, { name: "InvalidStateError"}); + + t.end(); +} +}); |