idbobjectstore_clear.any.js (3424B)
1 // META: global=window,worker 2 // META: title=IDBObjectStore.clear() 3 // META: script=resources/support.js 4 5 'use strict'; 6 7 async_test(t => { 8 let db; 9 10 let open_rq = createdb(t); 11 open_rq.onupgradeneeded = function(e) { 12 db = e.target.result; 13 let objStore = db.createObjectStore("store", { autoIncrement: true }); 14 15 objStore.add({ property: "data" }); 16 objStore.add({ something_different: "Yup, totally different" }); 17 objStore.add(1234); 18 objStore.add([1, 2, 1234]); 19 20 objStore.clear().onsuccess = t.step_func(function(e) { 21 assert_equals(e.target.result, undefined); 22 }); 23 }; 24 25 26 open_rq.onsuccess = function(e) { 27 let rq = db.transaction("store", "readonly") 28 .objectStore("store") 29 .openCursor(); 30 31 rq.onsuccess = t.step_func(function(e) { 32 assert_equals(e.target.result, null, 'cursor'); 33 t.done(); 34 }); 35 }; 36 }, "Verify clear removes all records "); 37 38 async_test(t => { 39 let db; 40 41 let open_rq = createdb(t); 42 open_rq.onupgradeneeded = function(e) { 43 db = e.target.result; 44 let objStore = db.createObjectStore("store", { autoIncrement: true }); 45 objStore.createIndex("index", "indexedProperty"); 46 47 objStore.add({ indexedProperty: "data" }); 48 objStore.add({ indexedProperty: "yo, man", something_different: "Yup, totally different" }); 49 objStore.add({ indexedProperty: 1234 }); 50 objStore.add({ indexedProperty: [1, 2, 1234] }); 51 objStore.add(1234); 52 53 objStore.clear().onsuccess = t.step_func(function(e) { 54 assert_equals(e.target.result, undefined); 55 }); 56 }; 57 58 open_rq.onsuccess = function(e) { 59 let rq = db.transaction("store", "readonly") 60 .objectStore("store") 61 .index("index") 62 .openCursor(); 63 64 rq.onsuccess = t.step_func(function(e) { 65 assert_equals(e.target.result, null, 'cursor'); 66 t.done(); 67 }); 68 }; 69 }, "Clear removes all records from an index "); 70 71 async_test(t => { 72 let db, records = [{ pKey: "primaryKey_0"}, { pKey: "primaryKey_1"}]; 73 74 let open_rq = createdb(t); 75 open_rq.onupgradeneeded = function (event) { 76 db = event.target.result; 77 let objStore = db.createObjectStore("store", {keyPath:"pKey"}); 78 for (let i = 0; i < records.length; i++) { 79 objStore.add(records[i]); 80 } 81 } 82 83 open_rq.onsuccess = function (event) { 84 let txn = db.transaction("store", "readonly"); 85 let ostore = txn.objectStore("store"); 86 t.step(function(){ 87 assert_throws_dom("ReadOnlyError", function(){ 88 ostore.clear(); 89 }); 90 }); 91 t.done(); 92 } 93 }, "If the transaction this IDBObjectStore belongs to has its mode set to readonly, throw ReadOnlyError "); 94 95 async_test(t => { 96 let db, ostore; 97 98 let open_rq = createdb(t); 99 open_rq.onupgradeneeded = function (event) { 100 db = event.target.result; 101 ostore = db.createObjectStore("store", {keyPath:"pKey"}); 102 db.deleteObjectStore("store"); 103 assert_throws_dom("InvalidStateError", function(){ 104 ostore.clear(); 105 }); 106 t.done(); 107 } 108 }, "If the object store has been deleted, the implementation must throw a DOMException of type InvalidStateError ");