79 lines
2.5 KiB
JavaScript
79 lines
2.5 KiB
JavaScript
if (this.importScripts) {
|
|
importScripts('../../../resources/js-test.js');
|
|
importScripts('shared.js');
|
|
}
|
|
|
|
description("Test the basics of IndexedDB's IDBDatabase.");
|
|
|
|
indexedDBTest(prepareDatabase, testSetVersionAbort);
|
|
function prepareDatabase()
|
|
{
|
|
db = event.target.result;
|
|
debug("Test that you can't open a transaction while in a versionchange transaction");
|
|
evalAndExpectException('db.transaction("doesntExist")',
|
|
"DOMException.INVALID_STATE_ERR", "'InvalidStateError'");
|
|
|
|
shouldBe("db.version", "1");
|
|
shouldBeEqualToString("db.name", dbname);
|
|
shouldBe("db.objectStoreNames", "[]");
|
|
shouldBe("db.objectStoreNames.length", "0");
|
|
shouldBe("db.objectStoreNames.contains('')", "false");
|
|
shouldBeUndefined("db.objectStoreNames[0]");
|
|
shouldBeNull("db.objectStoreNames.item(0)");
|
|
|
|
objectStore = evalAndLog('db.createObjectStore("test123")');
|
|
checkObjectStore();
|
|
}
|
|
|
|
function checkObjectStore()
|
|
{
|
|
shouldBe("db.objectStoreNames", "['test123']");
|
|
shouldBe("db.objectStoreNames.length", "1");
|
|
shouldBe("db.objectStoreNames.contains('')", "false");
|
|
shouldBe("db.objectStoreNames.contains('test456')", "false");
|
|
shouldBe("db.objectStoreNames.contains('test123')", "true");
|
|
shouldThrow("db.objectStoreNames.contains()");
|
|
}
|
|
|
|
|
|
function testSetVersionAbort()
|
|
{
|
|
evalAndLog("db.close()");
|
|
evalAndLog("request = indexedDB.open(dbname, 2)");
|
|
request.onupgradeneeded = createAnotherObjectStore;
|
|
request.onblocked = unexpectedBlockedCallback;
|
|
request.onsuccess = unexpectedSuccessCallback;
|
|
}
|
|
|
|
function createAnotherObjectStore()
|
|
{
|
|
evalAndLog("db = event.target.result");
|
|
shouldBe("db.version", "2");
|
|
shouldBeEqualToString("db.name", dbname);
|
|
checkObjectStore();
|
|
|
|
objectStore = evalAndLog('db.createObjectStore("test456")');
|
|
var setVersionTrans = evalAndLog("setVersionTrans = event.target.transaction");
|
|
shouldBeNonNull("setVersionTrans");
|
|
setVersionTrans.oncomplete = unexpectedCompleteCallback;
|
|
setVersionTrans.onabort = checkMetadata;
|
|
evalAndLog("setVersionTrans.abort()");
|
|
}
|
|
|
|
function checkMetadata()
|
|
{
|
|
shouldBe("db.version", "1");
|
|
checkObjectStore();
|
|
testClose();
|
|
}
|
|
|
|
function testClose()
|
|
{
|
|
evalAndLog("db.close()");
|
|
debug("Now that the connection is closed, transaction creation should fail");
|
|
evalAndExpectException("db.transaction('test123')", "DOMException.INVALID_STATE_ERR", "'InvalidStateError'");
|
|
debug("Call twice, make sure it's harmless");
|
|
evalAndLog("db.close()");
|
|
finishJSTest();
|
|
}
|