summaryrefslogtreecommitdiff
path: root/packages/idb-bridge/src/idb-wpt-ported/idbcursor-reused.test.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/idb-bridge/src/idb-wpt-ported/idbcursor-reused.test.ts')
-rw-r--r--packages/idb-bridge/src/idb-wpt-ported/idbcursor-reused.test.ts76
1 files changed, 76 insertions, 0 deletions
diff --git a/packages/idb-bridge/src/idb-wpt-ported/idbcursor-reused.test.ts b/packages/idb-bridge/src/idb-wpt-ported/idbcursor-reused.test.ts
new file mode 100644
index 000000000..44a647dc8
--- /dev/null
+++ b/packages/idb-bridge/src/idb-wpt-ported/idbcursor-reused.test.ts
@@ -0,0 +1,76 @@
+import test from "ava";
+import { createdb } from "./wptsupport";
+
+test("WPT idbcursor-reused.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 os = db.createObjectStore("test");
+
+ os.add("data", "k");
+ os.add("data2", "k2");
+ };
+
+ open_rq.onsuccess = function (e) {
+ var cursor: any;
+ var count = 0;
+ var rq = db.transaction("test").objectStore("test").openCursor();
+
+ rq.onsuccess = function (e: any) {
+ switch (count) {
+ case 0:
+ cursor = e.target.result;
+
+ t.deepEqual(cursor.value, "data", "prequisite cursor.value");
+ cursor.custom_cursor_value = 1;
+ e.target.custom_request_value = 2;
+
+ cursor.continue();
+ break;
+
+ case 1:
+ t.deepEqual(cursor.value, "data2", "prequisite cursor.value");
+ t.deepEqual(cursor.custom_cursor_value, 1, "custom cursor value");
+ t.deepEqual(
+ e.target.custom_request_value,
+ 2,
+ "custom request value",
+ );
+
+ cursor.advance(1);
+ break;
+
+ case 2:
+ t.false(!!e.target.result, "got cursor");
+ t.deepEqual(cursor.custom_cursor_value, 1, "custom cursor value");
+ t.deepEqual(
+ e.target.custom_request_value,
+ 2,
+ "custom request value",
+ );
+ break;
+ }
+ count++;
+ };
+
+ rq.transaction.oncomplete = function () {
+ t.deepEqual(count, 3, "cursor callback runs");
+ t.deepEqual(
+ rq.custom_request_value,
+ 2,
+ "variable placed on old IDBRequest",
+ );
+ t.deepEqual(
+ cursor.custom_cursor_value,
+ 1,
+ "custom cursor value (transaction.complete)",
+ );
+ resolve();
+ };
+ };
+ });
+ t.pass();
+});