From 5ff3b44550d4f5ab9a20d85dbf4387d455ebb862 Mon Sep 17 00:00:00 2001 From: Florian Dold Date: Thu, 10 Feb 2022 19:52:45 +0100 Subject: idb-bridge: update tests for ava 4.x --- .../src/idb-wpt-ported/idbobjectstore-put.test.ts | 776 +++++++++++---------- 1 file changed, 405 insertions(+), 371 deletions(-) (limited to 'packages/idb-bridge/src/idb-wpt-ported/idbobjectstore-put.test.ts') 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(); + }; + }); }); -- cgit v1.2.3