summaryrefslogtreecommitdiff
path: root/packages/idb-bridge/src/idb-wpt-ported/idbindex-openCursor.test.ts
diff options
context:
space:
mode:
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.ts80
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();
+}
+});