diff options
author | Florian Dold <florian@dold.me> | 2021-02-23 19:28:37 +0100 |
---|---|---|
committer | Florian Dold <florian@dold.me> | 2021-02-23 19:28:37 +0100 |
commit | 648b0be7dd0e65f9001c1f869e710337ecd7c4e2 (patch) | |
tree | be7e2c74adde3d48246a3fbc702c1c5defd5e5eb /packages/idb-bridge/src/idb-wpt-ported/idbindex-openCursor.test.ts | |
parent | 9b9df089cfddb2f01b17ac0eaccd2192a6982fb9 (diff) | |
download | wallet-core-648b0be7dd0e65f9001c1f869e710337ecd7c4e2.tar.xz |
idb: more tests and fixes
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(); +} +}); |