mirror of
https://github.com/localForage/localForage.git
synced 2026-01-25 14:44:26 +00:00
181 lines
6.3 KiB
JavaScript
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();
|
|
});
|
|
});
|
|
|
|
});
|