diff options
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.ts | 44 |
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(); + }; +}); |