localForage/test/test.drivers.js
2017-12-18 08:42:12 +02:00

194 lines
7.4 KiB
JavaScript

/* global beforeEach:true, describe:true, expect:true, it:true */
describe('Driver API', function() {
'use strict';
beforeEach(function(done) {
if (localforage.supports(localforage.INDEXEDDB)) {
localforage.setDriver(localforage.INDEXEDDB, function() {
done();
});
} else if (localforage.supports(localforage.WEBSQL)) {
localforage.setDriver(localforage.WEBSQL, function() {
done();
});
} else {
done();
}
});
if (
(localforage.supports(localforage.INDEXEDDB) &&
localforage.driver() === localforage.INDEXEDDB) ||
(localforage.supports(localforage.WEBSQL) &&
localforage.driver() === localforage.WEBSQL)
) {
it(
'can change to localStorage from ' +
localforage.driver() +
' [callback]',
function(done) {
var previousDriver = localforage.driver();
localforage.setDriver(localforage.LOCALSTORAGE, function() {
expect(localforage.driver()).to.be(
localforage.LOCALSTORAGE
);
expect(localforage.driver()).to.not.be(previousDriver);
done();
});
}
);
it(
'can change to localStorage from ' +
localforage.driver() +
' [promise]',
function(done) {
var previousDriver = localforage.driver();
localforage
.setDriver(localforage.LOCALSTORAGE)
.then(function() {
expect(localforage.driver()).to.be(
localforage.LOCALSTORAGE
);
expect(localforage.driver()).to.not.be(previousDriver);
done();
});
}
);
}
if (!localforage.supports(localforage.INDEXEDDB)) {
it("can't use unsupported IndexedDB [callback]", function(done) {
var previousDriver = localforage.driver();
expect(previousDriver).to.not.be(localforage.INDEXEDDB);
// These should be rejected in component builds but aren't.
// TODO: Look into why.
localforage.setDriver(localforage.INDEXEDDB, null, function() {
expect(localforage.driver()).to.be(previousDriver);
done();
});
});
it("can't use unsupported IndexedDB [promise]", function(done) {
var previousDriver = localforage.driver();
expect(previousDriver).to.not.be(localforage.INDEXEDDB);
// These should be rejected in component builds but aren't.
// TODO: Look into why.
localforage.setDriver(localforage.INDEXEDDB).then(null, function() {
expect(localforage.driver()).to.be(previousDriver);
done();
});
});
} else {
it('can set already active IndexedDB [callback]', function(done) {
var previousDriver = localforage.driver();
expect(previousDriver).to.be(localforage.INDEXEDDB);
localforage.setDriver(localforage.INDEXEDDB, function() {
expect(localforage.driver()).to.be(previousDriver);
done();
});
});
it('can set already active IndexedDB [promise]', function(done) {
var previousDriver = localforage.driver();
expect(previousDriver).to.be(localforage.INDEXEDDB);
localforage.setDriver(localforage.INDEXEDDB).then(function() {
expect(localforage.driver()).to.be(previousDriver);
done();
});
});
}
if (!localforage.supports(localforage.LOCALSTORAGE)) {
it("can't use unsupported localStorage [callback]", function(done) {
var previousDriver = localforage.driver();
expect(previousDriver).to.not.be(localforage.LOCALSTORAGE);
localforage.setDriver(localforage.LOCALSTORAGE, null, function() {
expect(localforage.driver()).to.be(previousDriver);
done();
});
});
it("can't use unsupported localStorage [promise]", function(done) {
var previousDriver = localforage.driver();
expect(previousDriver).to.not.be(localforage.LOCALSTORAGE);
localforage
.setDriver(localforage.LOCALSTORAGE)
.then(null, function() {
expect(localforage.driver()).to.be(previousDriver);
done();
});
});
} else if (
!localforage.supports(localforage.INDEXEDDB) &&
!localforage.supports(localforage.WEBSQL)
) {
it('can set already active localStorage [callback]', function(done) {
var previousDriver = localforage.driver();
expect(previousDriver).to.be(localforage.LOCALSTORAGE);
localforage.setDriver(localforage.LOCALSTORAGE, function() {
expect(localforage.driver()).to.be(previousDriver);
done();
});
});
it('can set already active localStorage [promise]', function(done) {
var previousDriver = localforage.driver();
expect(previousDriver).to.be(localforage.LOCALSTORAGE);
localforage.setDriver(localforage.LOCALSTORAGE).then(function() {
expect(localforage.driver()).to.be(previousDriver);
done();
});
});
}
if (!localforage.supports(localforage.WEBSQL)) {
it("can't use unsupported WebSQL [callback]", function(done) {
var previousDriver = localforage.driver();
expect(previousDriver).to.not.be(localforage.WEBSQL);
localforage.setDriver(localforage.WEBSQL, null, function() {
expect(localforage.driver()).to.be(previousDriver);
done();
});
});
it("can't use unsupported WebSQL [promise]", function(done) {
var previousDriver = localforage.driver();
expect(previousDriver).to.not.be(localforage.WEBSQL);
localforage.setDriver(localforage.WEBSQL).then(null, function() {
expect(localforage.driver()).to.be(previousDriver);
done();
});
});
} else {
it('can set already active WebSQL [callback]', function(done) {
localforage.setDriver(localforage.WEBSQL, function() {
var previousDriver = localforage.driver();
expect(previousDriver).to.be(localforage.WEBSQL);
localforage.setDriver(localforage.WEBSQL, function() {
expect(localforage.driver()).to.be(previousDriver);
done();
});
});
});
it('can set already active WebSQL [promise]', function(done) {
localforage.setDriver(localforage.WEBSQL).then(function() {
var previousDriver = localforage.driver();
expect(previousDriver).to.be(localforage.WEBSQL);
localforage.setDriver(localforage.WEBSQL).then(function() {
expect(localforage.driver()).to.be(previousDriver);
done();
});
});
});
}
});