UNPKG

base-domain

Version:

simple module to help build Domain-Driven Design

155 lines (80 loc) 3.94 kB
facade = require('../create-facade').create('domain') MasterRepository = facade.constructor.MasterRepository Hobby = facade.getModel 'hobby' describe 'MasterRepository', -> describe 'storeMasterTable', -> it 'is true by default', -> expect(MasterRepository.storeMasterTable).to.be.true it 'is true by default in extenders', -> class Child extends MasterRepository expect(Child.storeMasterTable).to.be.true it 'is undefined in BaseRepository', -> BaseRepository = facade.constructor.BaseRepository expect(BaseRepository.storeMasterTable).not.to.be.true describe 'loaded', -> it 'returns false when class is just created', -> class Child extends MasterRepository expect(Child.loaded()).to.be.false it 'returns true when loaded', -> class HobbyRepository extends MasterRepository @modelName: 'hobby' getFacade: -> facade expect(HobbyRepository.modelsById).not.to.exist expect(HobbyRepository.loaded()).to.be.false HobbyRepository.load().then (isSucceed) -> expect(HobbyRepository.loaded()).to.be.true done() describe 'load', -> it 'loads models to @constructor.modelsById', (done) -> class HobbyRepository extends MasterRepository @modelName: 'hobby' getFacade: -> facade expect(HobbyRepository.modelsById).not.to.exist expect(HobbyRepository.loaded()).to.be.false HobbyRepository.load().then (isSucceed) -> expect(HobbyRepository.modelsById).to.be.an 'object' expect(HobbyRepository.loaded()).to.be.true expect(HobbyRepository.modelsById.dummy).to.be.instanceof Hobby expect(isSucceed).to.be.true done() it 'fails when @storeMasterTable is off', (done) -> class HobbyRepository extends MasterRepository @storeMasterTable: off HobbyRepository.load().then (isSucceed) -> expect(isSucceed).to.be.false done() describe 'getByIdSync', -> class HobbyRepository extends MasterRepository @modelName: 'hobby' getFacade: -> facade it 'returns null when not loaded', -> dummyHobby = new HobbyRepository().getByIdSync 'dummy' expect(dummyHobby).to.be.null it 'returns model by id synchronously', (done) -> HobbyRepository.load().then -> dummyHobby = new HobbyRepository().getByIdSync 'dummy' expect(dummyHobby).to.be.instanceof Hobby done() it 'returns model the same reference as pooled', (done) -> HobbyRepository.load().then -> dummyHobby = new HobbyRepository().getByIdSync 'dummy' expect(dummyHobby).to.equal HobbyRepository.modelsById.dummy done() it 'returns null when no object found by id', (done) -> HobbyRepository.load().then -> hobby = new HobbyRepository().getByIdSync 'xxx' expect(hobby).to.be.null done() describe 'getAllSync', -> class HobbyRepository extends MasterRepository @modelName: 'hobby' getFacade: -> facade it 'returns empty array when not loaded', -> hobbies = new HobbyRepository().getAllSync() expect(hobbies).to.eql [] it 'returns array of models', (done) -> HobbyRepository.load().then -> hobbies = new HobbyRepository().getAllSync() expect(hobbies).to.be.instanceof Array expect(hobbies[0]).to.be.instanceof Hobby done()