diff options
Diffstat (limited to 'testing/web-platform/tests/IndexedDB/idbdatabase-transaction-exception-order.html')
-rw-r--r-- | testing/web-platform/tests/IndexedDB/idbdatabase-transaction-exception-order.html | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/testing/web-platform/tests/IndexedDB/idbdatabase-transaction-exception-order.html b/testing/web-platform/tests/IndexedDB/idbdatabase-transaction-exception-order.html new file mode 100644 index 0000000000..d06efe1d2f --- /dev/null +++ b/testing/web-platform/tests/IndexedDB/idbdatabase-transaction-exception-order.html @@ -0,0 +1,68 @@ +<!doctype html> +<meta charset=utf-8> +<title>IndexedDB: IDBDatabase transaction() Exception Ordering</title> +<link rel="help" href="https://w3c.github.io/IndexedDB/#dom-idbdatabase-transaction"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/support.js"></script> +<script> + +indexeddb_test( + (t, db) => { + db.createObjectStore('s'); + }, + (t, db) => { + db.close(); + assert_throws_dom('InvalidStateError', () => { + db.transaction('no-such-store'); + }, '"Connection is closed" check (InvalidStateError) should precede ' + + '"store names" check (NotFoundError)'); + t.done(); + }, + 'IDBDatabase.transaction exception order: InvalidStateError vs. NotFoundError' +); + +indexeddb_test( + (t, db) => { + db.createObjectStore('s'); + }, + (t, db) => { + db.close(); + assert_throws_dom('InvalidStateError', () => { + db.transaction([]); + }, '"Connection is closed" check (InvalidStateError) should precede ' + + '"stores is empty" check (InvalidAccessError)'); + t.done(); + }, + 'IDBDatabase.transaction exception order: InvalidStateError vs. InvalidAccessError' +); + +// Verify that the invalid mode check actually throws an exception +indexeddb_test( + (t, db) => { + db.createObjectStore('s'); + }, + (t, db) => { + assert_throws_js(TypeError, () => { + db.transaction('s', 'versionchange'); + }, '"invalid mode" check should throw TypeError'); + t.done(); + }, + 'IDBDatabase.transaction throws exception on invalid mode' +); + +indexeddb_test( + (t, db) => { + db.createObjectStore('s'); + }, + (t, db) => { + assert_throws_dom('NotFoundError', () => { + db.transaction('no-such-store', 'versionchange'); + }, '"No such store" check (NotFoundError) should precede ' + + '"invalid mode" check (TypeError)'); + t.done(); + }, + 'IDBDatabase.transaction exception order: NotFoundError vs. TypeError' +); + +</script> |