зеркало из https://github.com/mozilla/gecko-dev.git
118 строки
4.5 KiB
JavaScript
118 строки
4.5 KiB
JavaScript
// META: script=support-promises.js
|
|
|
|
promise_test(async testCase => {
|
|
assert_true(indexedDB.databases() instanceof Promise,
|
|
"databases() should return a promise.");
|
|
}, "Ensure that databases() returns a promise.");
|
|
|
|
promise_test(async testCase => {
|
|
// Delete any databases that may not have been cleaned up after previous test
|
|
// runs.
|
|
await deleteAllDatabases(testCase);
|
|
|
|
const db_name = "TestDatabase";
|
|
const db = await createNamedDatabase(testCase, db_name, ()=>{});
|
|
const databases_result = await indexedDB.databases();
|
|
db.close();
|
|
const expected_result = {"name": db_name, "version": 1};
|
|
assert_equals(
|
|
databases_result.length,
|
|
1,
|
|
"The result of databases() should contain one result per database.");
|
|
assert_true(
|
|
databases_result[0].name === expected_result.name
|
|
&& databases_result[0].version === expected_result.version,
|
|
"The result of databases() should be a sequence of the correct names "
|
|
+ "and versions of all databases for the origin.");
|
|
}, "Enumerate one database.");
|
|
|
|
promise_test(async testCase => {
|
|
// Delete any databases that may not have been cleaned up after previous test
|
|
// runs.
|
|
await deleteAllDatabases(testCase);
|
|
|
|
const db_name1 = "TestDatabase1";
|
|
const db_name2 = "TestDatabase2";
|
|
const db_name3 = "TestDatabase3";
|
|
const db1 = await createNamedDatabase(testCase, db_name1, ()=>{});
|
|
const db2 = await createNamedDatabase(testCase, db_name2, ()=>{});
|
|
const db3 = await createNamedDatabase(testCase, db_name3, ()=>{});
|
|
db1.close();
|
|
db2.close();
|
|
db3.close();
|
|
const version_promise =
|
|
await migrateNamedDatabase(testCase, db_name2, 2, () => {});
|
|
const databases_result = await indexedDB.databases();
|
|
const expected_result = [
|
|
{"name": db_name1, "version": 1},
|
|
{"name": db_name2, "version": 2},
|
|
{"name": db_name3, "version": 1},
|
|
];
|
|
assert_equals(
|
|
databases_result.length,
|
|
expected_result.length,
|
|
"The result of databases() should contain one result per database.");
|
|
for ( let i = 0; i < expected_result.length; i += 1 ) {
|
|
result = expected_result[i];
|
|
assert_true(
|
|
databases_result.some(
|
|
e => e.name === result.name && e.version === result.version),
|
|
"The result of databases() should be a sequence of the correct names "
|
|
+ "and versions of all databases for the origin.");
|
|
}
|
|
}, "Enumerate multiple databases.");
|
|
|
|
promise_test(async testCase => {
|
|
// Add some databases and close their connections.
|
|
const db1 = await createNamedDatabase(testCase, "DB1", () => {});
|
|
const db2 = await createNamedDatabase(testCase, "DB2", () => {});
|
|
db1.close();
|
|
db2.close();
|
|
|
|
// Delete any databases that may not have been cleaned up after previous test
|
|
// runs as well as the two databases made above.
|
|
await deleteAllDatabases(testCase);
|
|
|
|
// Make sure the databases are no longer returned.
|
|
const databases_result = await indexedDB.databases();
|
|
assert_equals(
|
|
databases_result.length,
|
|
0,
|
|
"The result of databases() should be an empty sequence for the case of "
|
|
+ "no databases for the origin.");
|
|
}, "Make sure an empty list is returned for the case of no databases.");
|
|
|
|
promise_test(async testCase => {
|
|
// Delete any databases that may not have been cleaned up after previous test
|
|
// runs as well as the two databases made above.
|
|
await deleteAllDatabases(testCase);
|
|
|
|
const db1 = await createNamedDatabase(testCase, "DB1", ()=>{});
|
|
const db2 = await createNamedDatabase(testCase, "DB2", async () => {
|
|
const databases_result1 = await indexedDB.databases();
|
|
assert_equals(
|
|
databases_result1.length,
|
|
1,
|
|
"The result of databases() should be only those databases which have "
|
|
+ "been created at the time of calling, regardless of versionchange "
|
|
+ "transactions currently running.");
|
|
});
|
|
db1.close();
|
|
db2.close();
|
|
const databases_result2 = await indexedDB.databases();
|
|
assert_equals(
|
|
databases_result2.length,
|
|
2,
|
|
"The result of databases() should include all databases which have "
|
|
+ "been created at the time of calling.");
|
|
await migrateNamedDatabase(testCase, "DB2", 2, async () => {
|
|
const databases_result3 = await indexedDB.databases();
|
|
assert_true(
|
|
databases_result3[0].version === 1
|
|
&& databases_result3[1].version === 1,
|
|
"The result of databases() should contain the versions of databases "
|
|
+ "at the time of calling, regardless of versionchange transactions "
|
|
+ "currently running.");
|
|
});
|
|
}, "Ensure that databases() doesn't pick up changes that haven't commited.");
|