base-domain
Version:
simple module to help build Domain-Driven Design
109 lines (57 loc) • 2.67 kB
text/coffeescript
facade = require('../create-facade').create()
Facade = facade.constructor
Includer = require '../../src/lib/includer'
describe 'Includer', ->
describe 'constructor', ->
it 'receives modelPool object at 2nd argument', ->
modelPool = mock: true
includer = new Includer({}, modelPool)
expect(includer.modelPool).to.equal modelPool
describe 'cache', ->
it 'caches model by its model name', ->
model = {}
includer = new Includer(model)
includer.cache('hoge', id: 'abc', mock: true)
expect(includer.modelPool.hoge.abc).to.deep.equal({ id: 'abc', mock: true })
describe 'cached', ->
it 'returns cached model by model name and id', ->
model = {}
includer = new Includer(model)
includer.cache('hoge', id: 'abc', mock: true)
expect(includer.cached('hoge', 'abc')).to.deep.equal({ id: 'abc', mock: true })
it 'returns undefined when unknown model name is given', ->
model = {}
includer = new Includer(model)
includer.cache('hoge', id: 'abc', mock: true)
expect(includer.cached('fuga', 'abc')).to.be.undefined
it 'returns undefined when unknown id is given', ->
model = {}
includer = new Includer(model)
includer.cache('hoge', id: 'abc', mock: true)
expect(includer.cached('hoge', '123')).to.be.undefined
describe 'include', ->
before ->
class Main extends Facade.BaseModel
:
name: .STRING
sub: .MODEL 'sub-item', 'subId'
class SubItem extends Facade.Entity
:
name: .STRING
class SubItemRepository extends Facade.BaseRepository
: 'sub-item'
get: (id) ->
item = .createFactory('sub-item', true).createFromObject {id: id, name: 'mock'}
return Promise.resolve item
= Facade.createInstance()
.addClass('main', Main)
.addClass('sub-item', SubItem)
.addClass('sub-item-repository', SubItemRepository)
it 'includes subEntities', (done) ->
main = .createFactory('main', true).createFromObject
name: 'xxx'
subId: 'abc'
main.include().then =>
expect(main.sub).to.be.instanceof .getModel 'sub-item'
done()
.catch done