84 lines
2.4 KiB
JavaScript
84 lines
2.4 KiB
JavaScript
// META: global=window,worker
|
|
// META: title=IDBIndex.openKeyCursor()
|
|
// META: script=resources/support.js
|
|
|
|
'use strict';
|
|
|
|
async_test(t => {
|
|
let db;
|
|
|
|
let open_rq = createdb(t);
|
|
open_rq.onupgradeneeded = function(e) {
|
|
db = e.target.result;
|
|
let store = db.createObjectStore("store", { keyPath: "key" });
|
|
let index = store.createIndex("index", "indexedProperty");
|
|
|
|
store.add({ key: 1, indexedProperty: "data" });
|
|
|
|
assert_throws_dom("DataError", function(){
|
|
index.openKeyCursor(NaN);
|
|
});
|
|
t.done();
|
|
}
|
|
}, "Throw DataError when using a invalid key");
|
|
|
|
async_test(t => {
|
|
let db;
|
|
|
|
let open_rq = createdb(t);
|
|
open_rq.onupgradeneeded = function(e) {
|
|
db = e.target.result;
|
|
let store = db.createObjectStore("store", { keyPath: "key" });
|
|
let index = store.createIndex("index", "indexedProperty");
|
|
|
|
store.add({ key: 1, indexedProperty: "data" });
|
|
store.deleteIndex("index");
|
|
|
|
assert_throws_dom("InvalidStateError", function(){
|
|
index.openKeyCursor();
|
|
});
|
|
t.done();
|
|
}
|
|
}, "Throw InvalidStateError when the index is deleted");
|
|
|
|
async_test(t => {
|
|
let db;
|
|
|
|
let open_rq = createdb(t);
|
|
open_rq.onupgradeneeded = function(e) {
|
|
db = e.target.result;
|
|
let store = db.createObjectStore("store", { keyPath: "key" });
|
|
let index = store.createIndex("index", "indexedProperty");
|
|
store.add({ key: 1, indexedProperty: "data" });
|
|
}
|
|
open_rq.onsuccess = function(e) {
|
|
db = e.target.result;
|
|
let tx = db.transaction('store', 'readonly');
|
|
let index = tx.objectStore('store').index('index');
|
|
tx.abort();
|
|
|
|
assert_throws_dom("TransactionInactiveError", function(){
|
|
index.openKeyCursor();
|
|
});
|
|
t.done();
|
|
}
|
|
}, "Throw TransactionInactiveError on aborted transaction");
|
|
|
|
async_test(t => {
|
|
let db;
|
|
|
|
let open_rq = createdb(t);
|
|
open_rq.onupgradeneeded = function(e) {
|
|
db = e.target.result;
|
|
let store = db.createObjectStore("store", { keyPath: "key" });
|
|
let index = store.createIndex("index", "indexedProperty");
|
|
store.add({ key: 1, indexedProperty: "data" });
|
|
|
|
e.target.transaction.abort();
|
|
|
|
assert_throws_dom("InvalidStateError", function(){
|
|
index.openKeyCursor();
|
|
});
|
|
t.done();
|
|
}
|
|
}, "Throw InvalidStateError on index deleted by aborted upgrade");
|