ydn.db
Version:
Javascript database library for IndexedDB, WebDatabase (WebSQL) and WebStorage (localStorage) storage mechanisms supporting version migration, advanced query and transaction workflow.
87 lines (66 loc) • 1.7 kB
JavaScript
(function () {
asyncTest("abort in run", 2, function () {
var test_env = {
setup: function () {
},
teardown: function () {
}
};
module("transaction,storage", test_env);
reporter.createTestSuite('transaction');
var db_name = 'test_abort_2';
var schema = {
stores: [
{
name: 's1',
keyPath: 'id',
type: 'NUMERIC'
}, {
name: 's2',
keyPath: 'id',
type: 'NUMERIC'
}, {
name: 's3',
keyPath: 'id',
type: 'NUMERIC'
}]
};
var obj = {
id: Math.random(),
value: 'msg' + Math.random()
};
var obj2 = {
id: Math.random(),
value: 'msg' + Math.random()
};
var db = new ydn.db.Storage(db_name, schema);
var adb = db.branch('atomic', true); // atomic-serial
var done_count = 0;
var done = function() {
done_count++;
if (done_count >= 1) {
start();
ydn.db.deleteDatabase(db_name, db.getType());
db.close();
}
};
var req = db.run(function (tdb) {
tdb.put('s1', obj).always(function (key) {
var req_get = tdb.get('s1', obj.id);
req_get.then(function (result) {
equal(obj.value, result.value, 'store 1 result');
req_get.abort();
}, function (e) {
ok(false, 'store 1 get not error');
});
});
}, ['s1'], 'readwrite');
req.always(function (x) {
// console.log(x);
db.get('s1', obj.id).always(function (result) {
equal(undefined, result, 'aborted store 1 done result');
done();
});
});
});
})();