diff options
author | Florian Dold <florian@dold.me> | 2021-02-16 14:49:38 +0100 |
---|---|---|
committer | Florian Dold <florian@dold.me> | 2021-02-16 14:49:38 +0100 |
commit | 4d663d2e595b64e6bf1979eccc701d0f3d55d797 (patch) | |
tree | 9c125da5b84a928e4da7e2b98886878f49a23563 /packages/idb-bridge/src/idb-wpt-ported | |
parent | 987f22de02648485ec6f1d3c1558abcfa6d624a0 (diff) | |
download | wallet-core-4d663d2e595b64e6bf1979eccc701d0f3d55d797.tar.xz |
synchronous schema rollback
Diffstat (limited to 'packages/idb-bridge/src/idb-wpt-ported')
-rw-r--r-- | packages/idb-bridge/src/idb-wpt-ported/abort-in-initial-upgradeneeded.test.ts | 2 | ||||
-rw-r--r-- | packages/idb-bridge/src/idb-wpt-ported/idbindex_get.test.ts | 56 |
2 files changed, 57 insertions, 1 deletions
diff --git a/packages/idb-bridge/src/idb-wpt-ported/abort-in-initial-upgradeneeded.test.ts b/packages/idb-bridge/src/idb-wpt-ported/abort-in-initial-upgradeneeded.test.ts index da9ed2632..70f2f2b8a 100644 --- a/packages/idb-bridge/src/idb-wpt-ported/abort-in-initial-upgradeneeded.test.ts +++ b/packages/idb-bridge/src/idb-wpt-ported/abort-in-initial-upgradeneeded.test.ts @@ -9,7 +9,7 @@ test("WPT test abort-in-initial-upgradeneeded.htm", async (t) => { open_rq.onupgradeneeded = function (e) { const tgt = e.target as any; db = tgt.result; - t.assert(db.version === 2); + t.deepEqual(db.version, 2); var transaction = tgt.transaction; transaction.oncomplete = () => t.fail("unexpected transaction.complete"); transaction.onabort = function (e: any) { 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(); +}); |