summaryrefslogtreecommitdiff
path: root/packages/idb-bridge/src/idb-wpt-ported/close-in-upgradeneeded.test.ts
diff options
context:
space:
mode:
authorFlorian Dold <florian@dold.me>2021-02-22 20:49:36 +0100
committerFlorian Dold <florian@dold.me>2021-02-22 20:49:36 +0100
commitf0d820d8c6492cc490e4128f744544999933146b (patch)
tree87b9361cba6f469e48b912804d076f8940a13736 /packages/idb-bridge/src/idb-wpt-ported/close-in-upgradeneeded.test.ts
parent3eced74a88de43ab9afe542fcce20a8db8e3fe60 (diff)
downloadwallet-core-f0d820d8c6492cc490e4128f744544999933146b.tar.gz
wallet-core-f0d820d8c6492cc490e4128f744544999933146b.tar.bz2
wallet-core-f0d820d8c6492cc490e4128f744544999933146b.zip
idb: fix 'prevunique' iteration and other bugs
Diffstat (limited to 'packages/idb-bridge/src/idb-wpt-ported/close-in-upgradeneeded.test.ts')
-rw-r--r--packages/idb-bridge/src/idb-wpt-ported/close-in-upgradeneeded.test.ts44
1 files changed, 44 insertions, 0 deletions
diff --git a/packages/idb-bridge/src/idb-wpt-ported/close-in-upgradeneeded.test.ts b/packages/idb-bridge/src/idb-wpt-ported/close-in-upgradeneeded.test.ts
new file mode 100644
index 000000000..96abe3918
--- /dev/null
+++ b/packages/idb-bridge/src/idb-wpt-ported/close-in-upgradeneeded.test.ts
@@ -0,0 +1,44 @@
+import test from "ava";
+import { BridgeIDBCursor } from "..";
+import { BridgeIDBCursorWithValue } from "../bridge-idb";
+import { createdb } from "./wptsupport";
+
+// When db.close is called in upgradeneeded, the db is cleaned up on refresh
+test.cb("WPT test close-in-upgradeneeded.htm", (t) => {
+ var db: any;
+ var open_rq = createdb(t);
+ var sawTransactionComplete = false;
+
+ open_rq.onupgradeneeded = function (e: any) {
+ db = e.target.result;
+ t.deepEqual(db.version, 1);
+
+ db.createObjectStore("os");
+ db.close();
+
+ e.target.transaction.oncomplete = function () {
+ sawTransactionComplete = true;
+ };
+ };
+
+ open_rq.onerror = function (e: any) {
+ t.true(sawTransactionComplete, "saw transaction.complete");
+
+ t.deepEqual(e.target.error.name, "AbortError");
+ t.deepEqual(e.result, undefined);
+
+ t.true(!!db);
+ t.deepEqual(db.version, 1);
+ t.deepEqual(db.objectStoreNames.length, 1);
+ t.throws(
+ () => {
+ db.transaction("os");
+ },
+ {
+ name: "InvalidStateError",
+ },
+ );
+
+ t.end();
+ };
+});