UNPKG

@onehat/data

Version:

JS data modeling package with adapters for many storage mediums.

173 lines (134 loc) 3.99 kB
import RepositoryTypes from '../../../src/Repository/index.js'; import Schema from '../../../src/Schema/index.js'; describe('OneBuildRepository', function() { beforeEach(function() { this.schema = new Schema({ name: 'bar', model: { idProperty: 'key', displayProperty: 'value', properties: [ { name: 'key', type: 'int' }, { name: 'value' }, ], }, }); this.Repository = RepositoryTypes.onebuild; this.repository = new this.Repository({ id: 'foo', schema: this.schema, isAutoSave: false, }); this.repository.initialize(); this.schema.setBoundRepository(this.repository); }); afterEach(function() { this.schema.destroy(); this.repository.destroy(); }); describe('Params', function() { it('setParam', function() { const r = this.repository; r.setParam('test', 1); expect(r._params.test).to.be.eq(1); }); it('hasParam', function() { const r = this.repository; r.setParam('test', 1); const result = r.hasParam('test'); expect(result).to.be.true; }); it('setParams', function() { const r = this.repository; r.setParams({ test1: 1, test2: 2, }); expect(r._params.test1).to.be.eq(1); expect(r._params.test2).to.be.eq(2); }); it('setBaseParam', function() { const r = this.repository; r.setBaseParam('test', 1); expect(r._baseParams.test).to.be.eq(1); }); it('hasBaseParam', function() { const r = this.repository; r.setBaseParam('test', 1); const result = r.hasBaseParam('test'); expect(result).to.be.true; }); it('setBaseParams', function() { const r = this.repository; r.setBaseParams({ test1: 1, test2: 2, }); expect(r._baseParams.test1).to.be.eq(1); expect(r._baseParams.test2).to.be.eq(2); }); it('setValuelessParam', function() { const r = this.repository; r.setParam('conditions[field]', 1); r.setValuelessParam('conditions[field IS NOT NULL]'); expect(r._params.conditions.field).to.be.eq(1); expect(r._params.conditions.undefined).to.be.eq('field IS NOT NULL'); }); it('clearParams', function() { const r = this.repository; r.setParams({ test1: 1, test2: 2, }); r.setBaseParams({ test1: 1, test2: 2, }); r.clearParams(false, true); expect(r._params).to.be.empty; expect(r._baseParams).to.be.empty; }); }); describe('custom', function() { it('delete phantom', async function() { const entity = await this.repository.add({ key: 6, value: 'six' }); expect(entity.id).to.be.eq(6); expect(entity.isPersisted).to.be.false; await this.repository.delete(entity); expect(entity.isDeleted).to.be.true; await this.repository.save(); expect(_.size(this.repository.entities)).to.be.eq(0); await this.repository.add({ key: 6, value: 'six' }); expect(_.size(this.repository.entities)).to.be.eq(1); }); it('sortInMemory', function() { const repository = this.repository; // Create two phantom records, out of order repository.setAutoSave(false); repository.add({ key: 5, value: 'Five', }); repository.add({ key: 4, value: 'One', }); repository.add({ key: 2, value: 'Two', }); repository.add({ key: 3, value: 'Three', }); repository.add({ key: 1, value: 'One', }); repository.sorters = [ { name: 'value', direction: 'DESC', }, // 2,3,4,1,5 { name: 'key', direction: 'ASC', }, // 2,3,1,4,5 ]; repository.sortInMemory(); // Check that they are correct order const entities = repository.entities; expect(entities[0].key).to.be.eq(2); expect(entities[1].key).to.be.eq(3); expect(entities[2].key).to.be.eq(1); expect(entities[3].key).to.be.eq(4); expect(entities[4].key).to.be.eq(5); }); it('setIsOnline', function() { const repository = this.repository; repository.setIsOnline(true); expect(repository.isOnline).to.be.true; repository.setIsOnline(false); expect(repository.isOnline).to.be.false; }); }); });