96 lines
3.6 KiB
Plaintext
96 lines
3.6 KiB
Plaintext
Test IndexedDB's IDBObjectStore auto-increment feature.
|
|
|
|
On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
|
|
|
|
|
|
indexedDB = self.indexedDB || self.webkitIndexedDB || self.mozIndexedDB || self.msIndexedDB || self.OIndexedDB;
|
|
|
|
indexedDB.deleteDatabase(dbname)
|
|
indexedDB.open(dbname)
|
|
createObjectStore():
|
|
store = db.createObjectStore('StoreWithKeyPath', {keyPath: 'id', autoIncrement: true})
|
|
db.createObjectStore('StoreWithAutoIncrement', {autoIncrement: true})
|
|
db.createObjectStore('PlainOldStore', {autoIncrement: false})
|
|
db.createObjectStore('StoreWithLongKeyPathAndUTF8', {keyPath: 'a.b.c.køi', autoIncrement: true})
|
|
storeNames = db.objectStoreNames
|
|
PASS store.name is "StoreWithKeyPath"
|
|
PASS store.keyPath is "id"
|
|
PASS storeNames.contains('StoreWithKeyPath') is true
|
|
PASS storeNames.contains('StoreWithAutoIncrement') is true
|
|
PASS storeNames.contains('PlainOldStore') is true
|
|
PASS storeNames.length is 4
|
|
setVersionCompleted():
|
|
trans = db.transaction(['StoreWithKeyPath', 'StoreWithAutoIncrement', 'PlainOldStore'], 'readwrite')
|
|
store = trans.objectStore('StoreWithKeyPath')
|
|
Insert into object store with auto increment and key path, with key in the object.
|
|
store.add({name: 'Jeffersson', number: '7010', id: 3})
|
|
addJefferssonSuccess():
|
|
PASS event.target.result is 3
|
|
Insert into object store with auto increment and key path, without key in the object.
|
|
store.add({name: 'Lincoln', number: '7012'})
|
|
addLincolnWithInjectKeySuccess():
|
|
PASS event.target.result is 4
|
|
store.get(4)
|
|
getLincolnAfterInjectedKeySuccess():
|
|
PASS event.target.result.name is "Lincoln"
|
|
PASS event.target.result.number is "7012"
|
|
PASS event.target.result.id is 4
|
|
store.add({name: 'Bob', number: Uint8Array.from([100, 101])})
|
|
putBobSuccess():
|
|
PASS event.target.result is 5
|
|
store.get(5)
|
|
getBobSuccess():
|
|
PASS event.target.result.name is "Bob"
|
|
PASS event.target.result.number is [100, 101]
|
|
store = trans.objectStore('StoreWithAutoIncrement')
|
|
Insert into object store with key gen using explicit key
|
|
store.add({name: 'Lincoln', number: '7012'}, 6)
|
|
addLincolnWithExplicitKeySuccess():
|
|
PASS event.target.result is 6
|
|
store.get(6)
|
|
getLincolnSuccess():
|
|
PASS event.target.result.name is "Lincoln"
|
|
PASS event.target.result.number is "7012"
|
|
store.put({name: 'Abraham', number: '2107'})
|
|
putAbrahamSuccess():
|
|
PASS event.target.result is 7
|
|
store.get(7)
|
|
getAbrahamSuccess():
|
|
PASS event.target.result.name is "Abraham"
|
|
PASS event.target.result.number is "2107"
|
|
store = trans.objectStore('PlainOldStore')
|
|
Try adding with no key to object store without auto increment.
|
|
Expecting exception from store.add({name: 'Adam'})
|
|
PASS Exception was thrown.
|
|
PASS code is 0
|
|
PASS ename is 'DataError'
|
|
Exception message: Failed to store record in an IDBObjectStore: The object store uses out-of-line keys and has no key generator and the key parameter was not provided.
|
|
store.add({name: 'Adam'}, 1)
|
|
addAdamSuccess():
|
|
PASS event.target.result is 1
|
|
testLongKeyPath():
|
|
trans = db.transaction('StoreWithLongKeyPathAndUTF8', 'readwrite')
|
|
store = trans.objectStore('StoreWithLongKeyPathAndUTF8')
|
|
store.add({foo: 'bar'})
|
|
store.add({foo: 'bar', a: {}})
|
|
store.add({foo: 'bar', a: {b: {}}})
|
|
store.add({foo: 'bar', a: {b: {c: {}}}})
|
|
store.openCursor()
|
|
expected = null
|
|
count = 0
|
|
expected = cursor.value.a.b.c.køi + 1
|
|
PASS cursor.value.foo is "bar"
|
|
PASS cursor.value.a.b.c.køi is expected
|
|
expected = cursor.value.a.b.c.køi + 1
|
|
PASS cursor.value.foo is "bar"
|
|
PASS cursor.value.a.b.c.køi is expected
|
|
expected = cursor.value.a.b.c.køi + 1
|
|
PASS cursor.value.foo is "bar"
|
|
PASS cursor.value.a.b.c.køi is expected
|
|
expected = cursor.value.a.b.c.køi + 1
|
|
PASS count is 4
|
|
PASS successfullyParsed is true
|
|
|
|
TEST COMPLETE
|
|
|