aboutsummaryrefslogtreecommitdiff
path: root/packages/idb-bridge/src/idb-wpt-ported/idbobjectstore-get.test.ts
diff options
context:
space:
mode:
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.ts159
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();
+ };
+});