| Test IndexedDB: mutating records with a r/w cursor updates indexes on those records |
| |
| On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". |
| |
| |
| firstValue = 'hi'; |
| secondValue = 'bye'; |
| objectStoreInfo = [ |
| { name: '1', options: {}, key: 1, |
| entry: { data: firstValue } }, |
| { name: '2', options: { keyPath: 'foo' }, |
| entry: { foo: 1, data: firstValue } }, |
| { name: '3', options: { autoIncrement: true }, |
| entry: { data: firstValue } }, |
| { name: '4', options: { keyPath: 'foo', autoIncrement: true }, |
| entry: { data: firstValue } }, |
| ]; |
| i = 0; |
| |
| indexedDB = self.indexedDB || self.webkitIndexedDB || self.mozIndexedDB || self.msIndexedDB || self.OIndexedDB; |
| |
| indexedDB.deleteDatabase(dbname) |
| info = objectStoreInfo[i]; |
| indexedDB.open(dbname) |
| setupObjectStoreAndCreateIndex(): |
| db = event.target.result |
| objectStore = db.createObjectStore(info.name, info.options); |
| index = objectStore.createIndex('data_index', 'data', { unique: false }); |
| uniqueIndex = objectStore.createIndex('unique_data_index', 'data', { unique: true }); |
| request = objectStore.add(info.entry, info.key); |
| trans = db.transaction(info.name, 'readwrite') |
| trans.oncomplete = test |
| objectStore = trans.objectStore(info.name) |
| index = objectStore.index('data_index') |
| uniqueIndex = objectStore.index('unique_data_index') |
| request = objectStore.openCursor(); |
| cursor = request.result; |
| value = cursor.value; |
| value.data = secondValue; |
| request = cursor.update(value); |
| request = index.get(secondValue); |
| PASS value.data is event.target.result.data |
| request = uniqueIndex.get(secondValue); |
| PASS value.data is event.target.result.data |
| i++; |
| db.close() |
| indexedDB = self.indexedDB || self.webkitIndexedDB || self.mozIndexedDB || self.msIndexedDB || self.OIndexedDB; |
| |
| indexedDB.deleteDatabase(dbname) |
| info = objectStoreInfo[i]; |
| indexedDB.open(dbname) |
| setupObjectStoreAndCreateIndex(): |
| db = event.target.result |
| objectStore = db.createObjectStore(info.name, info.options); |
| index = objectStore.createIndex('data_index', 'data', { unique: false }); |
| uniqueIndex = objectStore.createIndex('unique_data_index', 'data', { unique: true }); |
| request = objectStore.add(info.entry); |
| trans = db.transaction(info.name, 'readwrite') |
| trans.oncomplete = test |
| objectStore = trans.objectStore(info.name) |
| index = objectStore.index('data_index') |
| uniqueIndex = objectStore.index('unique_data_index') |
| request = objectStore.openCursor(); |
| cursor = request.result; |
| value = cursor.value; |
| value.data = secondValue; |
| request = cursor.update(value); |
| request = index.get(secondValue); |
| PASS value.data is event.target.result.data |
| request = uniqueIndex.get(secondValue); |
| PASS value.data is event.target.result.data |
| i++; |
| db.close() |
| indexedDB = self.indexedDB || self.webkitIndexedDB || self.mozIndexedDB || self.msIndexedDB || self.OIndexedDB; |
| |
| indexedDB.deleteDatabase(dbname) |
| info = objectStoreInfo[i]; |
| indexedDB.open(dbname) |
| setupObjectStoreAndCreateIndex(): |
| db = event.target.result |
| objectStore = db.createObjectStore(info.name, info.options); |
| index = objectStore.createIndex('data_index', 'data', { unique: false }); |
| uniqueIndex = objectStore.createIndex('unique_data_index', 'data', { unique: true }); |
| request = objectStore.add(info.entry); |
| trans = db.transaction(info.name, 'readwrite') |
| trans.oncomplete = test |
| objectStore = trans.objectStore(info.name) |
| index = objectStore.index('data_index') |
| uniqueIndex = objectStore.index('unique_data_index') |
| request = objectStore.openCursor(); |
| cursor = request.result; |
| value = cursor.value; |
| value.data = secondValue; |
| request = cursor.update(value); |
| request = index.get(secondValue); |
| PASS value.data is event.target.result.data |
| request = uniqueIndex.get(secondValue); |
| PASS value.data is event.target.result.data |
| i++; |
| db.close() |
| indexedDB = self.indexedDB || self.webkitIndexedDB || self.mozIndexedDB || self.msIndexedDB || self.OIndexedDB; |
| |
| indexedDB.deleteDatabase(dbname) |
| info = objectStoreInfo[i]; |
| indexedDB.open(dbname) |
| setupObjectStoreAndCreateIndex(): |
| db = event.target.result |
| objectStore = db.createObjectStore(info.name, info.options); |
| index = objectStore.createIndex('data_index', 'data', { unique: false }); |
| uniqueIndex = objectStore.createIndex('unique_data_index', 'data', { unique: true }); |
| request = objectStore.add(info.entry); |
| trans = db.transaction(info.name, 'readwrite') |
| trans.oncomplete = test |
| objectStore = trans.objectStore(info.name) |
| index = objectStore.index('data_index') |
| uniqueIndex = objectStore.index('unique_data_index') |
| request = objectStore.openCursor(); |
| cursor = request.result; |
| value = cursor.value; |
| value.data = secondValue; |
| request = cursor.update(value); |
| request = index.get(secondValue); |
| PASS value.data is event.target.result.data |
| request = uniqueIndex.get(secondValue); |
| PASS value.data is event.target.result.data |
| i++; |
| db.close() |
| PASS successfullyParsed is true |
| |
| TEST COMPLETE |
| |