diff options
Diffstat (limited to 'packages/idb-bridge/src/idb-wpt-ported')
27 files changed, 2074 insertions, 1942 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 3b65a9033..bbbcf9b94 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 @@ -1,5 +1,5 @@ import test from "ava"; -import { createdb } from "./wptsupport"; +import { createdb } from "./wptsupport.js"; test("WPT test abort-in-initial-upgradeneeded.htm", async (t) => { await new Promise<void>((resolve, reject) => { 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 index 96abe3918..723a0abb5 100644 --- 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 @@ -1,44 +1,44 @@ import test from "ava"; -import { BridgeIDBCursor } from ".."; -import { BridgeIDBCursorWithValue } from "../bridge-idb"; -import { createdb } from "./wptsupport"; +import { createdb } from "./wptsupport.js"; // 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(); +test("WPT test close-in-upgradeneeded.htm", (t) => { + return new Promise((resolve, reject) => { + 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; + }; + }; - 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", + }, + ); + + resolve(); }; - }; - - 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(); - }; + }); }); diff --git a/packages/idb-bridge/src/idb-wpt-ported/cursor-overloads.test.ts b/packages/idb-bridge/src/idb-wpt-ported/cursor-overloads.test.ts index c4bce8743..db2cdbca8 100644 --- a/packages/idb-bridge/src/idb-wpt-ported/cursor-overloads.test.ts +++ b/packages/idb-bridge/src/idb-wpt-ported/cursor-overloads.test.ts @@ -1,117 +1,130 @@ import test from "ava"; -import { BridgeIDBCursor, BridgeIDBKeyRange } from ".."; -import { BridgeIDBCursorWithValue } from "../bridge-idb"; -import { IDBRequest } from "../idbtypes"; -import { createdb } from "./wptsupport"; +import { BridgeIDBKeyRange } from "../bridge-idb.js"; +import { IDBRequest } from "../idbtypes.js"; +import { createdb } from "./wptsupport.js"; const IDBKeyRange = BridgeIDBKeyRange; // Validate the overloads of IDBObjectStore.openCursor(), // IDBIndex.openCursor() and IDBIndex.openKeyCursor() -test.cb("WPT test cursor-overloads.htm", (t) => { - var db: any, store: any, index: any; +test("WPT test cursor-overloads.htm", (t) => { + return new Promise((resolve, reject) => { + var db: any, store: any, index: any; - var request = createdb(t); - request.onupgradeneeded = function (e: any) { - db = request.result; - store = db.createObjectStore("store"); - index = store.createIndex("index", "value"); - store.put({ value: 0 }, 0); - const trans = request.transaction!; - trans.oncomplete = verifyOverloads; - }; + var request = createdb(t); + request.onupgradeneeded = function (e: any) { + db = request.result; + store = db.createObjectStore("store"); + index = store.createIndex("index", "value"); + store.put({ value: 0 }, 0); + const trans = request.transaction!; + trans.oncomplete = verifyOverloads; + }; - async function verifyOverloads() { - const trans = db.transaction("store"); - store = trans.objectStore("store"); - index = store.index("index"); + async function verifyOverloads() { + const trans = db.transaction("store"); + store = trans.objectStore("store"); + index = store.index("index"); - await checkCursorDirection(store.openCursor(), "next"); - await checkCursorDirection(store.openCursor(0), "next"); - await checkCursorDirection(store.openCursor(0, "next"), "next"); - await checkCursorDirection(store.openCursor(0, "nextunique"), "nextunique"); - await checkCursorDirection(store.openCursor(0, "prev"), "prev"); - await checkCursorDirection(store.openCursor(0, "prevunique"), "prevunique"); + await checkCursorDirection(store.openCursor(), "next"); + await checkCursorDirection(store.openCursor(0), "next"); + await checkCursorDirection(store.openCursor(0, "next"), "next"); + await checkCursorDirection( + store.openCursor(0, "nextunique"), + "nextunique", + ); + await checkCursorDirection(store.openCursor(0, "prev"), "prev"); + await checkCursorDirection( + store.openCursor(0, "prevunique"), + "prevunique", + ); - await checkCursorDirection(store.openCursor(IDBKeyRange.only(0)), "next"); - await checkCursorDirection( - store.openCursor(BridgeIDBKeyRange.only(0), "next"), - "next", - ); - await checkCursorDirection( - store.openCursor(IDBKeyRange.only(0), "nextunique"), - "nextunique", - ); - await checkCursorDirection( - store.openCursor(IDBKeyRange.only(0), "prev"), - "prev", - ); - await checkCursorDirection( - store.openCursor(IDBKeyRange.only(0), "prevunique"), - "prevunique", - ); + await checkCursorDirection(store.openCursor(IDBKeyRange.only(0)), "next"); + await checkCursorDirection( + store.openCursor(BridgeIDBKeyRange.only(0), "next"), + "next", + ); + await checkCursorDirection( + store.openCursor(IDBKeyRange.only(0), "nextunique"), + "nextunique", + ); + await checkCursorDirection( + store.openCursor(IDBKeyRange.only(0), "prev"), + "prev", + ); + await checkCursorDirection( + store.openCursor(IDBKeyRange.only(0), "prevunique"), + "prevunique", + ); - await checkCursorDirection(index.openCursor(), "next"); - await checkCursorDirection(index.openCursor(0), "next"); - await checkCursorDirection(index.openCursor(0, "next"), "next"); - await checkCursorDirection(index.openCursor(0, "nextunique"), "nextunique"); - await checkCursorDirection(index.openCursor(0, "prev"), "prev"); - await checkCursorDirection(index.openCursor(0, "prevunique"), "prevunique"); + await checkCursorDirection(index.openCursor(), "next"); + await checkCursorDirection(index.openCursor(0), "next"); + await checkCursorDirection(index.openCursor(0, "next"), "next"); + await checkCursorDirection( + index.openCursor(0, "nextunique"), + "nextunique", + ); + await checkCursorDirection(index.openCursor(0, "prev"), "prev"); + await checkCursorDirection( + index.openCursor(0, "prevunique"), + "prevunique", + ); - await checkCursorDirection(index.openCursor(IDBKeyRange.only(0)), "next"); - await checkCursorDirection( - index.openCursor(IDBKeyRange.only(0), "next"), - "next", - ); - await checkCursorDirection( - index.openCursor(IDBKeyRange.only(0), "nextunique"), - "nextunique", - ); - await checkCursorDirection( - index.openCursor(IDBKeyRange.only(0), "prev"), - "prev", - ); - await checkCursorDirection( - index.openCursor(IDBKeyRange.only(0), "prevunique"), - "prevunique", - ); + await checkCursorDirection(index.openCursor(IDBKeyRange.only(0)), "next"); + await checkCursorDirection( + index.openCursor(IDBKeyRange.only(0), "next"), + "next", + ); + await checkCursorDirection( + index.openCursor(IDBKeyRange.only(0), "nextunique"), + "nextunique", + ); + await checkCursorDirection( + index.openCursor(IDBKeyRange.only(0), "prev"), + "prev", + ); + await checkCursorDirection( + index.openCursor(IDBKeyRange.only(0), "prevunique"), + "prevunique", + ); - await checkCursorDirection(index.openKeyCursor(), "next"); - await checkCursorDirection(index.openKeyCursor(0), "next"); - await checkCursorDirection(index.openKeyCursor(0, "next"), "next"); - await checkCursorDirection( - index.openKeyCursor(0, "nextunique"), - "nextunique", - ); - await checkCursorDirection(index.openKeyCursor(0, "prev"), "prev"); - await checkCursorDirection( - index.openKeyCursor(0, "prevunique"), - "prevunique", - ); + await checkCursorDirection(index.openKeyCursor(), "next"); + await checkCursorDirection(index.openKeyCursor(0), "next"); + await checkCursorDirection(index.openKeyCursor(0, "next"), "next"); + await checkCursorDirection( + index.openKeyCursor(0, "nextunique"), + "nextunique", + ); + await checkCursorDirection(index.openKeyCursor(0, "prev"), "prev"); + await checkCursorDirection( + index.openKeyCursor(0, "prevunique"), + "prevunique", + ); - await checkCursorDirection( - index.openKeyCursor(IDBKeyRange.only(0)), - "next", - ); - await checkCursorDirection( - index.openKeyCursor(IDBKeyRange.only(0), "next"), - "next", - ); - await checkCursorDirection( - index.openKeyCursor(IDBKeyRange.only(0), "nextunique"), - "nextunique", - ); - await checkCursorDirection( - index.openKeyCursor(IDBKeyRange.only(0), "prev"), - "prev", - ); - await checkCursorDirection( - index.openKeyCursor(IDBKeyRange.only(0), "prevunique"), - "prevunique", - ); + await checkCursorDirection( + index.openKeyCursor(IDBKeyRange.only(0)), + "next", + ); + await checkCursorDirection( + index.openKeyCursor(IDBKeyRange.only(0), "next"), + "next", + ); + await checkCursorDirection( + index.openKeyCursor(IDBKeyRange.only(0), "nextunique"), + "nextunique", + ); + await checkCursorDirection( + index.openKeyCursor(IDBKeyRange.only(0), "prev"), + "prev", + ); + await checkCursorDirection( + index.openKeyCursor(IDBKeyRange.only(0), "prevunique"), + "prevunique", + ); - t.end(); - } + resolve(); + } + }); function checkCursorDirection( request: IDBRequest, diff --git a/packages/idb-bridge/src/idb-wpt-ported/event-dispatch-active-flag.test.ts b/packages/idb-bridge/src/idb-wpt-ported/event-dispatch-active-flag.test.ts index b8151f465..acc2a7578 100644 --- a/packages/idb-bridge/src/idb-wpt-ported/event-dispatch-active-flag.test.ts +++ b/packages/idb-bridge/src/idb-wpt-ported/event-dispatch-active-flag.test.ts @@ -1,11 +1,10 @@ import test from "ava"; -import { BridgeIDBRequest } from ".."; +import { BridgeIDBRequest } from "../bridge-idb.js"; import { - createdb, indexeddb_test, is_transaction_active, keep_alive, -} from "./wptsupport"; +} from "./wptsupport.js"; test("WPT test abort-in-initial-upgradeneeded.htm (subtest 1)", async (t) => { // Transactions are active during success handlers diff --git a/packages/idb-bridge/src/idb-wpt-ported/idbcursor-advance-index.test.ts b/packages/idb-bridge/src/idb-wpt-ported/idbcursor-advance-index.test.ts index fac047990..108e7c91c 100644 --- a/packages/idb-bridge/src/idb-wpt-ported/idbcursor-advance-index.test.ts +++ b/packages/idb-bridge/src/idb-wpt-ported/idbcursor-advance-index.test.ts @@ -1,8 +1,6 @@ import test from "ava"; -import { BridgeIDBCursor } from ".."; -import { BridgeIDBRequest } from "../bridge-idb"; -import { InvalidStateError } from "../util/errors"; -import { createdb } from "./wptsupport"; +import { BridgeIDBCursor,BridgeIDBRequest } from "../bridge-idb.js"; +import { createdb } from "./wptsupport.js"; test("WPT test idbcursor_advance_index.htm", async (t) => { await new Promise<void>((resolve, reject) => { diff --git a/packages/idb-bridge/src/idb-wpt-ported/idbcursor-continue-index.test.ts b/packages/idb-bridge/src/idb-wpt-ported/idbcursor-continue-index.test.ts index 9b96a2e91..f8b3a0f01 100644 --- a/packages/idb-bridge/src/idb-wpt-ported/idbcursor-continue-index.test.ts +++ b/packages/idb-bridge/src/idb-wpt-ported/idbcursor-continue-index.test.ts @@ -1,385 +1,401 @@ import test from "ava"; -import { BridgeIDBCursor } from ".."; -import { BridgeIDBCursorWithValue } from "../bridge-idb"; -import { createdb } from "./wptsupport"; - -test.cb("WPT test idbcursor_continue_index.htm", (t) => { - var db: any; - let count = 0; - const records = [ - { pKey: "primaryKey_0", iKey: "indexKey_0" }, - { pKey: "primaryKey_1", iKey: "indexKey_1" }, - { pKey: "primaryKey_1-2", iKey: "indexKey_1" }, - ]; - - var open_rq = createdb(t); - open_rq.onupgradeneeded = function (e: any) { - db = e.target.result; - var objStore = db.createObjectStore("test", { keyPath: "pKey" }); - - objStore.createIndex("index", "iKey"); - - for (var i = 0; i < records.length; i++) objStore.add(records[i]); - }; - - open_rq.onsuccess = function (e: any) { - var cursor_rq = db - .transaction("test") - .objectStore("test") - .index("index") - .openCursor(); - - cursor_rq.onsuccess = function (e: any) { - var cursor = e.target.result; - if (!cursor) { - t.deepEqual(count, records.length, "cursor run count"); - t.end(); - return; - } +import { BridgeIDBCursor, BridgeIDBCursorWithValue } from "../bridge-idb.js"; +import { createdb } from "./wptsupport.js"; + +test("WPT test idbcursor_continue_index.htm", (t) => { + return new Promise((resolve, reject) => { + var db: any; + let count = 0; + const records = [ + { pKey: "primaryKey_0", iKey: "indexKey_0" }, + { pKey: "primaryKey_1", iKey: "indexKey_1" }, + { pKey: "primaryKey_1-2", iKey: "indexKey_1" }, + ]; + + var open_rq = createdb(t); + open_rq.onupgradeneeded = function (e: any) { + db = e.target.result; + var objStore = db.createObjectStore("test", { keyPath: "pKey" }); - var record = cursor.value; - t.deepEqual(record.pKey, records[count].pKey, "primary key"); - t.deepEqual(record.iKey, records[count].iKey, "index key"); + objStore.createIndex("index", "iKey"); - cursor.continue(); - count++; + for (var i = 0; i < records.length; i++) objStore.add(records[i]); }; - }; -}); -// IDBCursor.continue() - index - attempt to pass a key parameter that is not a valid key -test.cb("WPT idbcursor-continue-index2.htm", (t) => { - var db: any; - let records = [ - { pKey: "primaryKey_0", iKey: "indexKey_0" }, - { pKey: "primaryKey_1", iKey: "indexKey_1" }, - ]; - - var open_rq = createdb(t); - open_rq.onupgradeneeded = function (e: any) { - db = e.target.result; - var objStore = db.createObjectStore("test", { keyPath: "pKey" }); - - objStore.createIndex("index", "iKey"); - - for (var i = 0; i < records.length; i++) objStore.add(records[i]); - }; - - open_rq.onsuccess = function (e: any) { - var cursor_rq = db - .transaction("test") - .objectStore("test") - .index("index") - .openCursor(); - - cursor_rq.onsuccess = function (e: any) { - var cursor = e.target.result; - - t.throws( - () => { - cursor.continue({ foo: "bar" }); - }, - { name: "DataError" }, - ); - - t.true(cursor instanceof BridgeIDBCursorWithValue, "cursor"); - - t.end(); + open_rq.onsuccess = function (e: any) { + var cursor_rq = db + .transaction("test") + .objectStore("test") + .index("index") + .openCursor(); + + cursor_rq.onsuccess = function (e: any) { + var cursor = e.target.result; + if (!cursor) { + t.deepEqual(count, records.length, "cursor run count"); + resolve(); + return; + } + + var record = cursor.value; + t.deepEqual(record.pKey, records[count].pKey, "primary key"); + t.deepEqual(record.iKey, records[count].iKey, "index key"); + + cursor.continue(); + count++; + }; }; - }; + }); }); -// IDBCursor.continue() - index - attempt to iterate to the previous -// record when the direction is set for the next record -test.cb("WPT idbcursor-continue-index3.htm", (t) => { - var db: any; - const records = [ - { pKey: "primaryKey_0", iKey: "indexKey_0" }, - { pKey: "primaryKey_1", iKey: "indexKey_1" }, - ]; - - var open_rq = createdb(t); - open_rq.onupgradeneeded = function (e: any) { - db = e.target.result; - var objStore = db.createObjectStore("test", { keyPath: "pKey" }); - - objStore.createIndex("index", "iKey"); - - for (var i = 0; i < records.length; i++) objStore.add(records[i]); - }; - - open_rq.onsuccess = function (e: any) { - var count = 0; - var cursor_rq = db - .transaction("test") - .objectStore("test") - .index("index") - .openCursor(undefined, "next"); // XXX: Fx has issue with "undefined" - - cursor_rq.onsuccess = function (e: any) { - var cursor = e.target.result; - if (!cursor) { - t.deepEqual(count, 2, "ran number of times"); - t.end(); - return; - } +// IDBCursor.continue() - index - attempt to pass a key parameter that is not a valid key +test("WPT idbcursor-continue-index2.htm", (t) => { + return new Promise((resolve, reject) => { + var db: any; + let records = [ + { pKey: "primaryKey_0", iKey: "indexKey_0" }, + { pKey: "primaryKey_1", iKey: "indexKey_1" }, + ]; - // First time checks key equal, second time checks key less than - t.throws( - () => { - cursor.continue(records[0].iKey); - }, - { name: "DataError" }, - ); + var open_rq = createdb(t); + open_rq.onupgradeneeded = function (e: any) { + db = e.target.result; + var objStore = db.createObjectStore("test", { keyPath: "pKey" }); - cursor.continue(); + objStore.createIndex("index", "iKey"); - count++; + for (var i = 0; i < records.length; i++) objStore.add(records[i]); }; - }; -}); -// IDBCursor.continue() - index - attempt to iterate to the next -// record when the direction is set for the previous record -test.cb("WPT idbcursor-continue-index4.htm", (t) => { - var db: any; - const records = [ - { pKey: "primaryKey_0", iKey: "indexKey_0" }, - { pKey: "primaryKey_1", iKey: "indexKey_1" }, - { pKey: "primaryKey_2", iKey: "indexKey_2" }, - ]; - - var open_rq = createdb(t); - open_rq.onupgradeneeded = function (e: any) { - db = e.target.result; - var objStore = db.createObjectStore("test", { keyPath: "pKey" }); - - objStore.createIndex("index", "iKey"); - - for (var i = 0; i < records.length; i++) objStore.add(records[i]); - }; - - open_rq.onsuccess = function (e: any) { - var count = 0, - cursor_rq = db + open_rq.onsuccess = function (e: any) { + var cursor_rq = db .transaction("test") .objectStore("test") .index("index") - .openCursor(undefined, "prev"); // XXX Fx issues w undefined - - cursor_rq.onsuccess = function (e: any) { - var cursor = e.target.result, - record = cursor.value; - - switch (count) { - case 0: - t.deepEqual(record.pKey, records[2].pKey, "first pKey"); - t.deepEqual(record.iKey, records[2].iKey, "first iKey"); - cursor.continue(); - break; - - case 1: - t.deepEqual(record.pKey, records[1].pKey, "second pKey"); - t.deepEqual(record.iKey, records[1].iKey, "second iKey"); - t.throws( - () => { - cursor.continue("indexKey_2"); - }, - { name: "DataError" }, - ); - t.end(); - break; - - default: - t.fail("Unexpected count value: " + count); - } + .openCursor(); + + cursor_rq.onsuccess = function (e: any) { + var cursor = e.target.result; + + t.throws( + () => { + cursor.continue({ foo: "bar" }); + }, + { name: "DataError" }, + ); + + t.true(cursor instanceof BridgeIDBCursorWithValue, "cursor"); - count++; + resolve(); + }; }; - }; + }); }); -// IDBCursor.continue() - index - iterate using 'prevunique' -test.cb("WPT idbcursor-continue-index5.htm", (t) => { - var db: any; - const records = [ - { pKey: "primaryKey_0", iKey: "indexKey_0" }, - { pKey: "primaryKey_1", iKey: "indexKey_1" }, - { pKey: "primaryKey_1-2", iKey: "indexKey_1" }, - { pKey: "primaryKey_2", iKey: "indexKey_2" }, - ]; - const expected = [ - { pKey: "primaryKey_2", iKey: "indexKey_2" }, - { pKey: "primaryKey_1", iKey: "indexKey_1" }, - { pKey: "primaryKey_0", iKey: "indexKey_0" }, - ]; - - var open_rq = createdb(t); - open_rq.onupgradeneeded = function (e: any) { - db = e.target.result; - var objStore = db.createObjectStore("test", { keyPath: "pKey" }); - - objStore.createIndex("index", "iKey"); - - for (var i = 0; i < records.length; i++) objStore.add(records[i]); - }; - - open_rq.onsuccess = function (e: any) { - var count = 0, - cursor_rq = db - .transaction("test") - .objectStore("test") - .index("index") - .openCursor(undefined, "prevunique"); +// IDBCursor.continue() - index - attempt to iterate to the previous +// record when the direction is set for the next record +test("WPT idbcursor-continue-index3.htm", (t) => { + return new Promise((resolve, reject) => { + var db: any; + const records = [ + { pKey: "primaryKey_0", iKey: "indexKey_0" }, + { pKey: "primaryKey_1", iKey: "indexKey_1" }, + ]; - cursor_rq.onsuccess = function (e: any) { - if (!e.target.result) { - t.deepEqual(count, expected.length, "count"); - t.end(); - return; - } - const cursor = e.target.result; - const record = cursor.value; - t.deepEqual(record.pKey, expected[count].pKey, "pKey #" + count); - t.deepEqual(record.iKey, expected[count].iKey, "iKey #" + count); - - t.deepEqual(cursor.key, expected[count].iKey, "cursor.key #" + count); - t.deepEqual( - cursor.primaryKey, - expected[count].pKey, - "cursor.primaryKey #" + count, - ); - - count++; - cursor.continue(expected[count] ? expected[count].iKey : undefined); + var open_rq = createdb(t); + open_rq.onupgradeneeded = function (e: any) { + db = e.target.result; + var objStore = db.createObjectStore("test", { keyPath: "pKey" }); + + objStore.createIndex("index", "iKey"); + + for (var i = 0; i < records.length; i++) objStore.add(records[i]); }; - }; -}); -// IDBCursor.continue() - index - iterate using nextunique -test.cb("WPT idbcursor-continue-index6.htm", (t) => { - var db: any; - const records = [ - { pKey: "primaryKey_0", iKey: "indexKey_0" }, - { pKey: "primaryKey_1", iKey: "indexKey_1" }, - { pKey: "primaryKey_1-2", iKey: "indexKey_1" }, - { pKey: "primaryKey_2", iKey: "indexKey_2" }, - ]; - const expected = [ - { pKey: "primaryKey_0", iKey: "indexKey_0" }, - { pKey: "primaryKey_1", iKey: "indexKey_1" }, - { pKey: "primaryKey_2", iKey: "indexKey_2" }, - ]; - - var open_rq = createdb(t); - open_rq.onupgradeneeded = function (e: any) { - db = e.target.result; - var objStore = db.createObjectStore("test", { keyPath: "pKey" }); - - objStore.createIndex("index", "iKey"); - - for (var i = 0; i < records.length; i++) objStore.add(records[i]); - }; - - open_rq.onsuccess = function (e: any) { - var count = 0, - cursor_rq = db + open_rq.onsuccess = function (e: any) { + var count = 0; + var cursor_rq = db .transaction("test") .objectStore("test") .index("index") - .openCursor(undefined, "nextunique"); + .openCursor(undefined, "next"); // XXX: Fx has issue with "undefined" + + cursor_rq.onsuccess = function (e: any) { + var cursor = e.target.result; + if (!cursor) { + t.deepEqual(count, 2, "ran number of times"); + resolve(); + return; + } + + // First time checks key equal, second time checks key less than + t.throws( + () => { + cursor.continue(records[0].iKey); + }, + { name: "DataError" }, + ); + + cursor.continue(); + + count++; + }; + }; + }); +}); - cursor_rq.onsuccess = function (e: any) { - if (!e.target.result) { - t.deepEqual(count, expected.length, "count"); - t.end(); - return; - } - var cursor = e.target.result, - record = cursor.value; +// IDBCursor.continue() - index - attempt to iterate to the next +// record when the direction is set for the previous record +test("WPT idbcursor-continue-index4.htm", (t) => { + return new Promise((resolve, reject) => { + var db: any; + const records = [ + { pKey: "primaryKey_0", iKey: "indexKey_0" }, + { pKey: "primaryKey_1", iKey: "indexKey_1" }, + { pKey: "primaryKey_2", iKey: "indexKey_2" }, + ]; + + var open_rq = createdb(t); + open_rq.onupgradeneeded = function (e: any) { + db = e.target.result; + var objStore = db.createObjectStore("test", { keyPath: "pKey" }); - t.deepEqual(record.pKey, expected[count].pKey, "pKey #" + count); - t.deepEqual(record.iKey, expected[count].iKey, "iKey #" + count); + objStore.createIndex("index", "iKey"); - t.deepEqual(cursor.key, expected[count].iKey, "cursor.key #" + count); - t.deepEqual( - cursor.primaryKey, - expected[count].pKey, - "cursor.primaryKey #" + count, - ); + for (var i = 0; i < records.length; i++) objStore.add(records[i]); + }; - count++; - cursor.continue(expected[count] ? expected[count].iKey : undefined); + open_rq.onsuccess = function (e: any) { + var count = 0, + cursor_rq = db + .transaction("test") + .objectStore("test") + .index("index") + .openCursor(undefined, "prev"); // XXX Fx issues w undefined + + cursor_rq.onsuccess = function (e: any) { + var cursor = e.target.result, + record = cursor.value; + + switch (count) { + case 0: + t.deepEqual(record.pKey, records[2].pKey, "first pKey"); + t.deepEqual(record.iKey, records[2].iKey, "first iKey"); + cursor.continue(); + break; + + case 1: + t.deepEqual(record.pKey, records[1].pKey, "second pKey"); + t.deepEqual(record.iKey, records[1].iKey, "second iKey"); + t.throws( + () => { + cursor.continue("indexKey_2"); + }, + { name: "DataError" }, + ); + resolve(); + break; + + default: + t.fail("Unexpected count value: " + count); + } + + count++; + }; }; - }; + }); }); -// IDBCursor.continue() - index - throw TransactionInactiveError -test.cb("WPT idbcursor-continue-index7.htm", (t) => { - var db: any, - records = [ +// IDBCursor.continue() - index - iterate using 'prevunique' +test("WPT idbcursor-continue-index5.htm", (t) => { + return new Promise((resolve, reject) => { + var db: any; + const records = [ { pKey: "primaryKey_0", iKey: "indexKey_0" }, { pKey: "primaryKey_1", iKey: "indexKey_1" }, + { pKey: "primaryKey_1-2", iKey: "indexKey_1" }, + { pKey: "primaryKey_2", iKey: "indexKey_2" }, + ]; + const expected = [ + { pKey: "primaryKey_2", iKey: "indexKey_2" }, + { pKey: "primaryKey_1", iKey: "indexKey_1" }, + { pKey: "primaryKey_0", iKey: "indexKey_0" }, ]; - var open_rq = createdb(t); - open_rq.onupgradeneeded = function (event: any) { - db = event.target.result; - var objStore = db.createObjectStore("store", { keyPath: "pKey" }); - objStore.createIndex("index", "iKey"); - for (var i = 0; i < records.length; i++) { - objStore.add(records[i]); - } - var rq = objStore.index("index").openCursor(); - rq.onsuccess = function (event: any) { - var cursor = event.target.result; - t.true(cursor instanceof BridgeIDBCursor); - - event.target.transaction.abort(); - t.throws( - () => { - cursor.continue(); - }, - { name: "TransactionInactiveError" }, - "Calling continue() should throws an exception TransactionInactiveError when the transaction is not active.", - ); - t.end(); + var open_rq = createdb(t); + open_rq.onupgradeneeded = function (e: any) { + db = e.target.result; + var objStore = db.createObjectStore("test", { keyPath: "pKey" }); + + objStore.createIndex("index", "iKey"); + + for (var i = 0; i < records.length; i++) objStore.add(records[i]); + }; + + open_rq.onsuccess = function (e: any) { + var count = 0, + cursor_rq = db + .transaction("test") + .objectStore("test") + .index("index") + .openCursor(undefined, "prevunique"); + + cursor_rq.onsuccess = function (e: any) { + if (!e.target.result) { + t.deepEqual(count, expected.length, "count"); + resolve(); + return; + } + const cursor = e.target.result; + const record = cursor.value; + t.deepEqual(record.pKey, expected[count].pKey, "pKey #" + count); + t.deepEqual(record.iKey, expected[count].iKey, "iKey #" + count); + + t.deepEqual(cursor.key, expected[count].iKey, "cursor.key #" + count); + t.deepEqual( + cursor.primaryKey, + expected[count].pKey, + "cursor.primaryKey #" + count, + ); + + count++; + cursor.continue(expected[count] ? expected[count].iKey : undefined); + }; }; - }; + }); }); -// IDBCursor.continue() - index - throw InvalidStateError caused by object store been deleted -test.cb("WPT idbcursor-continue-index8.htm", (t) => { - var db: any, - records = [ +// IDBCursor.continue() - index - iterate using nextunique +test("WPT idbcursor-continue-index6.htm", (t) => { + return new Promise((resolve, reject) => { + var db: any; + const records = [ + { pKey: "primaryKey_0", iKey: "indexKey_0" }, + { pKey: "primaryKey_1", iKey: "indexKey_1" }, + { pKey: "primaryKey_1-2", iKey: "indexKey_1" }, + { pKey: "primaryKey_2", iKey: "indexKey_2" }, + ]; + const expected = [ { pKey: "primaryKey_0", iKey: "indexKey_0" }, { pKey: "primaryKey_1", iKey: "indexKey_1" }, + { pKey: "primaryKey_2", iKey: "indexKey_2" }, ]; - var open_rq = createdb(t); - open_rq.onupgradeneeded = function (event: any) { - db = event.target.result; - var objStore = db.createObjectStore("store", { keyPath: "pKey" }); - objStore.createIndex("index", "iKey"); - for (var i = 0; i < records.length; i++) { - objStore.add(records[i]); - } - var rq = objStore.index("index").openCursor(); - rq.onsuccess = function (event: any) { - var cursor = event.target.result; - t.true(cursor instanceof BridgeIDBCursor); - - db.deleteObjectStore("store"); - - t.throws( - () => { - cursor.continue(); - }, - { name: "InvalidStateError" }, - "If the cursor's source or effective object store has been deleted, the implementation MUST throw a DOMException of type InvalidStateError", - ); - - t.end(); + var open_rq = createdb(t); + open_rq.onupgradeneeded = function (e: any) { + db = e.target.result; + var objStore = db.createObjectStore("test", { keyPath: "pKey" }); + + objStore.createIndex("index", "iKey"); + + for (var i = 0; i < records.length; i++) objStore.add(records[i]); + }; + + open_rq.onsuccess = function (e: any) { + var count = 0, + cursor_rq = db + .transaction("test") + .objectStore("test") + .index("index") + .openCursor(undefined, "nextunique"); + + cursor_rq.onsuccess = function (e: any) { + if (!e.target.result) { + t.deepEqual(count, expected.length, "count"); + resolve(); + return; + } + var cursor = e.target.result, + record = cursor.value; + + t.deepEqual(record.pKey, expected[count].pKey, "pKey #" + count); + t.deepEqual(record.iKey, expected[count].iKey, "iKey #" + count); + + t.deepEqual(cursor.key, expected[count].iKey, "cursor.key #" + count); + t.deepEqual( + cursor.primaryKey, + expected[count].pKey, + "cursor.primaryKey #" + count, + ); + + count++; + cursor.continue(expected[count] ? expected[count].iKey : undefined); + }; + }; + }); +}); + +// IDBCursor.continue() - index - throw TransactionInactiveError +test("WPT idbcursor-continue-index7.htm", (t) => { + return new Promise((resolve, reject) => { + var db: any, + records = [ + { pKey: "primaryKey_0", iKey: "indexKey_0" }, + { pKey: "primaryKey_1", iKey: "indexKey_1" }, + ]; + + var open_rq = createdb(t); + open_rq.onupgradeneeded = function (event: any) { + db = event.target.result; + var objStore = db.createObjectStore("store", { keyPath: "pKey" }); + objStore.createIndex("index", "iKey"); + for (var i = 0; i < records.length; i++) { + objStore.add(records[i]); + } + var rq = objStore.index("index").openCursor(); + rq.onsuccess = function (event: any) { + var cursor = event.target.result; + t.true(cursor instanceof BridgeIDBCursor); + + event.target.transaction.abort(); + t.throws( + () => { + cursor.continue(); + }, + { name: "TransactionInactiveError" }, + "Calling continue() should throws an exception TransactionInactiveError when the transaction is not active.", + ); + resolve(); + return; + }; + }; + }); +}); + +// IDBCursor.continue() - index - throw InvalidStateError caused by object store been deleted +test("WPT idbcursor-continue-index8.htm", (t) => { + return new Promise((resolve, reject) => { + var db: any, + records = [ + { pKey: "primaryKey_0", iKey: "indexKey_0" }, + { pKey: "primaryKey_1", iKey: "indexKey_1" }, + ]; + + var open_rq = createdb(t); + open_rq.onupgradeneeded = function (event: any) { + db = event.target.result; + var objStore = db.createObjectStore("store", { keyPath: "pKey" }); + objStore.createIndex("index", "iKey"); + for (var i = 0; i < records.length; i++) { + objStore.add(records[i]); + } + var rq = objStore.index("index").openCursor(); + rq.onsuccess = function (event: any) { + var cursor = event.target.result; + t.true(cursor instanceof BridgeIDBCursor); + + db.deleteObjectStore("store"); + + t.throws( + () => { + cursor.continue(); + }, + { name: "InvalidStateError" }, + "If the cursor's source or effective object store has been deleted, the implementation MUST throw a DOMException of type InvalidStateError", + ); + + resolve(); + }; }; - }; + }); }); diff --git a/packages/idb-bridge/src/idb-wpt-ported/idbcursor-continue-objectstore.test.ts b/packages/idb-bridge/src/idb-wpt-ported/idbcursor-continue-objectstore.test.ts index 4843b13ab..e3169195f 100644 --- a/packages/idb-bridge/src/idb-wpt-ported/idbcursor-continue-objectstore.test.ts +++ b/packages/idb-bridge/src/idb-wpt-ported/idbcursor-continue-objectstore.test.ts @@ -1,243 +1,264 @@ import test from "ava"; -import { BridgeIDBCursor } from ".."; -import { BridgeIDBCursorWithValue } from "../bridge-idb"; -import { IDBDatabase } from "../idbtypes"; -import { createdb } from "./wptsupport"; +import { BridgeIDBCursor } from "../bridge-idb.js"; +import { IDBDatabase } from "../idbtypes.js"; +import { createdb } from "./wptsupport.js"; // IDBCursor.continue() - object store - iterate to the next record -test.cb("WPT test idbcursor_continue_objectstore.htm", (t) => { - var db: any; - let count = 0; - const records = [{ pKey: "primaryKey_0" }, { pKey: "primaryKey_1" }]; - - var open_rq = createdb(t); - open_rq.onupgradeneeded = function (e: any) { - db = e.target.result; - var objStore = db.createObjectStore("test", { - autoIncrement: true, - keyPath: "pKey", - }); - - for (var i = 0; i < records.length; i++) objStore.add(records[i]); - }; - - open_rq.onsuccess = function (e: any) { - var store = db.transaction("test").objectStore("test"); - - var cursor_rq = store.openCursor(); - cursor_rq.onsuccess = function (e: any) { - var cursor = e.target.result; - if (!cursor) { - t.deepEqual(count, records.length, "cursor run count"); - t.end(); - } - - var record = cursor.value; - t.deepEqual(record.pKey, records[count].pKey, "primary key"); - - cursor.continue(); - count++; +test("WPT test idbcursor_continue_objectstore.htm", (t) => { + return new Promise((resolve, reject) => { + var db: any; + let count = 0; + const records = [{ pKey: "primaryKey_0" }, { pKey: "primaryKey_1" }]; + + var open_rq = createdb(t); + open_rq.onupgradeneeded = function (e: any) { + db = e.target.result; + var objStore = db.createObjectStore("test", { + autoIncrement: true, + keyPath: "pKey", + }); + + for (var i = 0; i < records.length; i++) objStore.add(records[i]); }; - }; + + open_rq.onsuccess = function (e: any) { + var store = db.transaction("test").objectStore("test"); + + var cursor_rq = store.openCursor(); + cursor_rq.onsuccess = function (e: any) { + var cursor = e.target.result; + if (!cursor) { + t.deepEqual(count, records.length, "cursor run count"); + resolve(); + return; + } + + var record = cursor.value; + t.deepEqual(record.pKey, records[count].pKey, "primary key"); + + cursor.continue(); + count++; + }; + }; + }); }); // IDBCursor.continue() - index - attempt to pass a // key parameter that is not a valid key -test.cb("WPT test idbcursor_continue_objectstore2.htm", (t) => { - var db: any; - const records = [{ pKey: "primaryKey_0" }, { pKey: "primaryKey_1" }]; +test("WPT test idbcursor_continue_objectstore2.htm", (t) => { + return new Promise((resolve, reject) => { + var db: any; + const records = [{ pKey: "primaryKey_0" }, { pKey: "primaryKey_1" }]; - var open_rq = createdb(t); - open_rq.onupgradeneeded = function (e: any) { - db = e.target.result; - var objStore = db.createObjectStore("test", { keyPath: "pKey" }); + var open_rq = createdb(t); + open_rq.onupgradeneeded = function (e: any) { + db = e.target.result; + var objStore = db.createObjectStore("test", { keyPath: "pKey" }); - for (var i = 0; i < records.length; i++) objStore.add(records[i]); - }; + for (var i = 0; i < records.length; i++) objStore.add(records[i]); + }; - open_rq.onsuccess = function (e: any) { - var cursor_rq = db.transaction("test").objectStore("test").openCursor(); + open_rq.onsuccess = function (e: any) { + var cursor_rq = db.transaction("test").objectStore("test").openCursor(); - cursor_rq.onsuccess = function (e: any) { - var cursor = e.target.result; + cursor_rq.onsuccess = function (e: any) { + var cursor = e.target.result; - t.true(cursor instanceof BridgeIDBCursor, "cursor exists"); - t.throws( - () => { - cursor.continue({ foo: "42" }); - }, - { name: "DataError" }, - ); + t.true(cursor instanceof BridgeIDBCursor, "cursor exists"); + t.throws( + () => { + cursor.continue({ foo: "42" }); + }, + { name: "DataError" }, + ); - t.end(); + resolve(); + }; }; - }; + }); }); // IDBCursor.continue() - object store - attempt to iterate to the // previous record when the direction is set for the next record -test.cb("WPT test idbcursor_continue_objectstore3.htm", (t) => { - var db: IDBDatabase; - const records = [{ pKey: "primaryKey_0" }, { pKey: "primaryKey_1" }]; - - var open_rq = createdb(t); - open_rq.onupgradeneeded = function (e: any) { - db = e.target.result; - var objStore = db.createObjectStore("test", { keyPath: "pKey" }); - - for (var i = 0; i < records.length; i++) objStore.add(records[i]); - }; - - open_rq.onsuccess = function (e: any) { - var cursor_rq = db - .transaction("test") - .objectStore("test") - .openCursor(undefined, "next"); - - cursor_rq.onsuccess = function (e: any) { - var cursor = e.target.result; - - t.true(cursor instanceof BridgeIDBCursor, "cursor exist"); - t.throws( - () => { - cursor.continue(records[0].pKey); - }, - { - name: "DataError", - }, - ); - - t.end(); +test("WPT test idbcursor_continue_objectstore3.htm", (t) => { + return new Promise((resolve, reject) => { + var db: IDBDatabase; + const records = [{ pKey: "primaryKey_0" }, { pKey: "primaryKey_1" }]; + + var open_rq = createdb(t); + open_rq.onupgradeneeded = function (e: any) { + db = e.target.result; + var objStore = db.createObjectStore("test", { keyPath: "pKey" }); + + for (var i = 0; i < records.length; i++) objStore.add(records[i]); + }; + + open_rq.onsuccess = function (e: any) { + var cursor_rq = db + .transaction("test") + .objectStore("test") + .openCursor(undefined, "next"); + + cursor_rq.onsuccess = function (e: any) { + var cursor = e.target.result; + + t.true(cursor instanceof BridgeIDBCursor, "cursor exist"); + t.throws( + () => { + cursor.continue(records[0].pKey); + }, + { + name: "DataError", + }, + ); + + resolve(); + }; }; - }; + }); }); // IDBCursor.continue() - object store - attempt to iterate to the // next record when the direction is set for the previous record -test.cb("WPT test idbcursor_continue_objectstore4.htm", (t) => { - var db: any; - const records = [ - { pKey: "primaryKey_0" }, - { pKey: "primaryKey_1" }, - { pKey: "primaryKey_2" }, - ]; - - var open_rq = createdb(t); - open_rq.onupgradeneeded = function (e: any) { - db = e.target.result; - var objStore = db.createObjectStore("test", { keyPath: "pKey" }); - - for (var i = 0; i < records.length; i++) objStore.add(records[i]); - }; - - open_rq.onsuccess = function (e: any) { - var count = 0, - cursor_rq = db - .transaction("test") - .objectStore("test") - .openCursor(null, "prev"); - - cursor_rq.onsuccess = function (e: any) { - var cursor = e.target.result; - - t.true(cursor != null, "cursor exist"); - - switch (count) { - case 0: - t.deepEqual(cursor.value.pKey, records[2].pKey, "first cursor pkey"); - cursor.continue(records[1].pKey); - break; - - case 1: - t.deepEqual(cursor.value.pKey, records[1].pKey, "second cursor pkey"); - t.throws( - () => { - console.log("**** continuing cursor"); - cursor.continue(records[2].pKey); - console.log("**** this should not happen"); - }, - { - name: "DataError", - }, - ); - t.end(); - break; - - default: - t.fail("Unexpected count value: " + count); - } - - count++; +test("WPT test idbcursor_continue_objectstore4.htm", (t) => { + return new Promise((resolve, reject) => { + var db: any; + const records = [ + { pKey: "primaryKey_0" }, + { pKey: "primaryKey_1" }, + { pKey: "primaryKey_2" }, + ]; + + var open_rq = createdb(t); + open_rq.onupgradeneeded = function (e: any) { + db = e.target.result; + var objStore = db.createObjectStore("test", { keyPath: "pKey" }); + + for (var i = 0; i < records.length; i++) objStore.add(records[i]); + }; + + open_rq.onsuccess = function (e: any) { + var count = 0, + cursor_rq = db + .transaction("test") + .objectStore("test") + .openCursor(null, "prev"); + + cursor_rq.onsuccess = function (e: any) { + var cursor = e.target.result; + + t.true(cursor != null, "cursor exist"); + + switch (count) { + case 0: + t.deepEqual( + cursor.value.pKey, + records[2].pKey, + "first cursor pkey", + ); + cursor.continue(records[1].pKey); + break; + + case 1: + t.deepEqual( + cursor.value.pKey, + records[1].pKey, + "second cursor pkey", + ); + t.throws( + () => { + console.log("**** continuing cursor"); + cursor.continue(records[2].pKey); + console.log("**** this should not happen"); + }, + { + name: "DataError", + }, + ); + resolve(); + return; + + default: + t.fail("Unexpected count value: " + count); + } + + count++; + }; }; - }; + }); }); // IDBCursor.continue() - object store - throw TransactionInactiveError -test.cb("WPT test idbcursor_continue_objectstore5.htm", (t) => { - var db: any; - const records = [{ pKey: "primaryKey_0" }, { pKey: "primaryKey_1" }]; - - var open_rq = createdb(t); - open_rq.onupgradeneeded = function (e: any) { - db = e.target.result; - var objStore = db.createObjectStore("test", { keyPath: "pKey" }); - - for (var i = 0; i < records.length; i++) objStore.add(records[i]); - }; - - open_rq.onsuccess = function (e: any) { - var cursor_rq = db.transaction("test").objectStore("test").openCursor(); - - cursor_rq.onsuccess = function (e: any) { - var cursor = e.target.result; - t.true(cursor instanceof BridgeIDBCursor, "cursor exists"); - - e.target.transaction.abort(); - t.throws( - () => { - cursor.continue(); - }, - { - name: "TransactionInactiveError", - }, - "Calling continue() should throw an exception TransactionInactiveError when the transaction is not active.", - ); - - t.end(); +test("WPT test idbcursor_continue_objectstore5.htm", (t) => { + return new Promise((resolve, reject) => { + var db: any; + const records = [{ pKey: "primaryKey_0" }, { pKey: "primaryKey_1" }]; + + var open_rq = createdb(t); + open_rq.onupgradeneeded = function (e: any) { + db = e.target.result; + var objStore = db.createObjectStore("test", { keyPath: "pKey" }); + + for (var i = 0; i < records.length; i++) objStore.add(records[i]); + }; + + open_rq.onsuccess = function (e: any) { + var cursor_rq = db.transaction("test").objectStore("test").openCursor(); + + cursor_rq.onsuccess = function (e: any) { + var cursor = e.target.result; + t.true(cursor instanceof BridgeIDBCursor, "cursor exists"); + + e.target.transaction.abort(); + t.throws( + () => { + cursor.continue(); + }, + { + name: "TransactionInactiveError", + }, + "Calling continue() should throw an exception TransactionInactiveError when the transaction is not active.", + ); + + resolve(); + return; + }; }; - }; + }); }); // IDBCursor.continue() - object store - throw InvalidStateError caused by object store been deleted -test.cb("WPT test idbcursor_continue_objectstore6.htm", (t) => { - var db: any; - const records = [{ pKey: "primaryKey_0" }, { pKey: "primaryKey_1" }]; - - var open_rq = createdb(t); - open_rq.onupgradeneeded = function (e: any) { - db = e.target.result; - var objStore = db.createObjectStore("test", { keyPath: "pKey" }); - - for (var i = 0; i < records.length; i++) objStore.add(records[i]); - - var cursor_rq = objStore.openCursor(); - - cursor_rq.onsuccess = function (e: any) { - var cursor = e.target.result; - t.true(cursor instanceof BridgeIDBCursor, "cursor exists"); - - db.deleteObjectStore("test"); - t.throws( - () => { - cursor.continue(); - }, - { - name: "InvalidStateError", - }, - "If the cursor's source or effective object store has been deleted, the implementation MUST throw a DOMException of type InvalidStateError", - ); - - t.end(); +test("WPT test idbcursor_continue_objectstore6.htm", (t) => { + return new Promise((resolve, reject) => { + var db: any; + const records = [{ pKey: "primaryKey_0" }, { pKey: "primaryKey_1" }]; + + var open_rq = createdb(t); + open_rq.onupgradeneeded = function (e: any) { + db = e.target.result; + var objStore = db.createObjectStore("test", { keyPath: "pKey" }); + + for (var i = 0; i < records.length; i++) objStore.add(records[i]); + + var cursor_rq = objStore.openCursor(); + + cursor_rq.onsuccess = function (e: any) { + var cursor = e.target.result; + t.true(cursor instanceof BridgeIDBCursor, "cursor exists"); + + db.deleteObjectStore("test"); + t.throws( + () => { + cursor.continue(); + }, + { + name: "InvalidStateError", + }, + "If the cursor's source or effective object store has been deleted, the implementation MUST throw a DOMException of type InvalidStateError", + ); + + resolve(); + }; }; - }; + }); }); diff --git a/packages/idb-bridge/src/idb-wpt-ported/idbcursor-delete-exception-order.test.ts b/packages/idb-bridge/src/idb-wpt-ported/idbcursor-delete-exception-order.test.ts index 604061acd..f771d19a2 100644 --- a/packages/idb-bridge/src/idb-wpt-ported/idbcursor-delete-exception-order.test.ts +++ b/packages/idb-bridge/src/idb-wpt-ported/idbcursor-delete-exception-order.test.ts @@ -1,5 +1,5 @@ import test from "ava"; -import { createdb, indexeddb_test } from "./wptsupport"; +import { indexeddb_test } from "./wptsupport.js"; test("WPT idbcursor-delete-exception-order.htm", async (t) => { // 'IDBCursor.delete exception order: TransactionInactiveError vs. ReadOnlyError' diff --git a/packages/idb-bridge/src/idb-wpt-ported/idbcursor-delete-index.test.ts b/packages/idb-bridge/src/idb-wpt-ported/idbcursor-delete-index.test.ts index 0b28a4d4d..0232cf247 100644 --- a/packages/idb-bridge/src/idb-wpt-ported/idbcursor-delete-index.test.ts +++ b/packages/idb-bridge/src/idb-wpt-ported/idbcursor-delete-index.test.ts @@ -1,204 +1,214 @@ import test from "ava"; -import { BridgeIDBCursor } from ".."; -import { IDBCursor } from "../idbtypes"; -import { createdb, indexeddb_test } from "./wptsupport"; +import { BridgeIDBCursor } from "../bridge-idb.js"; +import { IDBCursor } from "../idbtypes.js"; +import { createdb } from "./wptsupport.js"; // IDBCursor.delete() - index - remove a record from the object store -test.cb("WPT idbcursor-delete-index.htm", (t) => { - var db: any; - let count = 0, - records = [ - { pKey: "primaryKey_0", iKey: "indexKey_0" }, - { pKey: "primaryKey_1", iKey: "indexKey_1" }, - ]; - - var open_rq = createdb(t); - open_rq.onupgradeneeded = function (e: any) { - db = e.target.result; - - var objStore = db.createObjectStore("test", { keyPath: "pKey" }); - objStore.createIndex("index", "iKey"); - - for (var i = 0; i < records.length; i++) objStore.add(records[i]); - }; +test("WPT idbcursor-delete-index.htm", (t) => { + return new Promise((resolve, reject) => { + var db: any; + let count = 0, + records = [ + { pKey: "primaryKey_0", iKey: "indexKey_0" }, + { pKey: "primaryKey_1", iKey: "indexKey_1" }, + ]; + + var open_rq = createdb(t); + open_rq.onupgradeneeded = function (e: any) { + db = e.target.result; + + var objStore = db.createObjectStore("test", { keyPath: "pKey" }); + objStore.createIndex("index", "iKey"); + + for (var i = 0; i < records.length; i++) objStore.add(records[i]); + }; - open_rq.onsuccess = CursorDeleteRecord; + open_rq.onsuccess = CursorDeleteRecord; - function CursorDeleteRecord(e: any) { - var txn = db.transaction("test", "readwrite"), - cursor_rq = txn.objectStore("test").index("index").openCursor(); + function CursorDeleteRecord(e: any) { + var txn = db.transaction("test", "readwrite"), + cursor_rq = txn.objectStore("test").index("index").openCursor(); - cursor_rq.onsuccess = function (e: any) { - var cursor = e.target.result; + cursor_rq.onsuccess = function (e: any) { + var cursor = e.target.result; - t.true(cursor instanceof BridgeIDBCursor, "cursor exist"); - cursor.delete(); - }; + t.true(cursor instanceof BridgeIDBCursor, "cursor exist"); + cursor.delete(); + }; - txn.oncomplete = VerifyRecordWasDeleted; - } + txn.oncomplete = VerifyRecordWasDeleted; + } - function VerifyRecordWasDeleted(e: any) { - var cursor_rq = db.transaction("test").objectStore("test").openCursor(); + function VerifyRecordWasDeleted(e: any) { + var cursor_rq = db.transaction("test").objectStore("test").openCursor(); - cursor_rq.onsuccess = function (e: any) { - var cursor = e.target.result; + cursor_rq.onsuccess = function (e: any) { + var cursor = e.target.result; - if (!cursor) { - t.deepEqual(count, 1, "count"); - t.end(); - return; - } + if (!cursor) { + t.deepEqual(count, 1, "count"); + resolve(); + return; + } - t.deepEqual(cursor.value.pKey, records[1].pKey); - t.deepEqual(cursor.value.iKey, records[1].iKey); - cursor.continue(); - count++; - }; - } + t.deepEqual(cursor.value.pKey, records[1].pKey); + t.deepEqual(cursor.value.iKey, records[1].iKey); + cursor.continue(); + count++; + }; + } + }); }); // IDBCursor.delete() - object store - attempt to remove a record in a read-only transaction -test.cb("WPT idbcursor-delete-index2.htm", (t) => { - var db: any, - records = [ - { pKey: "primaryKey_0", iKey: "indexKey_0" }, - { pKey: "primaryKey_1", iKey: "indexKey_1" }, - ]; - - var open_rq = createdb(t); - open_rq.onupgradeneeded = function (e: any) { - db = e.target.result; - - var objStore = db.createObjectStore("test", { keyPath: "pKey" }); - - for (var i = 0; i < records.length; i++) objStore.add(records[i]); - }; - - open_rq.onsuccess = function (e: any) { - var cursor_rq = db.transaction("test").objectStore("test").openCursor(); - - cursor_rq.onsuccess = function (e: any) { - var cursor = e.target.result; - - t.true(cursor != null, "cursor exist"); - t.throws( - () => { - cursor.delete(); - }, - { - name: "ReadOnlyError", - }, - ); - t.end(); - }; - }; -}); +test("WPT idbcursor-delete-index2.htm", (t) => { + return new Promise((resolve, reject) => { + var db: any, + records = [ + { pKey: "primaryKey_0", iKey: "indexKey_0" }, + { pKey: "primaryKey_1", iKey: "indexKey_1" }, + ]; -// IDBCursor.delete() - index - attempt to remove a record in an inactive transaction -test.cb("WPT idbcursor-delete-index3.htm", (t) => { - var db: any, - records = [ - { pKey: "primaryKey_0", iKey: "indexKey_0" }, - { pKey: "primaryKey_1", iKey: "indexKey_1" }, - ]; + var open_rq = createdb(t); + open_rq.onupgradeneeded = function (e: any) { + db = e.target.result; - var open_rq = createdb(t); - open_rq.onupgradeneeded = function (e: any) { - db = e.target.result; - var objStore = db.createObjectStore("test", { keyPath: "pKey" }); - var index = objStore.createIndex("index", "iKey"); + var objStore = db.createObjectStore("test", { keyPath: "pKey" }); - for (var i = 0; i < records.length; i++) objStore.add(records[i]); - - var cursor_rq = index.openCursor(); - - let myCursor: IDBCursor | undefined; + for (var i = 0; i < records.length; i++) objStore.add(records[i]); + }; - cursor_rq.onsuccess = function (e: any) { - var cursor = e.target.result; - t.true(cursor instanceof BridgeIDBCursor, "cursor exist"); - myCursor = cursor; + open_rq.onsuccess = function (e: any) { + var cursor_rq = db.transaction("test").objectStore("test").openCursor(); + + cursor_rq.onsuccess = function (e: any) { + var cursor = e.target.result; + + t.true(cursor != null, "cursor exist"); + t.throws( + () => { + cursor.delete(); + }, + { + name: "ReadOnlyError", + }, + ); + resolve(); + }; }; + }); +}); - e.target.transaction.oncomplete = function (e: any) { - t.throws( - () => { - myCursor!.delete(); - }, - { name: "TransactionInactiveError" }, - ); - t.end(); +// IDBCursor.delete() - index - attempt to remove a record in an inactive transaction +test("WPT idbcursor-delete-index3.htm", (t) => { + return new Promise((resolve, reject) => { + var db: any, + records = [ + { pKey: "primaryKey_0", iKey: "indexKey_0" }, + { pKey: "primaryKey_1", iKey: "indexKey_1" }, + ]; + + var open_rq = createdb(t); + open_rq.onupgradeneeded = function (e: any) { + db = e.target.result; + var objStore = db.createObjectStore("test", { keyPath: "pKey" }); + var index = objStore.createIndex("index", "iKey"); + + for (var i = 0; i < records.length; i++) objStore.add(records[i]); + + var cursor_rq = index.openCursor(); + + let myCursor: IDBCursor | undefined; + + cursor_rq.onsuccess = function (e: any) { + var cursor = e.target.result; + t.true(cursor instanceof BridgeIDBCursor, "cursor exist"); + myCursor = cursor; + }; + + e.target.transaction.oncomplete = function (e: any) { + t.throws( + () => { + myCursor!.delete(); + }, + { name: "TransactionInactiveError" }, + ); + resolve(); + }; }; - }; + }); }); // IDBCursor.delete() - index - throw InvalidStateError caused by object store been deleted -test.cb("WPT idbcursor-delete-index4.htm", (t) => { - var db: any, - records = [ - { pKey: "primaryKey_0", iKey: "indexKey_0" }, - { pKey: "primaryKey_1", iKey: "indexKey_1" }, - ]; - - var open_rq = createdb(t); - open_rq.onupgradeneeded = function (event: any) { - db = event.target.result; - var objStore = db.createObjectStore("store", { keyPath: "pKey" }); - objStore.createIndex("index", "iKey"); - for (var i = 0; i < records.length; i++) { - objStore.add(records[i]); - } - var rq = objStore.index("index").openCursor(); - rq.onsuccess = function (event: any) { - var cursor = event.target.result; - t.true(cursor instanceof BridgeIDBCursor, "cursor exist"); - - db.deleteObjectStore("store"); - t.throws( - function () { - cursor.delete(); - }, - { name: "InvalidStateError" }, - "If the cursor's source or effective object store has been deleted, the implementation MUST throw a DOMException of type InvalidStateError", - ); - - t.end(); +test("WPT idbcursor-delete-index4.htm", (t) => { + return new Promise((resolve, reject) => { + var db: any, + records = [ + { pKey: "primaryKey_0", iKey: "indexKey_0" }, + { pKey: "primaryKey_1", iKey: "indexKey_1" }, + ]; + + var open_rq = createdb(t); + open_rq.onupgradeneeded = function (event: any) { + db = event.target.result; + var objStore = db.createObjectStore("store", { keyPath: "pKey" }); + objStore.createIndex("index", "iKey"); + for (var i = 0; i < records.length; i++) { + objStore.add(records[i]); + } + var rq = objStore.index("index").openCursor(); + rq.onsuccess = function (event: any) { + var cursor = event.target.result; + t.true(cursor instanceof BridgeIDBCursor, "cursor exist"); + + db.deleteObjectStore("store"); + t.throws( + function () { + cursor.delete(); + }, + { name: "InvalidStateError" }, + "If the cursor's source or effective object store has been deleted, the implementation MUST throw a DOMException of type InvalidStateError", + ); + + resolve(); + }; }; - }; + }); }); // IDBCursor.delete() - index - throw InvalidStateError when the cursor is being iterated -test.cb("WPT idbcursor-delete-index5.htm", (t) => { - var db: any, - records = [ - { pKey: "primaryKey_0", iKey: "indexKey_0" }, - { pKey: "primaryKey_1", iKey: "indexKey_1" }, - ]; - - var open_rq = createdb(t); - open_rq.onupgradeneeded = function (event: any) { - db = event.target.result; - var objStore = db.createObjectStore("store", { keyPath: "pKey" }); - objStore.createIndex("index", "iKey"); - for (var i = 0; i < records.length; i++) { - objStore.add(records[i]); - } - - var rq = objStore.index("index").openCursor(); - rq.onsuccess = function (event: any) { - var cursor = event.target.result; - t.true(cursor instanceof BridgeIDBCursor, "cursor exist"); - - cursor.continue(); - t.throws( - function () { - cursor.delete(); - }, - { name: "InvalidStateError" }, - ); +test("WPT idbcursor-delete-index5.htm", (t) => { + return new Promise((resolve, reject) => { + var db: any, + records = [ + { pKey: "primaryKey_0", iKey: "indexKey_0" }, + { pKey: "primaryKey_1", iKey: "indexKey_1" }, + ]; + + var open_rq = createdb(t); + open_rq.onupgradeneeded = function (event: any) { + db = event.target.result; + var objStore = db.createObjectStore("store", { keyPath: "pKey" }); + objStore.createIndex("index", "iKey"); + for (var i = 0; i < records.length; i++) { + objStore.add(records[i]); + } - t.end(); + var rq = objStore.index("index").openCursor(); + rq.onsuccess = function (event: any) { + var cursor = event.target.result; + t.true(cursor instanceof BridgeIDBCursor, "cursor exist"); + + cursor.continue(); + t.throws( + function () { + cursor.delete(); + }, + { name: "InvalidStateError" }, + ); + + resolve(); + }; }; - }; + }); }); diff --git a/packages/idb-bridge/src/idb-wpt-ported/idbcursor-delete-objectstore.test.ts b/packages/idb-bridge/src/idb-wpt-ported/idbcursor-delete-objectstore.test.ts index 7afe1e483..9410ca79e 100644 --- a/packages/idb-bridge/src/idb-wpt-ported/idbcursor-delete-objectstore.test.ts +++ b/packages/idb-bridge/src/idb-wpt-ported/idbcursor-delete-objectstore.test.ts @@ -1,194 +1,204 @@ import test from "ava"; -import { BridgeIDBCursor } from ".."; -import { IDBCursor } from "../idbtypes"; -import { createdb, indexeddb_test } from "./wptsupport"; +import { BridgeIDBCursor } from "../bridge-idb.js"; +import { createdb } from "./wptsupport.js"; // IDBCursor.delete() - object store - remove a record from the object store -test.cb("WPT idbcursor-delete-objectstore.htm", (t) => { - var db: any, - count = 0, - records = [{ pKey: "primaryKey_0" }, { pKey: "primaryKey_1" }]; +test("WPT idbcursor-delete-objectstore.htm", (t) => { + return new Promise((resolve, reject) => { + var db: any, + count = 0, + records = [{ pKey: "primaryKey_0" }, { pKey: "primaryKey_1" }]; - var open_rq = createdb(t); - open_rq.onupgradeneeded = function (e: any) { - db = e.target.result; + var open_rq = createdb(t); + open_rq.onupgradeneeded = function (e: any) { + db = e.target.result; - var objStore = db.createObjectStore("test", { keyPath: "pKey" }); + var objStore = db.createObjectStore("test", { keyPath: "pKey" }); - for (var i = 0; i < records.length; i++) objStore.add(records[i]); - }; + for (var i = 0; i < records.length; i++) objStore.add(records[i]); + }; - open_rq.onsuccess = CursorDeleteRecord; + open_rq.onsuccess = CursorDeleteRecord; - function CursorDeleteRecord(e: any) { - var txn = db.transaction("test", "readwrite"), - cursor_rq = txn.objectStore("test").openCursor(); + function CursorDeleteRecord(e: any) { + var txn = db.transaction("test", "readwrite"), + cursor_rq = txn.objectStore("test").openCursor(); - cursor_rq.onsuccess = function (e: any) { - var cursor = e.target.result; + cursor_rq.onsuccess = function (e: any) { + var cursor = e.target.result; - t.true(cursor != null, "cursor exist"); - cursor.delete(); - }; + t.true(cursor != null, "cursor exist"); + cursor.delete(); + }; - txn.oncomplete = VerifyRecordWasDeleted; - } + txn.oncomplete = VerifyRecordWasDeleted; + } - function VerifyRecordWasDeleted(e: any) { - var cursor_rq = db.transaction("test").objectStore("test").openCursor(); + function VerifyRecordWasDeleted(e: any) { + var cursor_rq = db.transaction("test").objectStore("test").openCursor(); - cursor_rq.onsuccess = function (e: any) { - var cursor = e.target.result; + cursor_rq.onsuccess = function (e: any) { + var cursor = e.target.result; - if (!cursor) { - t.deepEqual(count, 1, "count"); - t.end(); - } + if (!cursor) { + t.deepEqual(count, 1, "count"); + resolve(); + return; + } - t.deepEqual(cursor.value.pKey, records[1].pKey); - count++; - cursor.continue(); - }; - } + t.deepEqual(cursor.value.pKey, records[1].pKey); + count++; + cursor.continue(); + }; + } + }); }); // IDBCursor.delete() - object store - attempt to remove a record in a read-only transaction -test.cb("WPT idbcursor-delete-objectstore2.htm", (t) => { - var db: any, - records = [ - { pKey: "primaryKey_0", iKey: "indexKey_0" }, - { pKey: "primaryKey_1", iKey: "indexKey_1" }, - ]; - - var open_rq = createdb(t); - open_rq.onupgradeneeded = function (e: any) { - db = e.target.result; - - var objStore = db.createObjectStore("test", { keyPath: "pKey" }); - - for (var i = 0; i < records.length; i++) objStore.add(records[i]); - }; - - open_rq.onsuccess = function (e: any) { - var cursor_rq = db.transaction("test").objectStore("test").openCursor(); - - cursor_rq.onsuccess = function (e: any) { - var cursor = e.target.result; - - t.true(cursor != null, "cursor exist"); - t.throws( - function () { - cursor.delete(); - }, - { name: "ReadOnlyError" }, - ); - t.end(); - }; - }; -}); - -// IDBCursor.delete() - index - attempt to remove a record in an inactive transaction -test.cb("WPT idbcursor-delete-objectstore3.htm", (t) => { - var db: any, - records = [ - { pKey: "primaryKey_0", iKey: "indexKey_0" }, - { pKey: "primaryKey_1", iKey: "indexKey_1" }, - ]; +test("WPT idbcursor-delete-objectstore2.htm", (t) => { + return new Promise((resolve, reject) => { + var db: any, + records = [ + { pKey: "primaryKey_0", iKey: "indexKey_0" }, + { pKey: "primaryKey_1", iKey: "indexKey_1" }, + ]; - var open_rq = createdb(t); - open_rq.onupgradeneeded = function (e: any) { - db = e.target.result; - var objStore = db.createObjectStore("test", { keyPath: "pKey" }); + var open_rq = createdb(t); + open_rq.onupgradeneeded = function (e: any) { + db = e.target.result; - for (var i = 0; i < records.length; i++) objStore.add(records[i]); + var objStore = db.createObjectStore("test", { keyPath: "pKey" }); - var cursor_rq = objStore.openCursor(); - - const window: any = {}; + for (var i = 0; i < records.length; i++) objStore.add(records[i]); + }; - cursor_rq.onsuccess = function (e: any) { - var cursor = e.target.result; - t.true(cursor instanceof BridgeIDBCursor, "cursor exist"); - window.cursor = cursor; + open_rq.onsuccess = function (e: any) { + var cursor_rq = db.transaction("test").objectStore("test").openCursor(); + + cursor_rq.onsuccess = function (e: any) { + var cursor = e.target.result; + + t.true(cursor != null, "cursor exist"); + t.throws( + function () { + cursor.delete(); + }, + { name: "ReadOnlyError" }, + ); + resolve(); + }; }; + }); +}); - e.target.transaction.oncomplete = function (e: any) { - t.throws( - function () { - window.cursor.delete(); - }, - { - name: "TransactionInactiveError", - }, - ); - t.end(); +// IDBCursor.delete() - index - attempt to remove a record in an inactive transaction +test("WPT idbcursor-delete-objectstore3.htm", (t) => { + return new Promise((resolve, reject) => { + var db: any, + records = [ + { pKey: "primaryKey_0", iKey: "indexKey_0" }, + { pKey: "primaryKey_1", iKey: "indexKey_1" }, + ]; + + var open_rq = createdb(t); + open_rq.onupgradeneeded = function (e: any) { + db = e.target.result; + var objStore = db.createObjectStore("test", { keyPath: "pKey" }); + + for (var i = 0; i < records.length; i++) objStore.add(records[i]); + + var cursor_rq = objStore.openCursor(); + + const window: any = {}; + + cursor_rq.onsuccess = function (e: any) { + var cursor = e.target.result; + t.true(cursor instanceof BridgeIDBCursor, "cursor exist"); + window.cursor = cursor; + }; + + e.target.transaction.oncomplete = function (e: any) { + t.throws( + function () { + window.cursor.delete(); + }, + { + name: "TransactionInactiveError", + }, + ); + resolve(); + }; }; - }; + }); }); // IDBCursor.delete() - object store - throw InvalidStateError caused by object store been deleted -test.cb("WPT idbcursor-delete-objectstore4.htm", (t) => { - var db: any, - records = [{ pKey: "primaryKey_0" }, { pKey: "primaryKey_1" }]; - - var open_rq = createdb(t); - open_rq.onupgradeneeded = function (event: any) { - db = event.target.result; - var objStore = db.createObjectStore("store", { keyPath: "pKey" }); - for (var i = 0; i < records.length; i++) { - objStore.add(records[i]); - } - var rq = objStore.openCursor(); - rq.onsuccess = function (event: any) { - var cursor = event.target.result; - t.true(cursor instanceof BridgeIDBCursor, "cursor exist"); - - db.deleteObjectStore("store"); - t.throws( - function () { - cursor.delete(); - }, - { name: "InvalidStateError" }, - "If the cursor's source or effective object store has been deleted, the implementation MUST throw a DOMException of type InvalidStateError", - ); - - t.end(); +test("WPT idbcursor-delete-objectstore4.htm", (t) => { + return new Promise((resolve, reject) => { + var db: any, + records = [{ pKey: "primaryKey_0" }, { pKey: "primaryKey_1" }]; + + var open_rq = createdb(t); + open_rq.onupgradeneeded = function (event: any) { + db = event.target.result; + var objStore = db.createObjectStore("store", { keyPath: "pKey" }); + for (var i = 0; i < records.length; i++) { + objStore.add(records[i]); + } + var rq = objStore.openCursor(); + rq.onsuccess = function (event: any) { + var cursor = event.target.result; + t.true(cursor instanceof BridgeIDBCursor, "cursor exist"); + + db.deleteObjectStore("store"); + t.throws( + function () { + cursor.delete(); + }, + { name: "InvalidStateError" }, + "If the cursor's source or effective object store has been deleted, the implementation MUST throw a DOMException of type InvalidStateError", + ); + + resolve(); + }; }; - }; + }); }); // IDBCursor.delete() - object store - throw InvalidStateError when the cursor is being iterated -test.cb("WPT idbcursor-delete-objectstore5.htm", (t) => { - var db: any, - records = [{ pKey: "primaryKey_0" }, { pKey: "primaryKey_1" }]; - - var open_rq = createdb(t); - open_rq.onupgradeneeded = function (event: any) { - db = event.target.result; - var objStore = db.createObjectStore("store", { keyPath: "pKey" }); - for (var i = 0; i < records.length; i++) { - objStore.add(records[i]); - } - }; - - open_rq.onsuccess = function (event: any) { - var txn = db.transaction("store", "readwrite"); - var rq = txn.objectStore("store").openCursor(); - rq.onsuccess = function (event: any) { - var cursor = event.target.result; - t.true(cursor instanceof BridgeIDBCursor, "cursor exist"); - - cursor.continue(); - t.throws( - function () { - cursor.delete(); - }, - { - name: "InvalidStateError", - }, - ); - - t.end(); +test("WPT idbcursor-delete-objectstore5.htm", (t) => { + return new Promise((resolve, reject) => { + var db: any, + records = [{ pKey: "primaryKey_0" }, { pKey: "primaryKey_1" }]; + + var open_rq = createdb(t); + open_rq.onupgradeneeded = function (event: any) { + db = event.target.result; + var objStore = db.createObjectStore("store", { keyPath: "pKey" }); + for (var i = 0; i < records.length; i++) { + objStore.add(records[i]); + } + }; + + open_rq.onsuccess = function (event: any) { + var txn = db.transaction("store", "readwrite"); + var rq = txn.objectStore("store").openCursor(); + rq.onsuccess = function (event: any) { + var cursor = event.target.result; + t.true(cursor instanceof BridgeIDBCursor, "cursor exist"); + + cursor.continue(); + t.throws( + function () { + cursor.delete(); + }, + { + name: "InvalidStateError", + }, + ); + + resolve(); + }; }; - }; + }); }); 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 index 3c2ee875d..54745802e 100644 --- a/packages/idb-bridge/src/idb-wpt-ported/idbcursor-reused.test.ts +++ b/packages/idb-bridge/src/idb-wpt-ported/idbcursor-reused.test.ts @@ -1,5 +1,5 @@ import test from "ava"; -import { createdb } from "./wptsupport"; +import { createdb } from "./wptsupport.js"; test("WPT idbcursor-reused.htm", async (t) => { await new Promise<void>((resolve, reject) => { diff --git a/packages/idb-bridge/src/idb-wpt-ported/idbcursor-update-index.test.ts b/packages/idb-bridge/src/idb-wpt-ported/idbcursor-update-index.test.ts index dcbee2b16..81a7cd753 100644 --- a/packages/idb-bridge/src/idb-wpt-ported/idbcursor-update-index.test.ts +++ b/packages/idb-bridge/src/idb-wpt-ported/idbcursor-update-index.test.ts @@ -1,340 +1,356 @@ import test from "ava"; -import { BridgeIDBCursor, BridgeIDBKeyRange } from ".."; +import { BridgeIDBCursor, BridgeIDBKeyRange } from "../bridge-idb.js"; import { createDatabase, createdb, promiseForRequest, promiseForTransaction, -} from "./wptsupport"; +} from "./wptsupport.js"; // IDBCursor.update() - index - modify a record in the object store -test.cb("WPT test idbcursor_update_index.htm", (t) => { - var db: any, - records = [ - { pKey: "primaryKey_0", iKey: "indexKey_0" }, - { pKey: "primaryKey_1", iKey: "indexKey_1" }, - ]; +test("WPT test idbcursor_update_index.htm", (t) => { + return new Promise((resolve, reject) => { + var db: any, + records = [ + { pKey: "primaryKey_0", iKey: "indexKey_0" }, + { pKey: "primaryKey_1", iKey: "indexKey_1" }, + ]; - var open_rq = createdb(t); - open_rq.onupgradeneeded = function (e: any) { - db = e.target.result; + var open_rq = createdb(t); + open_rq.onupgradeneeded = function (e: any) { + db = e.target.result; - var objStore = db.createObjectStore("test", { keyPath: "pKey" }); - objStore.createIndex("index", "iKey"); + var objStore = db.createObjectStore("test", { keyPath: "pKey" }); + objStore.createIndex("index", "iKey"); - for (var i = 0; i < records.length; i++) objStore.add(records[i]); + for (var i = 0; i < records.length; i++) objStore.add(records[i]); - // XXX: Gecko doesn't like this - //e.target.transaction.oncomplete = t.step_func(CursorUpdateRecord); - }; + // XXX: Gecko doesn't like this + //e.target.transaction.oncomplete = t.step_func(CursorUpdateRecord); + }; - open_rq.onsuccess = CursorUpdateRecord; + open_rq.onsuccess = CursorUpdateRecord; - function CursorUpdateRecord(e: any) { - var txn = db.transaction("test", "readwrite"), - cursor_rq = txn.objectStore("test").index("index").openCursor(); - cursor_rq.onsuccess = function (e: any) { - var cursor = e.target.result; + function CursorUpdateRecord(e: any) { + var txn = db.transaction("test", "readwrite"), + cursor_rq = txn.objectStore("test").index("index").openCursor(); + cursor_rq.onsuccess = function (e: any) { + var cursor = e.target.result; - cursor.value.iKey += "_updated"; - cursor.update(cursor.value); - }; + cursor.value.iKey += "_updated"; + cursor.update(cursor.value); + }; - txn.oncomplete = VerifyRecordWasUpdated; - } + txn.oncomplete = VerifyRecordWasUpdated; + } - function VerifyRecordWasUpdated(e: any) { - var cursor_rq = db.transaction("test").objectStore("test").openCursor(); + function VerifyRecordWasUpdated(e: any) { + var cursor_rq = db.transaction("test").objectStore("test").openCursor(); - cursor_rq.onsuccess = function (e: any) { - var cursor = e.target.result; + cursor_rq.onsuccess = function (e: any) { + var cursor = e.target.result; - t.deepEqual(cursor.value.iKey, records[0].iKey + "_updated"); - t.end(); - }; - } + t.deepEqual(cursor.value.iKey, records[0].iKey + "_updated"); + resolve(); + }; + } + }); }); // IDBCursor.update() - index - attempt to modify a record in a read-only transaction -test.cb("WPT test idbcursor_update_index2.htm", (t) => { - var db: any, - records = [ - { pKey: "primaryKey_0", iKey: "indexKey_0" }, - { pKey: "primaryKey_1", iKey: "indexKey_1" }, - ]; - - var open_rq = createdb(t); - open_rq.onupgradeneeded = function (e: any) { - db = e.target.result; - - var objStore = db.createObjectStore("test", { keyPath: "pKey" }); - objStore.createIndex("index", "iKey"); - - for (var i = 0; i < records.length; i++) objStore.add(records[i]); - }; - - open_rq.onsuccess = function (e: any) { - var cursor_rq = db - .transaction("test") - .objectStore("test") - .index("index") - .openCursor(); - - cursor_rq.onsuccess = function (e: any) { - var cursor = e.target.result; - t.throws( - function () { - cursor.update(cursor.value); - }, - { name: "ReadOnlyError" }, - ); - t.end(); +test("WPT test idbcursor_update_index2.htm", (t) => { + return new Promise((resolve, reject) => { + var db: any, + records = [ + { pKey: "primaryKey_0", iKey: "indexKey_0" }, + { pKey: "primaryKey_1", iKey: "indexKey_1" }, + ]; + + var open_rq = createdb(t); + open_rq.onupgradeneeded = function (e: any) { + db = e.target.result; + + var objStore = db.createObjectStore("test", { keyPath: "pKey" }); + objStore.createIndex("index", "iKey"); + + for (var i = 0; i < records.length; i++) objStore.add(records[i]); }; - }; -}); -//IDBCursor.update() - index - attempt to modify a record in an inactive transaction -test.cb("WPT test idbcursor_update_index3.htm", (t) => { - var db: any, - records = [ - { pKey: "primaryKey_0", iKey: "indexKey_0" }, - { pKey: "primaryKey_1", iKey: "indexKey_1" }, - ]; - - var open_rq = createdb(t); - open_rq.onupgradeneeded = function (e: any) { - db = e.target.result; - var objStore = db.createObjectStore("test", { keyPath: "pKey" }); - var index = objStore.createIndex("index", "iKey"); - - for (var i = 0; i < records.length; i++) objStore.add(records[i]); - - var cursor_rq = index.openCursor(); - - const window: any = {}; - - cursor_rq.onsuccess = function (e: any) { - var cursor = e.target.result; - t.true(cursor instanceof BridgeIDBCursor, "cursor exist"); - window.cursor = cursor; - window.record = cursor.value; + open_rq.onsuccess = function (e: any) { + var cursor_rq = db + .transaction("test") + .objectStore("test") + .index("index") + .openCursor(); + + cursor_rq.onsuccess = function (e: any) { + var cursor = e.target.result; + t.throws( + function () { + cursor.update(cursor.value); + }, + { name: "ReadOnlyError" }, + ); + resolve(); + }; }; + }); +}); - e.target.transaction.oncomplete = function (e: any) { - t.throws( - function () { - window.cursor.update(window.record); - }, - { name: "TransactionInactiveError" }, - ); - t.end(); +//IDBCursor.update() - index - attempt to modify a record in an inactive transaction +test("WPT test idbcursor_update_index3.htm", (t) => { + return new Promise((resolve, reject) => { + var db: any, + records = [ + { pKey: "primaryKey_0", iKey: "indexKey_0" }, + { pKey: "primaryKey_1", iKey: "indexKey_1" }, + ]; + + var open_rq = createdb(t); + open_rq.onupgradeneeded = function (e: any) { + db = e.target.result; + var objStore = db.createObjectStore("test", { keyPath: "pKey" }); + var index = objStore.createIndex("index", "iKey"); + + for (var i = 0; i < records.length; i++) objStore.add(records[i]); + + var cursor_rq = index.openCursor(); + + const window: any = {}; + + cursor_rq.onsuccess = function (e: any) { + var cursor = e.target.result; + t.true(cursor instanceof BridgeIDBCursor, "cursor exist"); + window.cursor = cursor; + window.record = cursor.value; + }; + + e.target.transaction.oncomplete = function (e: any) { + t.throws( + function () { + window.cursor.update(window.record); + }, + { name: "TransactionInactiveError" }, + ); + resolve(); + }; }; - }; + }); }); // IDBCursor.update() - index - attempt to modify a record when object store been deleted -test.cb("WPT test idbcursor_update_index4.htm", (t) => { - var db: any, - records = [ - { pKey: "primaryKey_0", iKey: "indexKey_0" }, - { pKey: "primaryKey_1", iKey: "indexKey_1" }, - ]; - - var open_rq = createdb(t); - open_rq.onupgradeneeded = function (event: any) { - db = event.target.result; - var objStore = db.createObjectStore("store", { keyPath: "pKey" }); - objStore.createIndex("index", "iKey"); - for (var i = 0; i < records.length; i++) { - objStore.add(records[i]); - } - var rq = objStore.index("index").openCursor(); - rq.onsuccess = function (event: any) { - var cursor = event.target.result; - t.true(cursor instanceof BridgeIDBCursor); - - db.deleteObjectStore("store"); - cursor.value.iKey += "_updated"; - t.throws( - function () { - cursor.update(cursor.value); - }, - { name: "InvalidStateError" }, - "If the cursor's source or effective object store has been deleted, the implementation MUST throw a DOMException of type InvalidStateError", - ); - - t.end(); +test("WPT test idbcursor_update_index4.htm", (t) => { + return new Promise((resolve, reject) => { + var db: any, + records = [ + { pKey: "primaryKey_0", iKey: "indexKey_0" }, + { pKey: "primaryKey_1", iKey: "indexKey_1" }, + ]; + + var open_rq = createdb(t); + open_rq.onupgradeneeded = function (event: any) { + db = event.target.result; + var objStore = db.createObjectStore("store", { keyPath: "pKey" }); + objStore.createIndex("index", "iKey"); + for (var i = 0; i < records.length; i++) { + objStore.add(records[i]); + } + var rq = objStore.index("index").openCursor(); + rq.onsuccess = function (event: any) { + var cursor = event.target.result; + t.true(cursor instanceof BridgeIDBCursor); + + db.deleteObjectStore("store"); + cursor.value.iKey += "_updated"; + t.throws( + function () { + cursor.update(cursor.value); + }, + { name: "InvalidStateError" }, + "If the cursor's source or effective object store has been deleted, the implementation MUST throw a DOMException of type InvalidStateError", + ); + + resolve(); + }; }; - }; + }); }); // IDBCursor.update() - index - throw DataCloneError -test.cb("WPT test idbcursor_update_index5.htm", (t) => { - var db: any, - records = [ - { pKey: "primaryKey_0", iKey: "indexKey_0" }, - { pKey: "primaryKey_1", iKey: "indexKey_1" }, - ]; - - var open_rq = createdb(t); - open_rq.onupgradeneeded = function (e: any) { - db = e.target.result; - - var objStore = db.createObjectStore("test", { keyPath: "pKey" }); - objStore.createIndex("index", "iKey"); - - for (var i = 0; i < records.length; i++) objStore.add(records[i]); - }; - - open_rq.onsuccess = function (e: any) { - var cursor_rq = db - .transaction("test", "readwrite") - .objectStore("test") - .index("index") - .openCursor(); - - cursor_rq.onsuccess = function (e: any) { - var cursor = e.target.result; - t.true(cursor instanceof BridgeIDBCursor); - - var record = cursor.value; - // Original test uses different uncloneable value - record.data = { foo: () => {} }; - t.throws( - function () { - cursor.update(record); - }, - { name: "DataCloneError" }, - ); - t.end(); +test("WPT test idbcursor_update_index5.htm", (t) => { + return new Promise((resolve, reject) => { + var db: any, + records = [ + { pKey: "primaryKey_0", iKey: "indexKey_0" }, + { pKey: "primaryKey_1", iKey: "indexKey_1" }, + ]; + + var open_rq = createdb(t); + open_rq.onupgradeneeded = function (e: any) { + db = e.target.result; + + var objStore = db.createObjectStore("test", { keyPath: "pKey" }); + objStore.createIndex("index", "iKey"); + + for (var i = 0; i < records.length; i++) objStore.add(records[i]); + }; + + open_rq.onsuccess = function (e: any) { + var cursor_rq = db + .transaction("test", "readwrite") + .objectStore("test") + .index("index") + .openCursor(); + + cursor_rq.onsuccess = function (e: any) { + var cursor = e.target.result; + t.true(cursor instanceof BridgeIDBCursor); + + var record = cursor.value; + // Original test uses different uncloneable value + record.data = { foo: () => {} }; + t.throws( + function () { + cursor.update(record); + }, + { name: "DataCloneError" }, + ); + resolve(); + }; }; - }; + }); }); // IDBCursor.update() - index - no argument -test.cb("WPT test idbcursor_update_index6.htm", (t) => { - var db: any, - records = [ - { pKey: "primaryKey_0", iKey: "indexKey_0" }, - { pKey: "primaryKey_1", iKey: "indexKey_1" }, - ]; - - var open_rq = createdb(t); - open_rq.onupgradeneeded = function (e: any) { - db = e.target.result; - - var objStore = db.createObjectStore("test", { keyPath: "pKey" }); - objStore.createIndex("index", "iKey"); - - for (var i = 0; i < records.length; i++) objStore.add(records[i]); - }; - - open_rq.onsuccess = function (e: any) { - var cursor_rq = db - .transaction("test") - .objectStore("test") - .index("index") - .openCursor(); - - cursor_rq.onsuccess = function (e: any) { - var cursor = e.target.result; - t.true(cursor instanceof BridgeIDBCursor); - - t.throws( - function () { - cursor.update(); - }, - { - instanceOf: TypeError, - }, - ); - t.end(); +test("WPT test idbcursor_update_index6.htm", (t) => { + return new Promise((resolve, reject) => { + var db: any, + records = [ + { pKey: "primaryKey_0", iKey: "indexKey_0" }, + { pKey: "primaryKey_1", iKey: "indexKey_1" }, + ]; + + var open_rq = createdb(t); + open_rq.onupgradeneeded = function (e: any) { + db = e.target.result; + + var objStore = db.createObjectStore("test", { keyPath: "pKey" }); + objStore.createIndex("index", "iKey"); + + for (var i = 0; i < records.length; i++) objStore.add(records[i]); + }; + + open_rq.onsuccess = function (e: any) { + var cursor_rq = db + .transaction("test") + .objectStore("test") + .index("index") + .openCursor(); + + cursor_rq.onsuccess = function (e: any) { + var cursor = e.target.result; + t.true(cursor instanceof BridgeIDBCursor); + + t.throws( + function () { + cursor.update(); + }, + { + instanceOf: TypeError, + }, + ); + resolve(); + }; }; - }; + }); }); // IDBCursor.update() - index - throw DataError -test.cb("WPT test idbcursor_update_index7.htm", (t) => { - var db: any, - records = [ - { pKey: "primaryKey_0", iKey: "indexKey_0" }, - { pKey: "primaryKey_1", iKey: "indexKey_1" }, - ]; - - var open_rq = createdb(t); - open_rq.onupgradeneeded = function (e: any) { - db = e.target.result; - - var objStore = db.createObjectStore("test", { keyPath: "pKey" }); - objStore.createIndex("index", "iKey"); - - for (var i = 0; i < records.length; i++) objStore.add(records[i]); - }; - - open_rq.onsuccess = function (e: any) { - var cursor_rq = db - .transaction("test", "readwrite") - .objectStore("test") - .index("index") - .openCursor(); - - cursor_rq.onsuccess = function (e: any) { - var cursor = e.target.result; - t.true(cursor instanceof BridgeIDBCursor); - - t.throws( - function () { - cursor.update(null); - }, - { name: "DataError" }, - ); - t.end(); +test("WPT test idbcursor_update_index7.htm", (t) => { + return new Promise((resolve, reject) => { + var db: any, + records = [ + { pKey: "primaryKey_0", iKey: "indexKey_0" }, + { pKey: "primaryKey_1", iKey: "indexKey_1" }, + ]; + + var open_rq = createdb(t); + open_rq.onupgradeneeded = function (e: any) { + db = e.target.result; + + var objStore = db.createObjectStore("test", { keyPath: "pKey" }); + objStore.createIndex("index", "iKey"); + + for (var i = 0; i < records.length; i++) objStore.add(records[i]); + }; + + open_rq.onsuccess = function (e: any) { + var cursor_rq = db + .transaction("test", "readwrite") + .objectStore("test") + .index("index") + .openCursor(); + + cursor_rq.onsuccess = function (e: any) { + var cursor = e.target.result; + t.true(cursor instanceof BridgeIDBCursor); + + t.throws( + function () { + cursor.update(null); + }, + { name: "DataError" }, + ); + resolve(); + }; }; - }; + }); }); // IDBCursor.update() - index - throw InvalidStateError when the cursor is being iterated -test.cb("WPT test idbcursor_update_index8.htm", (t) => { - var db: any, - records = [ - { pKey: "primaryKey_0", iKey: "indexKey_0" }, - { pKey: "primaryKey_1", iKey: "indexKey_1" }, - ]; - - var open_rq = createdb(t); - open_rq.onupgradeneeded = function (e: any) { - db = e.target.result; - - var objStore = db.createObjectStore("store", { keyPath: "pKey" }); - objStore.createIndex("index", "iKey"); - - for (var i = 0; i < records.length; i++) objStore.add(records[i]); - }; - - open_rq.onsuccess = function (e: any) { - var cursor_rq = db - .transaction("store", "readwrite") - .objectStore("store") - .index("index") - .openCursor(); - - cursor_rq.onsuccess = function (e: any) { - var cursor = e.target.result; - t.true(cursor instanceof BridgeIDBCursor, "cursor exists"); +test("WPT test idbcursor_update_index8.htm", (t) => { + return new Promise((resolve, reject) => { + var db: any, + records = [ + { pKey: "primaryKey_0", iKey: "indexKey_0" }, + { pKey: "primaryKey_1", iKey: "indexKey_1" }, + ]; + + var open_rq = createdb(t); + open_rq.onupgradeneeded = function (e: any) { + db = e.target.result; + + var objStore = db.createObjectStore("store", { keyPath: "pKey" }); + objStore.createIndex("index", "iKey"); + + for (var i = 0; i < records.length; i++) objStore.add(records[i]); + }; - cursor.continue(); - t.throws( - function () { - cursor.update({ pKey: "primaryKey_0", iKey: "indexKey_0_updated" }); - }, - { - name: "InvalidStateError", - }, - ); - - t.end(); + open_rq.onsuccess = function (e: any) { + var cursor_rq = db + .transaction("store", "readwrite") + .objectStore("store") + .index("index") + .openCursor(); + + cursor_rq.onsuccess = function (e: any) { + var cursor = e.target.result; + t.true(cursor instanceof BridgeIDBCursor, "cursor exists"); + + cursor.continue(); + t.throws( + function () { + cursor.update({ pKey: "primaryKey_0", iKey: "indexKey_0_updated" }); + }, + { + name: "InvalidStateError", + }, + ); + + resolve(); + }; }; - }; + }); }); // Index cursor - indexed values updated during iteration diff --git a/packages/idb-bridge/src/idb-wpt-ported/idbfactory-cmp.test.ts b/packages/idb-bridge/src/idb-wpt-ported/idbfactory-cmp.test.ts index c7a25a46b..a6cb97612 100644 --- a/packages/idb-bridge/src/idb-wpt-ported/idbfactory-cmp.test.ts +++ b/packages/idb-bridge/src/idb-wpt-ported/idbfactory-cmp.test.ts @@ -1,5 +1,5 @@ import test from "ava"; -import { createdb, idbFactory } from "./wptsupport"; +import { idbFactory } from "./wptsupport.js"; test("WPT idbfactory-cmp*.html", async (t) => { const indexedDB = idbFactory; diff --git a/packages/idb-bridge/src/idb-wpt-ported/idbfactory-open.test.ts b/packages/idb-bridge/src/idb-wpt-ported/idbfactory-open.test.ts index bba9c6e54..02618f171 100644 --- a/packages/idb-bridge/src/idb-wpt-ported/idbfactory-open.test.ts +++ b/packages/idb-bridge/src/idb-wpt-ported/idbfactory-open.test.ts @@ -1,7 +1,7 @@ import test from "ava"; -import { BridgeIDBVersionChangeEvent } from "../bridge-idb"; -import FakeEvent from "../util/FakeEvent"; -import { createdb, format_value, idbFactory } from "./wptsupport"; +import { BridgeIDBVersionChangeEvent } from "../bridge-idb.js"; +import FakeEvent from "../util/FakeEvent.js"; +import { createdb, format_value, idbFactory } from "./wptsupport.js"; // IDBFactory.open() - request has no source test("WPT idbfactory-open.htm", async (t) => { 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 751b4f983..d3b6e844e 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 @@ -1,7 +1,7 @@ import test from "ava"; -import { BridgeIDBKeyRange, BridgeIDBRequest } from ".."; -import { IDBDatabase } from "../idbtypes"; -import { createdb } from "./wptsupport"; +import { BridgeIDBKeyRange } from "../bridge-idb.js"; +import { IDBDatabase } from "../idbtypes.js"; +import { createdb } from "./wptsupport.js"; // IDBIndex.get() - returns the record test("WPT idbindex_get.htm", async (t) => { diff --git a/packages/idb-bridge/src/idb-wpt-ported/idbindex-openCursor.test.ts b/packages/idb-bridge/src/idb-wpt-ported/idbindex-openCursor.test.ts index f4515b69e..765bcf06a 100644 --- a/packages/idb-bridge/src/idb-wpt-ported/idbindex-openCursor.test.ts +++ b/packages/idb-bridge/src/idb-wpt-ported/idbindex-openCursor.test.ts @@ -1,82 +1,85 @@ import test from "ava"; -import { BridgeIDBCursor } from ".."; -import { BridgeIDBCursorWithValue } from "../bridge-idb"; -import { IDBDatabase } from "../idbtypes"; -import { createdb } from "./wptsupport"; +import { createdb } from "./wptsupport.js"; // IDBIndex.openCursor() - throw InvalidStateError when the index is deleted -test.cb("WPT test idbindex-openCursor.htm", (t) => { - var db; +test("WPT test idbindex-openCursor.htm", (t) => { + return new Promise((resolve, reject) => { + var db; - 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"); + 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" }); - store.deleteIndex("index"); + store.add({ key: 1, indexedProperty: "data" }); + store.deleteIndex("index"); - t.throws( - () => { - index.openCursor(); - }, - { name: "InvalidStateError" }, - ); + t.throws( + () => { + index.openCursor(); + }, + { name: "InvalidStateError" }, + ); - t.end(); - }; + resolve(); + }; + }); }); // IDBIndex.openCursor() - throw TransactionInactiveError on aborted transaction -test.cb("WPT test idbindex-openCursor2.htm", (t) => { - var db; +test("WPT test idbindex-openCursor2.htm", (t) => { + return new Promise((resolve, reject) => { + var db; - 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" }); - }; - open_rq.onsuccess = function (e: any) { - db = e.target.result; - var tx = db.transaction("store"); - var index = tx.objectStore("store").index("index"); - tx.abort(); + 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" }); + }; + open_rq.onsuccess = function (e: any) { + db = e.target.result; + var tx = db.transaction("store"); + var index = tx.objectStore("store").index("index"); + tx.abort(); - t.throws( - () => { - index.openCursor(); - }, - { name: "TransactionInactiveError" }, - ); + t.throws( + () => { + index.openCursor(); + }, + { name: "TransactionInactiveError" }, + ); - t.end(); - }; + resolve(); + }; + }); }); // IDBIndex.openCursor() - throw InvalidStateError on index deleted by aborted upgrade -test.cb("WPT test idbindex-openCursor3.htm", (t) => { - var db; +test("WPT test idbindex-openCursor3.htm", (t) => { + return new Promise((resolve, reject) => { + var db; - 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" }); + 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(); + e.target.transaction.abort(); - t.throws( - () => { - console.log("index before openCursor", index); - index.openCursor(); - }, - { name: "InvalidStateError" }, - ); + t.throws( + () => { + console.log("index before openCursor", index); + index.openCursor(); + }, + { name: "InvalidStateError" }, + ); - t.end(); - }; + resolve(); + }; + }); }); diff --git a/packages/idb-bridge/src/idb-wpt-ported/idbobjectstore-add-put-exception-order.test.ts b/packages/idb-bridge/src/idb-wpt-ported/idbobjectstore-add-put-exception-order.test.ts index a3aead9db..901eda89c 100644 --- a/packages/idb-bridge/src/idb-wpt-ported/idbobjectstore-add-put-exception-order.test.ts +++ b/packages/idb-bridge/src/idb-wpt-ported/idbobjectstore-add-put-exception-order.test.ts @@ -1,8 +1,5 @@ import test, { ExecutionContext } from "ava"; -import { BridgeIDBCursor } from ".."; -import { BridgeIDBRequest } from "../bridge-idb"; -import { InvalidStateError } from "../util/errors"; -import { createdb, indexeddb_test } from "./wptsupport"; +import { indexeddb_test } from "./wptsupport.js"; async function t1(t: ExecutionContext, method: string): Promise<void> { await indexeddb_test( diff --git a/packages/idb-bridge/src/idb-wpt-ported/idbobjectstore-add.test.ts b/packages/idb-bridge/src/idb-wpt-ported/idbobjectstore-add.test.ts index 02f05f468..e8bc17471 100644 --- a/packages/idb-bridge/src/idb-wpt-ported/idbobjectstore-add.test.ts +++ b/packages/idb-bridge/src/idb-wpt-ported/idbobjectstore-add.test.ts @@ -1,7 +1,7 @@ import test from "ava"; -import { BridgeIDBRequest } from ".."; -import { IDBDatabase } from "../idbtypes"; -import { createdb } from "./wptsupport"; +import { BridgeIDBRequest } from "../bridge-idb.js"; +import { IDBDatabase } from "../idbtypes.js"; +import { createdb } from "./wptsupport.js"; // IDBObjectStore.add() - add with an inline key test("WPT idbobjectstore_add.htm", async (t) => { 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 index 0c9d30b7d..79064d19d 100644 --- a/packages/idb-bridge/src/idb-wpt-ported/idbobjectstore-get.test.ts +++ b/packages/idb-bridge/src/idb-wpt-ported/idbobjectstore-get.test.ts @@ -1,159 +1,172 @@ import test from "ava"; -import { BridgeIDBKeyRange, BridgeIDBRequest } from ".."; -import { IDBDatabase } from "../idbtypes"; -import { createdb } from "./wptsupport"; +import { BridgeIDBKeyRange } from "../bridge-idb.js"; +import { createdb } from "./wptsupport.js"; // 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(); +test("WPT idbobjectstore_get.htm", (t) => { + return new Promise((resolve, reject) => { + 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); + resolve(); + }; + }; + }); }); // 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(); +test("WPT idbobjectstore_get2.htm", (t) => { + return new Promise((resolve, reject) => { + 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); + resolve(); + }; }; - }; + }); }); // 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(); +test("WPT idbobjectstore_get3.htm", (t) => { + return new Promise((resolve, reject) => { + 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); + resolve(); + }; + }; + }); }); // 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); +test("WPT idbobjectstore_get4.htm", (t) => { + return new Promise((resolve, reject) => { + 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 () { + resolve(); + }, 10); + }; }; - }; - open_rq.onsuccess = function () {}; + 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(); +test("WPT idbobjectstore_get5.htm", (t) => { + return new Promise((resolve, reject) => { + 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)"); + resolve(); + }; }; - }; + }); }); // 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(); - }; +test("WPT idbobjectstore_get6.htm", (t) => { + return new Promise((resolve, reject) => { + 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.", + ); + resolve(); + }; + }); }); // 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(); - }; +test("WPT idbobjectstore_get7.htm", (t) => { + return new Promise((resolve, reject) => { + 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.", + ); + resolve(); + }; + }); }); diff --git a/packages/idb-bridge/src/idb-wpt-ported/idbobjectstore-put.test.ts b/packages/idb-bridge/src/idb-wpt-ported/idbobjectstore-put.test.ts index 3ca1b8ecb..152e3a9c1 100644 --- a/packages/idb-bridge/src/idb-wpt-ported/idbobjectstore-put.test.ts +++ b/packages/idb-bridge/src/idb-wpt-ported/idbobjectstore-put.test.ts @@ -1,449 +1,483 @@ import test from "ava"; -import { BridgeIDBKeyRange, BridgeIDBRequest } from ".."; -import { IDBDatabase } from "../idbtypes"; -import { createdb } from "./wptsupport"; +import { BridgeIDBRequest } from "../bridge-idb.js"; +import { createdb } from "./wptsupport.js"; // IDBObjectStore.put() - put with an inline key -test.cb("WPT idbobjectstore_put.htm", (t) => { - var db: any, - record = { key: 1, property: "data" }; +test("WPT idbobjectstore_put.htm", (t) => { + return new Promise((resolve, reject) => { + var db: any, + record = { key: 1, property: "data" }; - var open_rq = createdb(t); - open_rq.onupgradeneeded = function (e: any) { - db = e.target.result; - var objStore = db.createObjectStore("store", { keyPath: "key" }); + var open_rq = createdb(t); + open_rq.onupgradeneeded = function (e: any) { + db = e.target.result; + var objStore = db.createObjectStore("store", { keyPath: "key" }); - objStore.put(record); - }; + objStore.put(record); + }; - open_rq.onsuccess = function (e: any) { - var rq = db.transaction("store").objectStore("store").get(record.key); + 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.property, record.property); - t.deepEqual(e.target.result.key, record.key); - t.end(); + rq.onsuccess = function (e: any) { + t.deepEqual(e.target.result.property, record.property); + t.deepEqual(e.target.result.key, record.key); + resolve(); + }; }; - }; + }); }); // IDBObjectStore.put() - put with an out-of-line key -test.cb("WPT idbobjectstore_put2.htm", (t) => { - var db: any, - key = 1, - record = { property: "data" }; - - var open_rq = createdb(t); - open_rq.onupgradeneeded = function (e: any) { - db = e.target.result; - var objStore = db.createObjectStore("store"); - - objStore.put(record, key); - }; +test("WPT idbobjectstore_put2.htm", (t) => { + return new Promise((resolve, reject) => { + var db: any, + key = 1, + record = { property: "data" }; + + var open_rq = createdb(t); + open_rq.onupgradeneeded = function (e: any) { + db = e.target.result; + var objStore = db.createObjectStore("store"); + + objStore.put(record, key); + }; - open_rq.onsuccess = function (e: any) { - var rq = db.transaction("store").objectStore("store").get(key); + open_rq.onsuccess = function (e: any) { + var rq = db.transaction("store").objectStore("store").get(key); - rq.onsuccess = function (e: any) { - t.deepEqual(e.target.result.property, record.property); + rq.onsuccess = function (e: any) { + t.deepEqual(e.target.result.property, record.property); - t.end(); + resolve(); + }; }; - }; + }); }); // IDBObjectStore.put() - put with an out-of-line key -test.cb("WPT idbobjectstore_put3.htm", (t) => { - var db: any, - success_event: any, - record = { key: 1, property: "data" }, - record_put = { key: 1, property: "changed", more: ["stuff", 2] }; - - var open_rq = createdb(t); - open_rq.onupgradeneeded = function (e: any) { - db = e.target.result; - var objStore = db.createObjectStore("store", { keyPath: "key" }); - objStore.put(record); - - var rq = objStore.put(record_put); - rq.onerror = () => t.fail("error on put"); - - rq.onsuccess = function (e: any) { - success_event = true; +test("WPT idbobjectstore_put3.htm", (t) => { + return new Promise((resolve, reject) => { + var db: any, + success_event: any, + record = { key: 1, property: "data" }, + record_put = { key: 1, property: "changed", more: ["stuff", 2] }; + + var open_rq = createdb(t); + open_rq.onupgradeneeded = function (e: any) { + db = e.target.result; + var objStore = db.createObjectStore("store", { keyPath: "key" }); + objStore.put(record); + + var rq = objStore.put(record_put); + rq.onerror = () => t.fail("error on put"); + + rq.onsuccess = function (e: any) { + success_event = true; + }; }; - }; - open_rq.onsuccess = function (e: any) { - t.true(success_event); + open_rq.onsuccess = function (e: any) { + t.true(success_event); - var rq = db.transaction("store").objectStore("store").get(1); + var rq = db.transaction("store").objectStore("store").get(1); - rq.onsuccess = function (e: any) { - var rec = e.target.result; + rq.onsuccess = function (e: any) { + var rec = e.target.result; - t.deepEqual(rec.key, record_put.key); - t.deepEqual(rec.property, record_put.property); - t.deepEqual(rec.more, record_put.more); + t.deepEqual(rec.key, record_put.key); + t.deepEqual(rec.property, record_put.property); + t.deepEqual(rec.more, record_put.more); - t.end(); + resolve(); + }; }; - }; + }); }); // IDBObjectStore.put() - put where an index has unique:true specified -test.cb("WPT idbobjectstore_put4.htm", (t) => { - var db: any, - record = { key: 1, property: "data" }; +test("WPT idbobjectstore_put4.htm", (t) => { + return new Promise((resolve, reject) => { + var db: any, + record = { key: 1, property: "data" }; + + var open_rq = createdb(t); + open_rq.onupgradeneeded = function (e: any) { + db = e.target.result; + var objStore = db.createObjectStore("store", { autoIncrement: true }); + objStore.createIndex("i1", "property", { unique: true }); + objStore.put(record); + + var rq = objStore.put(record); + rq.onsuccess = () => + t.fail("success on putting duplicate indexed record"); + + rq.onerror = function (e: any) { + t.deepEqual(rq.error.name, "ConstraintError"); + t.deepEqual(e.target.error.name, "ConstraintError"); + + t.deepEqual(e.type, "error"); + + e.preventDefault(); + e.stopPropagation(); + }; + }; - var open_rq = createdb(t); - open_rq.onupgradeneeded = function (e: any) { - db = e.target.result; - var objStore = db.createObjectStore("store", { autoIncrement: true }); - objStore.createIndex("i1", "property", { unique: true }); - objStore.put(record); + // Defer done, giving a spurious rq.onsuccess a chance to run + open_rq.onsuccess = function (e: any) { + resolve(); + }; + }); +}); - var rq = objStore.put(record); - rq.onsuccess = () => t.fail("success on putting duplicate indexed record"); +// IDBObjectStore.put() - object store's key path is an object attribute +test("WPT idbobjectstore_put5.htm", (t) => { + return new Promise((resolve, reject) => { + var db: any, + record = { test: { obj: { key: 1 } }, property: "data" }; + + var open_rq = createdb(t); + open_rq.onupgradeneeded = function (e: any) { + db = e.target.result; + var objStore = db.createObjectStore("store", { keyPath: "test.obj.key" }); + objStore.put(record); + }; - rq.onerror = function (e: any) { - t.deepEqual(rq.error.name, "ConstraintError"); - t.deepEqual(e.target.error.name, "ConstraintError"); + open_rq.onsuccess = function (e: any) { + var rq = db + .transaction("store") + .objectStore("store") + .get(record.test.obj.key); - t.deepEqual(e.type, "error"); + rq.onsuccess = function (e: any) { + t.deepEqual(e.target.result.property, record.property); - e.preventDefault(); - e.stopPropagation(); + resolve(); + }; }; - }; - - // Defer done, giving a spurious rq.onsuccess a chance to run - open_rq.onsuccess = function (e: any) { - t.end(); - }; + }); }); -// IDBObjectStore.put() - object store's key path is an object attribute -test.cb("WPT idbobjectstore_put5.htm", (t) => { - var db: any, - record = { test: { obj: { key: 1 } }, property: "data" }; - - var open_rq = createdb(t); - open_rq.onupgradeneeded = function (e: any) { - db = e.target.result; - var objStore = db.createObjectStore("store", { keyPath: "test.obj.key" }); - objStore.put(record); - }; - - open_rq.onsuccess = function (e: any) { - var rq = db - .transaction("store") - .objectStore("store") - .get(record.test.obj.key); - - rq.onsuccess = function (e: any) { - t.deepEqual(e.target.result.property, record.property); - - t.end(); +// IDBObjectStore.put() - autoIncrement and inline keys +test("WPT idbobjectstore_put6.htm", (t) => { + return new Promise((resolve, reject) => { + var db: any, + record = { property: "data" }, + expected_keys = [1, 2, 3, 4]; + + var open_rq = createdb(t); + open_rq.onupgradeneeded = function (e: any) { + db = e.target.result; + var objStore = db.createObjectStore("store", { + keyPath: "key", + autoIncrement: true, + }); + + objStore.put(record); + objStore.put(record); + objStore.put(record); + objStore.put(record); }; - }; -}); -// IDBObjectStore.put() - autoIncrement and inline keys -test.cb("WPT idbobjectstore_put6.htm", (t) => { - var db: any, - record = { property: "data" }, - expected_keys = [1, 2, 3, 4]; - - var open_rq = createdb(t); - open_rq.onupgradeneeded = function (e: any) { - db = e.target.result; - var objStore = db.createObjectStore("store", { - keyPath: "key", - autoIncrement: true, - }); - - objStore.put(record); - objStore.put(record); - objStore.put(record); - objStore.put(record); - }; - - open_rq.onsuccess = function (e: any) { - var actual_keys: any[] = [], - rq = db.transaction("store").objectStore("store").openCursor(); - - rq.onsuccess = function (e: any) { - var cursor = e.target.result; - - if (cursor) { - actual_keys.push(cursor.value.key); - cursor.continue(); - } else { - t.deepEqual(actual_keys, expected_keys); - t.end(); - } + open_rq.onsuccess = function (e: any) { + var actual_keys: any[] = [], + rq = db.transaction("store").objectStore("store").openCursor(); + + rq.onsuccess = function (e: any) { + var cursor = e.target.result; + + if (cursor) { + actual_keys.push(cursor.value.key); + cursor.continue(); + } else { + t.deepEqual(actual_keys, expected_keys); + resolve(); + return; + } + }; }; - }; + }); }); // IDBObjectStore.put() - autoIncrement and out-of-line keys -test.cb("WPT idbobjectstore_put7.htm", (t) => { - var db: any, - record = { property: "data" }, - expected_keys = [1, 2, 3, 4]; - - var open_rq = createdb(t); - open_rq.onupgradeneeded = function (e: any) { - db = e.target.result; - var objStore = db.createObjectStore("store", { autoIncrement: true }); - - objStore.put(record); - objStore.put(record); - objStore.put(record); - objStore.put(record); - }; - - open_rq.onsuccess = function (e) { - var actual_keys: any[] = [], - rq = db.transaction("store").objectStore("store").openCursor(); - - rq.onsuccess = function (e: any) { - var cursor = e.target.result; - - if (cursor) { - actual_keys.push(cursor.key); - cursor.continue(); - } else { - t.deepEqual(actual_keys, expected_keys); - t.end(); - } +test("WPT idbobjectstore_put7.htm", (t) => { + return new Promise((resolve, reject) => { + var db: any, + record = { property: "data" }, + expected_keys = [1, 2, 3, 4]; + + var open_rq = createdb(t); + open_rq.onupgradeneeded = function (e: any) { + db = e.target.result; + var objStore = db.createObjectStore("store", { autoIncrement: true }); + + objStore.put(record); + objStore.put(record); + objStore.put(record); + objStore.put(record); }; - }; + + open_rq.onsuccess = function (e) { + var actual_keys: any[] = [], + rq = db.transaction("store").objectStore("store").openCursor(); + + rq.onsuccess = function (e: any) { + var cursor = e.target.result; + + if (cursor) { + actual_keys.push(cursor.key); + cursor.continue(); + } else { + t.deepEqual(actual_keys, expected_keys); + resolve(); + } + }; + }; + }); }); // IDBObjectStore.put() - object store has autoIncrement:true and the key path is an object attribute -test.cb("WPT idbobjectstore_put8.htm", (t) => { - var db: any, - record = { property: "data" }, - expected_keys = [1, 2, 3, 4]; - - var open_rq = createdb(t); - open_rq.onupgradeneeded = function (e: any) { - db = e.target.result; - var objStore = db.createObjectStore("store", { - keyPath: "test.obj.key", - autoIncrement: true, - }); - - objStore.put(record); - objStore.put(record); - objStore.put(record); - objStore.put(record); - }; - - open_rq.onsuccess = function (e: any) { - var actual_keys: any[] = [], - rq = db.transaction("store").objectStore("store").openCursor(); - - rq.onsuccess = function (e: any) { - var cursor = e.target.result; - - if (cursor) { - actual_keys.push(cursor.value.test.obj.key); - cursor.continue(); - } else { - t.deepEqual(actual_keys, expected_keys); - t.end(); - } +test("WPT idbobjectstore_put8.htm", (t) => { + return new Promise((resolve, reject) => { + var db: any, + record = { property: "data" }, + expected_keys = [1, 2, 3, 4]; + + var open_rq = createdb(t); + open_rq.onupgradeneeded = function (e: any) { + db = e.target.result; + var objStore = db.createObjectStore("store", { + keyPath: "test.obj.key", + autoIncrement: true, + }); + + objStore.put(record); + objStore.put(record); + objStore.put(record); + objStore.put(record); + }; + + open_rq.onsuccess = function (e: any) { + var actual_keys: any[] = [], + rq = db.transaction("store").objectStore("store").openCursor(); + + rq.onsuccess = function (e: any) { + var cursor = e.target.result; + + if (cursor) { + actual_keys.push(cursor.value.test.obj.key); + cursor.continue(); + } else { + t.deepEqual(actual_keys, expected_keys); + resolve(); + return; + } + }; }; - }; + }); }); //IDBObjectStore.put() - Attempt to put a record that does not meet the constraints of an object store's inline key requirements -test.cb("WPT idbobjectstore_put9.htm", (t) => { - var record = { key: 1, property: "data" }; - - var open_rq = createdb(t); - open_rq.onupgradeneeded = function (e: any) { - var rq, - db = e.target.result, - objStore = db.createObjectStore("store", { keyPath: "key" }); - - t.throws( - function () { - rq = objStore.put(record, 1); - }, - { name: "DataError" }, - ); - - t.deepEqual(rq, undefined); - t.end(); - }; +test("WPT idbobjectstore_put9.htm", (t) => { + return new Promise((resolve, reject) => { + var record = { key: 1, property: "data" }; + + var open_rq = createdb(t); + open_rq.onupgradeneeded = function (e: any) { + var rq, + db = e.target.result, + objStore = db.createObjectStore("store", { keyPath: "key" }); + + t.throws( + function () { + rq = objStore.put(record, 1); + }, + { name: "DataError" }, + ); + + t.deepEqual(rq, undefined); + resolve(); + }; + }); }); //IDBObjectStore.put() - Attempt to call 'put' without an key parameter when the object store uses out-of-line keys -test.cb("WPT idbobjectstore_put10.htm", (t) => { - var db: any, - record = { property: "data" }; - - var open_rq = createdb(t); - open_rq.onupgradeneeded = function (e: any) { - db = e.target.result; - - var rq, - objStore = db.createObjectStore("store", { keyPath: "key" }); - - t.throws( - function () { - rq = objStore.put(record); - }, - { name: "DataError" }, - ); - - t.deepEqual(rq, undefined); - t.end(); - }; +test("WPT idbobjectstore_put10.htm", (t) => { + return new Promise((resolve, reject) => { + var db: any, + record = { property: "data" }; + + var open_rq = createdb(t); + open_rq.onupgradeneeded = function (e: any) { + db = e.target.result; + + var rq, + objStore = db.createObjectStore("store", { keyPath: "key" }); + + t.throws( + function () { + rq = objStore.put(record); + }, + { name: "DataError" }, + ); + + t.deepEqual(rq, undefined); + resolve(); + }; + }); }); // IDBObjectStore.put() - Attempt to put a record where the record's key does not meet the constraints of a valid key -test.cb("WPT idbobjectstore_put11.htm", (t) => { - var db: any, - record = { key: { value: 1 }, property: "data" }; - - var open_rq = createdb(t); - open_rq.onupgradeneeded = function (e: any) { - db = e.target.result; - - var rq, - objStore = db.createObjectStore("store", { keyPath: "key" }); - - t.throws( - function () { - rq = objStore.put(record); - }, - { name: "DataError" }, - ); - - t.deepEqual(rq, undefined); - t.end(); - }; +test("WPT idbobjectstore_put11.htm", (t) => { + return new Promise((resolve, reject) => { + var db: any, + record = { key: { value: 1 }, property: "data" }; + + var open_rq = createdb(t); + open_rq.onupgradeneeded = function (e: any) { + db = e.target.result; + + var rq, + objStore = db.createObjectStore("store", { keyPath: "key" }); + + t.throws( + function () { + rq = objStore.put(record); + }, + { name: "DataError" }, + ); + + t.deepEqual(rq, undefined); + resolve(); + }; + }); }); // IDBObjectStore.put() - Attempt to put a record where the record's in-line key is not defined -test.cb("WPT idbobjectstore_put12.htm", (t) => { - var db: any, - record = { property: "data" }; - - var open_rq = createdb(t); - open_rq.onupgradeneeded = function (e: any) { - db = e.target.result; - - var rq, - objStore = db.createObjectStore("store", { keyPath: "key" }); - - t.throws( - function () { - rq = objStore.put(record); - }, - { name: "DataError" }, - ); - - t.deepEqual(rq, undefined); - t.end(); - }; +test("WPT idbobjectstore_put12.htm", (t) => { + return new Promise((resolve, reject) => { + var db: any, + record = { property: "data" }; + + var open_rq = createdb(t); + open_rq.onupgradeneeded = function (e: any) { + db = e.target.result; + + var rq, + objStore = db.createObjectStore("store", { keyPath: "key" }); + + t.throws( + function () { + rq = objStore.put(record); + }, + { name: "DataError" }, + ); + + t.deepEqual(rq, undefined); + resolve(); + }; + }); }); // IDBObjectStore.put() - Attempt to put a record where the out of line key provided does not meet the constraints of a valid key -test.cb("WPT idbobjectstore_put13.htm", (t) => { - var db: any, - record = { property: "data" }; - - var open_rq = createdb(t); - open_rq.onupgradeneeded = function (e: any) { - db = e.target.result; - - var rq, - objStore = db.createObjectStore("store"); - - t.throws( - function () { - rq = objStore.put(record, { value: 1 }); - }, - { - name: "DataError", - }, - ); - - t.deepEqual(rq, undefined); - t.end(); - }; +test("WPT idbobjectstore_put13.htm", (t) => { + return new Promise((resolve, reject) => { + var db: any, + record = { property: "data" }; + + var open_rq = createdb(t); + open_rq.onupgradeneeded = function (e: any) { + db = e.target.result; + + var rq, + objStore = db.createObjectStore("store"); + + t.throws( + function () { + rq = objStore.put(record, { value: 1 }); + }, + { + name: "DataError", + }, + ); + + t.deepEqual(rq, undefined); + resolve(); + }; + }); }); // IDBObjectStore.put() - Put a record where a value being indexed does not meet the constraints of a valid key -test.cb("WPT idbobjectstore_put14.htm", (t) => { - var db: any, - record = { key: 1, indexedProperty: { property: "data" } }; +test("WPT idbobjectstore_put14.htm", (t) => { + return new Promise((resolve, reject) => { + var db: any, + record = { key: 1, indexedProperty: { property: "data" } }; - var open_rq = createdb(t); - open_rq.onupgradeneeded = function (e: any) { - db = e.target.result; + var open_rq = createdb(t); + open_rq.onupgradeneeded = function (e: any) { + db = e.target.result; - var rq, - objStore = db.createObjectStore("store", { keyPath: "key" }); + var rq, + objStore = db.createObjectStore("store", { keyPath: "key" }); - objStore.createIndex("index", "indexedProperty"); + objStore.createIndex("index", "indexedProperty"); - rq = objStore.put(record); + rq = objStore.put(record); - t.true(rq instanceof BridgeIDBRequest); - rq.onsuccess = function () { - t.end(); + t.true(rq instanceof BridgeIDBRequest); + rq.onsuccess = function () { + resolve(); + }; }; - }; + }); }); // IDBObjectStore.put() - If the transaction this IDBObjectStore belongs to has its mode set to readonly, throw ReadOnlyError -test.cb("WPT idbobjectstore_put15.htm", (t) => { - var db: any; - - var open_rq = createdb(t); - open_rq.onupgradeneeded = function (event: any) { - db = event.target.result; - db.createObjectStore("store", { keyPath: "pKey" }); - }; - - open_rq.onsuccess = function (event: any) { - var txn = db.transaction("store"); - var ostore = txn.objectStore("store"); - t.throws( - function () { - ostore.put({ pKey: "primaryKey_0" }); - }, - { - name: "ReadOnlyError", - }, - ); - t.end(); - }; +test("WPT idbobjectstore_put15.htm", (t) => { + return new Promise((resolve, reject) => { + var db: any; + + var open_rq = createdb(t); + open_rq.onupgradeneeded = function (event: any) { + db = event.target.result; + db.createObjectStore("store", { keyPath: "pKey" }); + }; + + open_rq.onsuccess = function (event: any) { + var txn = db.transaction("store"); + var ostore = txn.objectStore("store"); + t.throws( + function () { + ostore.put({ pKey: "primaryKey_0" }); + }, + { + name: "ReadOnlyError", + }, + ); + resolve(); + }; + }); }); // IDBObjectStore.put() - If the object store has been deleted, the implementation must throw a DOMException of type InvalidStateError -test.cb("WPT idbobjectstore_put16.htm", (t) => { - var db: any, ostore: any; - - var open_rq = createdb(t); - open_rq.onupgradeneeded = function (event: any) { - db = event.target.result; - ostore = db.createObjectStore("store", { keyPath: "pKey" }); - db.deleteObjectStore("store"); - t.throws( - function () { - ostore.put({ pKey: "primaryKey_0" }); - }, - { - name: "InvalidStateError", - }, - ); - t.end(); - }; +test("WPT idbobjectstore_put16.htm", (t) => { + return new Promise((resolve, reject) => { + var db: any, ostore: any; + + var open_rq = createdb(t); + open_rq.onupgradeneeded = function (event: any) { + db = event.target.result; + ostore = db.createObjectStore("store", { keyPath: "pKey" }); + db.deleteObjectStore("store"); + t.throws( + function () { + ostore.put({ pKey: "primaryKey_0" }); + }, + { + name: "InvalidStateError", + }, + ); + resolve(); + }; + }); }); diff --git a/packages/idb-bridge/src/idb-wpt-ported/idbobjectstore-rename-store.test.ts b/packages/idb-bridge/src/idb-wpt-ported/idbobjectstore-rename-store.test.ts index b60e932b9..a8aab828a 100644 --- a/packages/idb-bridge/src/idb-wpt-ported/idbobjectstore-rename-store.test.ts +++ b/packages/idb-bridge/src/idb-wpt-ported/idbobjectstore-rename-store.test.ts @@ -7,7 +7,7 @@ import { createDatabase, createNotBooksStore, migrateDatabase, -} from "./wptsupport"; +} from "./wptsupport.js"; // IndexedDB: object store renaming support // IndexedDB object store rename in new transaction diff --git a/packages/idb-bridge/src/idb-wpt-ported/idbtransaction-oncomplete.test.ts b/packages/idb-bridge/src/idb-wpt-ported/idbtransaction-oncomplete.test.ts index 8f54fb7cb..a501ff2c9 100644 --- a/packages/idb-bridge/src/idb-wpt-ported/idbtransaction-oncomplete.test.ts +++ b/packages/idb-bridge/src/idb-wpt-ported/idbtransaction-oncomplete.test.ts @@ -1,5 +1,5 @@ import test from "ava"; -import { createdb } from "./wptsupport"; +import { createdb } from "./wptsupport.js"; // IDBTransaction - complete event test("WPT idbtransaction-oncomplete.htm", async (t) => { diff --git a/packages/idb-bridge/src/idb-wpt-ported/keypath.test.ts b/packages/idb-bridge/src/idb-wpt-ported/keypath.test.ts index 20ec6f3fa..7ef1301f7 100644 --- a/packages/idb-bridge/src/idb-wpt-ported/keypath.test.ts +++ b/packages/idb-bridge/src/idb-wpt-ported/keypath.test.ts @@ -1,5 +1,5 @@ import test from "ava"; -import { assert_key_equals, createdb } from "./wptsupport"; +import { assert_key_equals, createdb } from "./wptsupport.js"; test("WPT test keypath.htm", async (t) => { function keypath( diff --git a/packages/idb-bridge/src/idb-wpt-ported/request-bubble-and-capture.test.ts b/packages/idb-bridge/src/idb-wpt-ported/request-bubble-and-capture.test.ts index a7541a683..526c06784 100644 --- a/packages/idb-bridge/src/idb-wpt-ported/request-bubble-and-capture.test.ts +++ b/packages/idb-bridge/src/idb-wpt-ported/request-bubble-and-capture.test.ts @@ -1,7 +1,6 @@ import test from "ava"; -import { BridgeIDBRequest } from ".."; -import { EventTarget, IDBDatabase } from "../idbtypes"; -import { createdb } from "./wptsupport"; +import { EventTarget } from "../idbtypes.js"; +import { createdb } from "./wptsupport.js"; // Bubbling and capturing of request events test("WPT request_bubble-and-capture.htm", async (t) => { diff --git a/packages/idb-bridge/src/idb-wpt-ported/transaction-requestqueue.test.ts b/packages/idb-bridge/src/idb-wpt-ported/transaction-requestqueue.test.ts index 707bb5255..9d76e79f2 100644 --- a/packages/idb-bridge/src/idb-wpt-ported/transaction-requestqueue.test.ts +++ b/packages/idb-bridge/src/idb-wpt-ported/transaction-requestqueue.test.ts @@ -1,5 +1,5 @@ import test from "ava"; -import { createdb } from "./wptsupport"; +import { createdb } from "./wptsupport.js"; // Transactions have a request queue test("transaction-requestqueue.htm", async (t) => { @@ -72,7 +72,7 @@ test("transaction-requestqueue.htm", async (t) => { "os2: 1", "os2: 1", "os1: 2", - ], + ] as any, "transaction keys", ); @@ -93,7 +93,7 @@ test("transaction-requestqueue.htm", async (t) => { "os3: 1", "os1: 2", "os4: 5", - ], + ] as any, "transaction 2 keys", ); diff --git a/packages/idb-bridge/src/idb-wpt-ported/value.test.ts b/packages/idb-bridge/src/idb-wpt-ported/value.test.ts index acae2fe63..a80ec2b5a 100644 --- a/packages/idb-bridge/src/idb-wpt-ported/value.test.ts +++ b/packages/idb-bridge/src/idb-wpt-ported/value.test.ts @@ -1,47 +1,51 @@ import test from "ava"; -import { IDBVersionChangeEvent } from "../idbtypes"; -import { createdb } from "./wptsupport"; +import { IDBVersionChangeEvent } from "../idbtypes.js"; +import { createdb } from "./wptsupport.js"; -test.cb("WPT test value.htm, array", (t) => { - const value = new Array(); - const _instanceof = Array; +test("WPT test value.htm, array", (t) => { + return new Promise((resolve, reject) => { + const value = new Array(); + const _instanceof = Array; - t.plan(1); + t.plan(1); - createdb(t).onupgradeneeded = function (e: IDBVersionChangeEvent) { - (e.target as any).result.createObjectStore("store").add(value, 1); - (e.target as any).onsuccess = (e: any) => { - console.log("in first onsuccess"); - e.target.result - .transaction("store") - .objectStore("store") - .get(1).onsuccess = (e: any) => { - t.assert(e.target.result instanceof _instanceof, "instanceof"); - t.end(); + createdb(t).onupgradeneeded = function (e: IDBVersionChangeEvent) { + (e.target as any).result.createObjectStore("store").add(value, 1); + (e.target as any).onsuccess = (e: any) => { + console.log("in first onsuccess"); + e.target.result + .transaction("store") + .objectStore("store") + .get(1).onsuccess = (e: any) => { + t.assert(e.target.result instanceof _instanceof, "instanceof"); + resolve(); + }; }; }; - }; + }); }); -test.cb("WPT test value.htm, date", (t) => { - const value = new Date(); - const _instanceof = Date; +test("WPT test value.htm, date", (t) => { + return new Promise((resolve, reject) => { + const value = new Date(); + const _instanceof = Date; - t.plan(1); + t.plan(1); - createdb(t).onupgradeneeded = function (e: IDBVersionChangeEvent) { - (e.target as any).result.createObjectStore("store").add(value, 1); - (e.target as any).onsuccess = (e: any) => { - console.log("in first onsuccess"); - e.target.result - .transaction("store") - .objectStore("store") - .get(1).onsuccess = (e: any) => { - console.log("target", e.target); - console.log("result", e.target.result); - t.assert(e.target.result instanceof _instanceof, "instanceof"); - t.end(); + createdb(t).onupgradeneeded = function (e: IDBVersionChangeEvent) { + (e.target as any).result.createObjectStore("store").add(value, 1); + (e.target as any).onsuccess = (e: any) => { + console.log("in first onsuccess"); + e.target.result + .transaction("store") + .objectStore("store") + .get(1).onsuccess = (e: any) => { + console.log("target", e.target); + console.log("result", e.target.result); + t.assert(e.target.result instanceof _instanceof, "instanceof"); + resolve(); + }; }; }; - }; + }); }); diff --git a/packages/idb-bridge/src/idb-wpt-ported/wptsupport.ts b/packages/idb-bridge/src/idb-wpt-ported/wptsupport.ts index 38b44bbec..7f68a53e8 100644 --- a/packages/idb-bridge/src/idb-wpt-ported/wptsupport.ts +++ b/packages/idb-bridge/src/idb-wpt-ported/wptsupport.ts @@ -1,5 +1,5 @@ -import test, { ExecutionContext } from "ava"; -import { BridgeIDBFactory, BridgeIDBRequest } from ".."; +import { ExecutionContext } from "ava"; +import { BridgeIDBFactory, BridgeIDBRequest } from "../bridge-idb.js"; import { IDBDatabase, IDBIndex, @@ -7,10 +7,9 @@ import { IDBOpenDBRequest, IDBRequest, IDBTransaction, - IDBTransactionMode, -} from "../idbtypes"; -import { MemoryBackend } from "../MemoryBackend"; -import { compareKeys } from "../util/cmp"; +} from "../idbtypes.js"; +import { MemoryBackend } from "../MemoryBackend.js"; +import { compareKeys } from "../util/cmp.js"; BridgeIDBFactory.enableTracing = true; const backend = new MemoryBackend(); |