108 lines
3.3 KiB
JavaScript
108 lines
3.3 KiB
JavaScript
// META: global=window,worker
|
|
// META: title=IDBObjectStore.clear()
|
|
// 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 objStore = db.createObjectStore("store", { autoIncrement: true });
|
|
|
|
objStore.add({ property: "data" });
|
|
objStore.add({ something_different: "Yup, totally different" });
|
|
objStore.add(1234);
|
|
objStore.add([1, 2, 1234]);
|
|
|
|
objStore.clear().onsuccess = t.step_func(function(e) {
|
|
assert_equals(e.target.result, undefined);
|
|
});
|
|
};
|
|
|
|
|
|
open_rq.onsuccess = function(e) {
|
|
let rq = db.transaction("store", "readonly")
|
|
.objectStore("store")
|
|
.openCursor();
|
|
|
|
rq.onsuccess = t.step_func(function(e) {
|
|
assert_equals(e.target.result, null, 'cursor');
|
|
t.done();
|
|
});
|
|
};
|
|
}, "Verify clear removes all records ");
|
|
|
|
async_test(t => {
|
|
let db;
|
|
|
|
let open_rq = createdb(t);
|
|
open_rq.onupgradeneeded = function(e) {
|
|
db = e.target.result;
|
|
let objStore = db.createObjectStore("store", { autoIncrement: true });
|
|
objStore.createIndex("index", "indexedProperty");
|
|
|
|
objStore.add({ indexedProperty: "data" });
|
|
objStore.add({ indexedProperty: "yo, man", something_different: "Yup, totally different" });
|
|
objStore.add({ indexedProperty: 1234 });
|
|
objStore.add({ indexedProperty: [1, 2, 1234] });
|
|
objStore.add(1234);
|
|
|
|
objStore.clear().onsuccess = t.step_func(function(e) {
|
|
assert_equals(e.target.result, undefined);
|
|
});
|
|
};
|
|
|
|
open_rq.onsuccess = function(e) {
|
|
let rq = db.transaction("store", "readonly")
|
|
.objectStore("store")
|
|
.index("index")
|
|
.openCursor();
|
|
|
|
rq.onsuccess = t.step_func(function(e) {
|
|
assert_equals(e.target.result, null, 'cursor');
|
|
t.done();
|
|
});
|
|
};
|
|
}, "Clear removes all records from an index ");
|
|
|
|
async_test(t => {
|
|
let db, records = [{ pKey: "primaryKey_0"}, { pKey: "primaryKey_1"}];
|
|
|
|
let open_rq = createdb(t);
|
|
open_rq.onupgradeneeded = function (event) {
|
|
db = event.target.result;
|
|
let objStore = db.createObjectStore("store", {keyPath:"pKey"});
|
|
for (let i = 0; i < records.length; i++) {
|
|
objStore.add(records[i]);
|
|
}
|
|
}
|
|
|
|
open_rq.onsuccess = function (event) {
|
|
let txn = db.transaction("store", "readonly");
|
|
let ostore = txn.objectStore("store");
|
|
t.step(function(){
|
|
assert_throws_dom("ReadOnlyError", function(){
|
|
ostore.clear();
|
|
});
|
|
});
|
|
t.done();
|
|
}
|
|
}, "If the transaction this IDBObjectStore belongs to has its mode set to readonly, throw ReadOnlyError ");
|
|
|
|
async_test(t => {
|
|
let db, ostore;
|
|
|
|
let open_rq = createdb(t);
|
|
open_rq.onupgradeneeded = function (event) {
|
|
db = event.target.result;
|
|
ostore = db.createObjectStore("store", {keyPath:"pKey"});
|
|
db.deleteObjectStore("store");
|
|
assert_throws_dom("InvalidStateError", function(){
|
|
ostore.clear();
|
|
});
|
|
t.done();
|
|
}
|
|
}, "If the object store has been deleted, the implementation must throw a DOMException of type InvalidStateError ");
|