idbdatabase-transaction-exception-order.any.js (1937B)
1 // META: global=window,worker 2 // META: title=IndexedDB: IDBDatabase transaction() Exception Ordering 3 // META: script=resources/support.js 4 5 // Spec: https://w3c.github.io/IndexedDB/#dom-idbdatabase-transaction 6 7 'use strict'; 8 9 indexeddb_test( 10 (t, db) => { 11 db.createObjectStore('s'); 12 }, 13 (t, db) => { 14 db.close(); 15 assert_throws_dom( 16 'InvalidStateError', () => db.transaction('no-such-store'), 17 '"Connection is closed" check (InvalidStateError) should precede ' + 18 '"store names" check (NotFoundError)'); 19 t.done(); 20 }, 21 'IDBDatabase.transaction exception order: InvalidStateError vs. NotFoundError'); 22 23 indexeddb_test( 24 (t, db) => { 25 db.createObjectStore('s'); 26 }, 27 (t, db) => { 28 db.close(); 29 assert_throws_dom( 30 'InvalidStateError', () => db.transaction([]), 31 '"Connection is closed" check (InvalidStateError) should precede ' + 32 '"stores is empty" check (InvalidAccessError)'); 33 t.done(); 34 }, 35 'IDBDatabase.transaction exception order: InvalidStateError vs. InvalidAccessError'); 36 37 // Verify that the invalid mode check actually throws an exception. 38 indexeddb_test( 39 (t, db) => { 40 db.createObjectStore('s'); 41 }, 42 (t, db) => { 43 assert_throws_js( 44 TypeError, () => db.transaction('s', 'versionchange'), 45 '"invalid mode" check should throw TypeError'); 46 t.done(); 47 }, 48 'IDBDatabase.transaction throws exception on invalid mode'); 49 50 indexeddb_test( 51 (t, db) => { 52 db.createObjectStore('s'); 53 }, 54 (t, db) => { 55 assert_throws_dom( 56 'NotFoundError', 57 () => db.transaction('no-such-store', 'versionchange'), 58 '"No such store" check (NotFoundError) should precede ' + 59 '"invalid mode" check (TypeError)'); 60 t.done(); 61 }, 62 'IDBDatabase.transaction exception order: NotFoundError vs. TypeError');