localForage/test/test.drivers.js
Matthew Riley MacPherson 996a2b83ff Add component tests
2014-06-30 03:25:01 -04:00

176 lines
7.0 KiB
JavaScript

/* global beforeEach:true, describe:true, expect:true, it:true, Modernizr:true */
describe('Driver API', function() {
'use strict';
beforeEach(function(done) {
if (Modernizr.indexeddb) {
localforage.setDriver(localforage.INDEXEDDB, function() {
done();
});
} else if (Modernizr.websqldatabase) {
localforage.setDriver(localforage.WEBSQL, function() {
done();
});
} else {
done();
}
});
if ((Modernizr.indexeddb &&
localforage.driver() === localforage.INDEXEDDB) ||
(Modernizr.websqldatabase &&
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 (!Modernizr.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 (!Modernizr.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 (!Modernizr.indexeddb && !Modernizr.websqldatabase) {
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 (!Modernizr.websqldatabase) {
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();
});
});
});
}
});