123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- /** @babel */
- const StateStore = require('../src/state-store.js');
- describe('StateStore', () => {
- let databaseName = `test-database-${Date.now()}`;
- let version = 1;
- it('can save, load, and delete states', () => {
- const store = new StateStore(databaseName, version);
- return store
- .save('key', { foo: 'bar' })
- .then(() => store.load('key'))
- .then(state => {
- expect(state).toEqual({ foo: 'bar' });
- })
- .then(() => store.delete('key'))
- .then(() => store.load('key'))
- .then(value => {
- expect(value).toBeNull();
- })
- .then(() => store.count())
- .then(count => {
- expect(count).toBe(0);
- });
- });
- it('resolves with null when a non-existent key is loaded', () => {
- const store = new StateStore(databaseName, version);
- return store.load('no-such-key').then(value => {
- expect(value).toBeNull();
- });
- });
- it('can clear the state object store', () => {
- const store = new StateStore(databaseName, version);
- return store
- .save('key', { foo: 'bar' })
- .then(() => store.count())
- .then(count => expect(count).toBe(1))
- .then(() => store.clear())
- .then(() => store.count())
- .then(count => {
- expect(count).toBe(0);
- });
- });
- describe('when there is an error reading from the database', () => {
- it('rejects the promise returned by load', () => {
- const store = new StateStore(databaseName, version);
- const fakeErrorEvent = {
- target: { errorCode: 'Something bad happened' }
- };
- spyOn(IDBObjectStore.prototype, 'get').andCallFake(key => {
- let request = {};
- process.nextTick(() => request.onerror(fakeErrorEvent));
- return request;
- });
- return store
- .load('nonexistentKey')
- .then(() => {
- throw new Error('Promise should have been rejected');
- })
- .catch(event => {
- expect(event).toBe(fakeErrorEvent);
- });
- });
- });
- });
|