localForage/test/test.customdriver.js
2014-10-21 03:10:17 +03:00

181 lines
6.3 KiB
JavaScript

/* global describe:true, expect:true, it:true, dummyStorageDriver:true */
describe('When Custom Drivers are used', function() {
'use strict';
var errorMessage = 'Custom driver not compliant; see ' +
'https://mozilla.github.io/localForage/#definedriver';
var nameErrorMessage = function(driverName) {
return 'Custom driver name already in use: ' + driverName;
};
it('fails to define a no-name custom driver', function(done) {
localforage.defineDriver({
_initStorage: function() {},
iterate: function() {},
getItem: function() {},
setItem: function() {},
removeItem: function() {},
clear: function() {},
length: function() {},
key: function() {},
keys: function() {}
}, null, function(err) {
expect(err).to.be.an(Error);
expect(err.message).to.be(errorMessage);
done();
});
});
it('fails to define a no-name custom driver [promise]', function(done) {
localforage.defineDriver({
_initStorage: function() {},
iterate: function() {},
getItem: function() {},
setItem: function() {},
removeItem: function() {},
clear: function() {},
length: function() {},
key: function() {},
keys: function() {}
}).then(null, function(err) {
expect(err).to.be.an(Error);
expect(err.message).to.be(errorMessage);
done();
});
});
it('fails to define a custom driver with overlapping driver name',
function(done) {
localforage.defineDriver({
_driver: localforage.INDEXEDDB,
_initStorage: function() {},
iterate: function() {},
getItem: function() {},
setItem: function() {},
removeItem: function() {},
clear: function() {},
length: function() {},
key: function() {},
keys: function() {}
}, null, function(err) {
expect(err).to.be.an(Error);
expect(err.message).to.be(nameErrorMessage(localforage.INDEXEDDB));
done();
});
});
it('fails to define a custom driver with overlapping driver name [promise]',
function(done) {
localforage.defineDriver({
_driver: localforage.INDEXEDDB,
_initStorage: function() {},
iterate: function() {},
getItem: function() {},
setItem: function() {},
removeItem: function() {},
clear: function() {},
length: function() {},
key: function() {},
keys: function() {}
}).then(null, function(err) {
expect(err).to.be.an(Error);
expect(err.message).to.be(nameErrorMessage(localforage.INDEXEDDB));
done();
});
});
it('fails to define a custom driver with missing methods', function(done) {
localforage.defineDriver({
_driver: 'missingMethodsDriver',
_initStorage: function() {},
iterate: function() {},
getItem: function() {},
setItem: function() {},
removeItem: function() {},
clear: function() {}
}, null, function(err) {
expect(err).to.be.an(Error);
expect(err.message).to.be(errorMessage);
done();
});
});
it('fails to define a custom driver with missing methods [promise]',
function(done) {
localforage.defineDriver({
_driver: 'missingMethodsDriver',
_initStorage: function() {},
iterate: function() {},
getItem: function() {},
setItem: function() {},
removeItem: function() {},
clear: function() {}
}).then(null, function(err) {
expect(err).to.be.an(Error);
expect(err.message).to.be(errorMessage);
done();
});
});
it('defines a compliant custom driver', function(done) {
localforage.defineDriver(dummyStorageDriver, function() {
done();
});
});
it('defines a compliant custom driver [promise]', function(done) {
localforage.defineDriver(dummyStorageDriver).then(function() {
done();
});
});
it('sets a custom driver', function(done) {
localforage.defineDriver(dummyStorageDriver, function() {
localforage.setDriver(dummyStorageDriver._driver, function() {
expect(localforage.driver()).to.be(dummyStorageDriver._driver);
done();
});
});
});
it('sets a custom driver [promise]', function(done) {
localforage.defineDriver(dummyStorageDriver).then(function() {
return localforage.setDriver(dummyStorageDriver._driver);
}).then(function() {
expect(localforage.driver()).to.be(dummyStorageDriver._driver);
done();
});
});
it('sets and uses a custom driver', function(done) {
localforage.defineDriver(dummyStorageDriver, function() {
localforage.setDriver(dummyStorageDriver._driver, function(err) {
expect(err).to.be(undefined);
localforage.setItem('testCallbackKey', 'testCallbackValue',
function(err) {
expect(err).to.be(null);
localforage.getItem('testCallbackKey',
function(err, value) {
expect(err).to.be(null);
expect(value).to.be('testCallbackValue');
done();
});
});
});
});
});
it('sets and uses a custom driver [promise]', function(done) {
localforage.defineDriver(dummyStorageDriver).then(function() {
return localforage.setDriver(dummyStorageDriver._driver);
}).then(function() {
return localforage.setItem('testPromiseKey', 'testPromiseValue');
}).then(function() {
return localforage.getItem('testPromiseKey');
}).then(function(value) {
expect(value).to.be('testPromiseValue');
done();
});
});
});