axiom
Version:
Environment setup/runtime standardization for Node.js applications.
174 lines (137 loc) • 4.14 kB
text/coffeescript
should = require 'should'
logger = require 'torch'
core = require '..'
describe 'core.load', ->
afterEach ->
core.reset()
it 'should load a default base', (done) ->
module =
services:
run: (args, done) ->
done null, {status: 'success'}
core.load 'server', module
core.request 'server.run', {}, (err, data) ->
should.not.exist err
should.exist data
data.should.eql {status: 'success'}
done()
it 'should load a referenced base', (done) ->
core.load 'base', {
services:
lifecycle: (args, done) ->
done null, args.args
}
core.load 'server', {
config:
run:
base: 'lifecycle'
}
data = {x: 111}
core.request 'server.run', data, (err, result) ->
should.not.exist err
should.exist result
result.should.eql data
done()
it 'should load a law service', (done) ->
module =
services:
run:
service: (args, done) ->
done null, {status: 'success'}
core.load 'server', module
core.request 'server.run', {}, (err, data) ->
should.not.exist err
should.exist data
data.should.eql {status: 'success'}
done()
it 'should load an aliased namespace', (done) ->
module =
config:
run:
extends: 'server'
foo: 1
services:
'run/prepare': (args, done) ->
should.exist .foo
.foo.should.eql 1
done null, {status: 'prepared'}
core.load 'extension', module
core.request 'server.run/prepare', {}, (err, data) ->
should.not.exist err
should.exist data
data.should.eql {status: 'prepared'}
done()
it 'aliased namespace should share context', (done) ->
server =
config:
run:
foo: 1
extension =
config:
run:
extends: 'server'
services:
'run/prepare': ->
should.exist ?.foo
?.foo.should.eql 1
done()
core.load 'server', server
core.load 'extension', extension
core.request 'server.run/prepare', {}, (err, data) ->
it 'should receive axiom/config in context', (done) ->
robot =
config:
crushLikeBug:
strength: 5
services:
crushLikeBug: (args, fin) ->
should.exist , 'expected axiom in context'
.should.have.keys ['init', 'reset', 'load', 'request', 'delegate',
'respond', 'send', 'listen', 'log', 'wireUpLoggers',
'link']
should.exist , 'expected config in context'
.should.eql {
strength: 5
}
fin()
core.load "robot", robot
core.request "robot.crushLikeBug", {}, done
it 'should share context between services in a namespace', (done) ->
server =
config:
run:
port: 4000
services:
"run/prepare": (args, fin) ->
= 7
fin()
"run/boot": (args, fin) ->
should.exist , 'expected foo in context'
.should.eql 7
fin()
core.load "server", server
core.request "server.run/prepare", {}, (err, result) ->
should.not.exist err
core.request "server.run/boot", {}, done
it 'should not share context between services in different namespaces', (done) ->
server =
config:
run:
port: 4000
test:
timeout: 200
services:
"run/prepare": (args, fin) ->
should.exist ?.port, 'expected port in context'
.port.should.eql 4000
= 7
fin()
"test/prepare": (args, fin) ->
should.exist ?.timeout, 'expected timeout in context'
.timeout.should.eql 200
should.not.exist
fin()
core.load "server", server
core.request "server.run/prepare", {}, (err, result) ->
should.not.exist err
core.request "server.test/prepare", {}, done