82 lines
No EOL
2.1 KiB
JavaScript
82 lines
No EOL
2.1 KiB
JavaScript
// META: title=IDBDatabase.transaction()
|
|
// META: global=window,worker
|
|
// META: script=resources/support.js
|
|
|
|
'use strict';
|
|
|
|
async_test(t => {
|
|
let db;
|
|
const open_rq = createdb(t);
|
|
|
|
open_rq.onupgradeneeded = function () { };
|
|
open_rq.onsuccess = function (e) {
|
|
db = e.target.result;
|
|
|
|
assert_throws_dom('NotFoundError', function () { db.transaction('non-existing'); });
|
|
t.done();
|
|
};
|
|
}, "Attempt to open a transaction with invalid scope");
|
|
|
|
async_test(t => {
|
|
let db;
|
|
const open_rq = createdb(t);
|
|
|
|
open_rq.onupgradeneeded = function (e) {
|
|
db = e.target.result;
|
|
db.createObjectStore('readonly');
|
|
};
|
|
open_rq.onsuccess = function (e) {
|
|
var txn = db.transaction('readonly', 'readonly');
|
|
assert_equals(txn.mode, "readonly", 'txn.mode');
|
|
|
|
t.done();
|
|
};
|
|
}, "Opening a transaction defaults to a read-only mode");
|
|
|
|
async_test(t => {
|
|
let db;
|
|
const open_rq = createdb(t);
|
|
|
|
open_rq.onupgradeneeded = function (e) {
|
|
db = e.target.result;
|
|
db.createObjectStore('test');
|
|
};
|
|
|
|
open_rq.onsuccess = function (e) {
|
|
db.close();
|
|
|
|
assert_throws_dom('InvalidStateError',
|
|
function () { db.transaction('test', 'readonly'); });
|
|
|
|
t.done();
|
|
};
|
|
}, "Attempt to open a transaction from closed database connection");
|
|
|
|
async_test(t => {
|
|
let db;
|
|
const open_rq = createdb(t);
|
|
|
|
open_rq.onupgradeneeded = function (e) {
|
|
db = e.target.result;
|
|
db.createObjectStore('test');
|
|
};
|
|
|
|
open_rq.onsuccess = function (e) {
|
|
assert_throws_js(TypeError,
|
|
function () { db.transaction('test', 'whatever'); });
|
|
|
|
t.done();
|
|
};
|
|
}, "Attempt to open a transaction with invalid mode");
|
|
|
|
async_test(t => {
|
|
let db;
|
|
const open_rq = createdb(t);
|
|
|
|
open_rq.onupgradeneeded = function () { };
|
|
open_rq.onsuccess = function (e) {
|
|
db = e.target.result;
|
|
assert_throws_dom('InvalidAccessError', function () { db.transaction([]); });
|
|
t.done();
|
|
};
|
|
}, "If storeNames is an empty list, the implementation must throw a DOMException of type InvalidAccessError"); |