summaryrefslogtreecommitdiff
path: root/packages/idb-bridge/src/idb-wpt-ported/idbindex_get.test.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/idb-bridge/src/idb-wpt-ported/idbindex_get.test.ts')
-rw-r--r--packages/idb-bridge/src/idb-wpt-ported/idbindex_get.test.ts56
1 files changed, 56 insertions, 0 deletions
diff --git a/packages/idb-bridge/src/idb-wpt-ported/idbindex_get.test.ts b/packages/idb-bridge/src/idb-wpt-ported/idbindex_get.test.ts
index 8a8cb3129..7601faada 100644
--- a/packages/idb-bridge/src/idb-wpt-ported/idbindex_get.test.ts
+++ b/packages/idb-bridge/src/idb-wpt-ported/idbindex_get.test.ts
@@ -175,3 +175,59 @@ test("WPT idbindex_get6.htm", async (t) => {
});
t.pass();
});
+
+// IDBIndex.get() - throw TransactionInactiveError on aborted transaction
+test("WPT idbindex_get7.htm", async (t) => {
+ await new Promise<void>((resolve, reject) => {
+ var db: any;
+
+ var open_rq = createdb(t);
+ open_rq.onupgradeneeded = function (e: any) {
+ const db = e.target.result as IDBDatabase;
+ 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) {
+ const db = e.target.result as IDBDatabase;
+ var tx = db.transaction("store");
+ var index = tx.objectStore("store").index("index");
+ tx.abort();
+
+ t.throws(
+ function () {
+ index.get("data");
+ },
+ { name: "TransactionInactiveError" },
+ );
+ resolve();
+ };
+ });
+ t.pass();
+});
+
+// IDBIndex.get() - throw InvalidStateError on index deleted by aborted upgrade
+test("WPT idbindex_get8.htm", async (t) => {
+ await new Promise<void>((resolve, reject) => {
+ var db: any;
+
+ 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(
+ function () {
+ index.get("data");
+ },
+ { name: "InvalidStateError" },
+ );
+ resolve();
+ };
+ });
+ t.pass();
+});