| /** |
| * @description - Function will create a database with the supplied name |
| * and also create an object store with the specified name. |
| * If a db with the name dbName exists, this will raze the |
| * existing DB beforehand. |
| * @param {string} dbName |
| * @param {string} objectStoreName |
| * @param {testCase} t |
| * @returns {Promise} - A promise that resolves to an indexedDB open request |
| */ |
| function createDB(dbName, objectStoreName, t) { |
| return new Promise((resolve, reject) => { |
| const openRequest = indexedDB.open(dbName); |
| t.add_cleanup(() => { |
| indexedDB.deleteDatabase(dbName); |
| }); |
| |
| openRequest.onerror = () => { |
| reject(openRequest.error); |
| }; |
| openRequest.onsuccess = () => { |
| resolve(openRequest.result); |
| }; |
| openRequest.onupgradeneeded = event => { |
| openRequest.result.createObjectStore(objectStoreName); |
| }; |
| }); |
| } |
| |
| /** |
| * @description - This function will wrap an IDBTransaction in a promise, |
| * resolving in the oncomplete() method and rejecting with the |
| * transaction error in the onabort() case. |
| * @param {IDBTransaction} transaction - The transaction to wrap in a promise. |
| * @returns {Promise} - A promise that resolves when the transaction is either |
| * aborted or completed. |
| */ |
| function transactionPromise(transaction) { |
| return new Promise((resolve, reject) => { |
| transaction.onabort = () => { reject(transaction.error); }; |
| transaction.oncomplete = () => { resolve(); }; |
| }); |
| } |