blob: d8df3f518ed138944c1b520c28137b3353d1f5cc [file] [log] [blame]
Verify edge cases that lazy index population in an IndexedDB implementation might reveal.
On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
dbname = "lazy-index-population.html"
indexedDB.deleteDatabase(dbname)
indexedDB.open(dbname)
Deleted all object stores.
store = connection.createObjectStore('store')
store.createIndex('index1', 'name', {unique: true})
Verify that uniqueness constraints are enforced with a pre-existing index:
trans = connection.transaction('store', 'readwrite')
store = trans.objectStore('store')
request1 = store.put({name: 'bob'}, 1)
request2 = store.put({name: 'bob'}, 2)
state = 0
request1 received success event
PASS ++state is 1
request2 received error event
PASS ++state is 2
transaction aborted
PASS ++state is 3
PASS trans.error.name is 'ConstraintError'
Verify that uniqueness constraints are enforced when index is created before puts:
connection.close()
indexedDB.open(dbname, 2)
deleteAllObjectStores(connection)
Deleted all object stores.
store = connection.createObjectStore('store')
store.createIndex('index2', 'name', {unique: true})
request1 = store.put({name: 'carol'}, 1)
request2 = store.put({name: 'carol'}, 2)
state = 0
request1 (index2) received success event
PASS ++state is 1
request2 (index2) received error event
PASS ++state is 2
transaction aborted
PASS ++state is 3
PASS trans.error.name is 'ConstraintError'
Verify that uniqueness constraints are enforced when index is created after puts:
indexedDB.open(dbname, 3)
deleteAllObjectStores(connection)
Deleted all object stores.
store = connection.createObjectStore('store')
request1 = store.put({name: 'ted'}, 1)
request2 = store.put({name: 'ted'}, 2)
store.createIndex('index3', 'name', {unique: true})
state = 0
request1 received success event
PASS ++state is 1
request2 received success event
PASS ++state is 2
transaction aborted
PASS ++state is 3
PASS trans.error.name is 'ConstraintError'
Verify that uniqueness constraints are enforced when index is created between puts:
indexedDB.open(dbname, 4)
deleteAllObjectStores(connection)
Deleted all object stores.
store = connection.createObjectStore('store')
request1 = store.put({name: 'alice'}, 1)
store.createIndex('index4', 'name', {unique: true})
request2 = store.put({name: 'alice'}, 2)
state = 0
request1 received success event
PASS ++state is 1
request2 received error event
PASS ++state is 2
transaction aborted
PASS ++state is 3
PASS trans.error.name is 'ConstraintError'
PASS successfullyParsed is true
TEST COMPLETE