blob: ddb78b11213238cf946c9a53321606fa0a08c40e [file] [log] [blame]
<!doctype html>
<meta charset=utf-8>
<title>IndexedDB: Test IDBObjectStore.getKey()</title>
<meta name=timeout content=long>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="support.js"></script>
<script>
function getkey_test(func, name) {
indexeddb_test(
function(t, db, tx) {
var basic = db.createObjectStore('basic');
var key_path_store = db.createObjectStore('key path',
{keyPath: 'id'});
var key_generator_store = db.createObjectStore('key generator',
{autoIncrement: true});
var key_generator_and_path_store = db.createObjectStore(
'key generator and key path',
{autoIncrement: true, key_path: 'id'});
for (var i = 1; i <= 10; ++i) {
basic.put('value: ' + i, i);
key_path_store.put({id: i});
key_generator_store.put('value: ' + i);
key_generator_and_path_store.put({});
}
},
func,
name
);
}
getkey_test(function(t, db) {
var tx = db.transaction('basic');
var store = tx.objectStore('basic');
assert_throws(TypeError(), function() { store.getKey(); });
assert_throws({name: 'DataError'}, function() { store.getKey(null); });
assert_throws({name: 'DataError'}, function() { store.getKey({}); });
t.done();
}, 'IDBObjectStore.getKey() - invalid parameters');
[
'basic',
'key path',
'key generator',
'key generator and key path'
].forEach(function(store_name) {
getkey_test(function(t, db) {
var tx = db.transaction(store_name);
var store = tx.objectStore(store_name);
var request = store.getKey(5);
request.onerror = t.unreached_func('request failed');
request.onsuccess = t.step_func(function() {
assert_equals(request.result, 5);
});
tx.onabort = t.unreached_func('transaction aborted');
tx.oncomplete = t.step_func(function() { t.done(); });
}, 'IDBObjectStore.getKey() - ' + store_name + ' - key');
getkey_test(function(t, db) {
var tx = db.transaction(store_name);
var store = tx.objectStore(store_name);
var request = store.getKey(IDBKeyRange.lowerBound(4.5));
request.onerror = t.unreached_func('request failed');
request.onsuccess = t.step_func(function() {
assert_equals(request.result, 5);
});
tx.onabort = t.unreached_func('transaction aborted');
tx.oncomplete = t.step_func(function() { t.done(); });
}, 'IDBObjectStore.getKey() - ' + store_name + ' - range');
getkey_test(function(t, db) {
var tx = db.transaction(store_name);
var store = tx.objectStore(store_name);
var request = store.getKey(11);
request.onerror = t.unreached_func('request failed');
request.onsuccess = t.step_func(function() {
assert_equals(request.result, undefined);
});
tx.onabort = t.unreached_func('transaction aborted');
tx.oncomplete = t.step_func(function() { t.done(); });
}, 'IDBObjectStore.getKey() - ' + store_name + ' - key - no match');
getkey_test(function(t, db) {
var tx = db.transaction(store_name);
var store = tx.objectStore(store_name);
var request = store.getKey(IDBKeyRange.lowerBound(11));
request.onerror = t.unreached_func('request failed');
request.onsuccess = t.step_func(function() {
assert_equals(request.result, undefined);
});
tx.onabort = t.unreached_func('transaction aborted');
tx.oncomplete = t.step_func(function() { t.done(); });
}, 'IDBObjectStore.getKey() - ' + store_name + ' - range - no match');
});
</script>