UNPKG

trivialmodels

Version:

A trivial javascript model system, designed to be easy to build backends for.

163 lines (144 loc) 4.93 kB
// --------------------------------------------------------------------------------------------------------------------- // Unit Tests for the simpleDriver.spec.js module. // // @module // --------------------------------------------------------------------------------------------------------------------- var expect = require('chai').expect; var TrivialDBDriver = require('../../src/drivers/trivialdbDriver').default; // --------------------------------------------------------------------------------------------------------------------- describe('TrivialDB Driver', () => { var driver; beforeEach(() => { driver = new TrivialDBDriver({ name: 'test', writeToDisk: false }); driver.init({}); driver.db.values = { 'test1': { name: 'Test 1', admin: false, id: 'test1' }, 'test2': { name: 'Test 2', admin: true, id: 'test2' }, 'test3': { name: 'Test 3', admin: false, id: 'test3' } }; }); describe('#get()', () => { it('supports retrieving existing values', () => { return driver.get('test1') .then((results) => { expect(results).to.deep.equal(driver.db.values.test1); }); }); it('returns undefined for non-existing values', () => { return driver.get('dne') .then((results) => { expect(results).to.be.undefined; }); }); }); describe('#set()', () => { it('supports generating ids', () => { var data = { name: 'Test 4', admin: false, email: 'foo@bar.com' }; return driver.set(data) .then((id) => { data.id = id; expect(driver.db.values[id]).to.deep.equal(data); }); }); it('supports setting new values', () => { var data = { name: 'Test 4', admin: false, email: 'foo@bar.com', id: 'test4' }; return driver.set('test4', data, null) .then((id) => { expect(driver.db.values.test4).to.deep.equal(data); expect(id).to.equal('test4'); }); }); it('supports updating existing values', () => { var data = { name: 'Test 4', admin: false, email: 'foo@bar.com', id: 'test2' }; return driver.set('test2', data, null) .then(() => { expect(driver.db.values.test2).to.deep.equal(data); }); }); }); describe('#filter()', () => { it('supports a simple predicate', () => { return driver.filter({ admin: true }) .then((results) => { expect(results).to.deep.equal([driver.db.values.test2]); }); }); it('supports a predicate function', () => { return driver.filter((item) => { return !!item.admin; }) .then((results) => { expect(results).to.deep.equal([driver.db.values.test2]); }); }); }); describe('#query()', () => { it('passes a query object into the query function', () => { return driver.query((queryObj) => { expect(queryObj).to.not.be.undefined; }); }); it('allows for arbitrary querying of the database', () => { return driver.query((query) => { return query.filter({ admin: true }).value(); }) .then((results) => { expect(results).to.deep.equal([driver.db.values.test2]); }); }); }); describe('#remove()', () => { it('supports a simple predicate', () => { return driver.remove({ admin: true }) .then(() => { expect(driver.db.values.test2).to.be.undefined; }); }); it('supports a predicate function', () => { return driver.remove((item) => !!item.admin) .then(() => { expect(driver.db.values.test2).to.be.undefined; }); }); }); describe('#removeAll()', () => { it('supports removing all values', () => { return driver.removeAll() .then(() => { expect(driver.db.values).to.deep.equal({}); }); }); }); }); // ---------------------------------------------------------------------------------------------------------------------