diff options
author | Florian Dold <florian@dold.me> | 2021-02-23 19:28:37 +0100 |
---|---|---|
committer | Florian Dold <florian@dold.me> | 2021-02-23 19:28:37 +0100 |
commit | 648b0be7dd0e65f9001c1f869e710337ecd7c4e2 (patch) | |
tree | be7e2c74adde3d48246a3fbc702c1c5defd5e5eb /packages/idb-bridge/src/idb-wpt-ported/idbobjectstore-get.test.ts | |
parent | 9b9df089cfddb2f01b17ac0eaccd2192a6982fb9 (diff) | |
download | wallet-core-648b0be7dd0e65f9001c1f869e710337ecd7c4e2.tar.xz |
idb: more tests and fixes
Diffstat (limited to 'packages/idb-bridge/src/idb-wpt-ported/idbobjectstore-get.test.ts')
-rw-r--r-- | packages/idb-bridge/src/idb-wpt-ported/idbobjectstore-get.test.ts | 159 |
1 files changed, 159 insertions, 0 deletions
diff --git a/packages/idb-bridge/src/idb-wpt-ported/idbobjectstore-get.test.ts b/packages/idb-bridge/src/idb-wpt-ported/idbobjectstore-get.test.ts new file mode 100644 index 000000000..0c9d30b7d --- /dev/null +++ b/packages/idb-bridge/src/idb-wpt-ported/idbobjectstore-get.test.ts @@ -0,0 +1,159 @@ +import test from "ava"; +import { BridgeIDBKeyRange, BridgeIDBRequest } from ".."; +import { IDBDatabase } from "../idbtypes"; +import { createdb } from "./wptsupport"; + +// IDBObjectStore.get() - key is a number +test.cb("WPT idbobjectstore_get.htm", (t) => { + var db: any, + record = { key: 3.14159265, property: "data" }; + + var open_rq = createdb(t); + open_rq.onupgradeneeded = function (e: any) { + db = e.target.result; + db.createObjectStore("store", { keyPath: "key" }).add(record); + }; + + open_rq.onsuccess = function (e: any) { + var rq = db.transaction("store").objectStore("store").get(record.key); + + rq.onsuccess = function (e: any) { + t.deepEqual(e.target.result.key, record.key); + t.deepEqual(e.target.result.property, record.property); + t.end(); + }; + }; +}); + +// IDBObjectStore.get() - key is a string +test.cb("WPT idbobjectstore_get2.htm", (t) => { + var db: any, + record = { key: "this is a key that's a string", property: "data" }; + + var open_rq = createdb(t); + open_rq.onupgradeneeded = function (e: any) { + db = e.target.result; + db.createObjectStore("store", { keyPath: "key" }).add(record); + }; + + open_rq.onsuccess = function (e: any) { + var rq = db.transaction("store").objectStore("store").get(record.key); + + rq.onsuccess = function (e: any) { + t.deepEqual(e.target.result.key, record.key); + t.deepEqual(e.target.result.property, record.property); + t.end(); + }; + }; +}); + +// IDBObjectStore.get() - key is a date +test.cb("WPT idbobjectstore_get3.htm", (t) => { + var db: any; + const record = { key: new Date(), property: "data" }; + + var open_rq = createdb(t); + open_rq.onupgradeneeded = function (e: any) { + db = e.target.result; + db.createObjectStore("store", { keyPath: "key" }).add(record); + }; + + open_rq.onsuccess = function (e: any) { + var rq = db.transaction("store").objectStore("store").get(record.key); + + rq.onsuccess = function (e: any) { + t.deepEqual(e.target.result.key.valueOf(), record.key.valueOf()); + t.deepEqual(e.target.result.property, record.property); + t.end(); + }; + }; +}); + +// IDBObjectStore.get() - attempt to retrieve a record that doesn't exist +test.cb("WPT idbobjectstore_get4.htm", (t) => { + var db: any; + + var open_rq = createdb(t); + open_rq.onupgradeneeded = function (e: any) { + db = e.target.result; + var rq = db.createObjectStore("store", { keyPath: "key" }).get(1); + rq.onsuccess = function (e: any) { + t.deepEqual(e.target.results, undefined); + setTimeout(function () { + t.end(); + }, 10); + }; + }; + + open_rq.onsuccess = function () {}; +}); + +// IDBObjectStore.get() - returns the record with the first key in the range +test.cb("WPT idbobjectstore_get5.htm", (t) => { + var db: any; + var open_rq = createdb(t); + + open_rq.onupgradeneeded = function (e: any) { + db = e.target.result; + var os = db.createObjectStore("store"); + + for (var i = 0; i < 10; i++) os.add("data" + i, i); + }; + + open_rq.onsuccess = function (e: any) { + db + .transaction("store") + .objectStore("store") + .get(BridgeIDBKeyRange.bound(3, 6)).onsuccess = function (e: any) { + t.deepEqual(e.target.result, "data3", "get(3-6)"); + t.end(); + }; + }; +}); + +// IDBObjectStore.get() - throw TransactionInactiveError on aborted transaction +test.cb("WPT idbobjectstore_get6.htm", (t) => { + var db: any; + + var open_rq = createdb(t); + open_rq.onupgradeneeded = function (e: any) { + db = e.target.result; + db.createObjectStore("store", { keyPath: "key" }); + }; + + open_rq.onsuccess = function (e: any) { + var store = db.transaction("store").objectStore("store"); + store.transaction.abort(); + t.throws( + function () { + store.get(1); + }, + { name: "TransactionInactiveError" }, + "throw TransactionInactiveError on aborted transaction.", + ); + t.end(); + }; +}); + +// IDBObjectStore.get() - throw DataError when using invalid key +test.cb("WPT idbobjectstore_get7.htm", (t) => { + var db: any; + + var open_rq = createdb(t); + open_rq.onupgradeneeded = function (e: any) { + db = e.target.result; + db.createObjectStore("store", { keyPath: "key" }); + }; + + open_rq.onsuccess = function (e: any) { + var store = db.transaction("store").objectStore("store"); + t.throws( + function () { + store.get(null); + }, + { name: "DataError" }, + "throw DataError when using invalid key.", + ); + t.end(); + }; +}); |