UNPKG

4.01 kBtext/coffeescriptView Raw
1should = require 'should'
2logger = require 'torch'
3
4core = require '..'
5
6
7describe 'core.load', ->
8 afterEach ->
9 core.reset()
10
11 it 'should load a default base', (done) ->
12 module =
13 services:
14 run: (args, done) ->
15 done null, {status: 'success'}
16
17 core.load 'server', module
18 core.request 'server.run', {}, (err, data) ->
19 should.not.exist err
20 should.exist data
21 data.should.eql {status: 'success'}
22
23 done()
24
25
26 it 'should load a referenced base', (done) ->
27 core.load 'base', {
28 services:
29 lifecycle: (args, done) ->
30 done null, args.args
31 }
32
33 core.load 'server', {
34 config:
35 run:
36 base: 'lifecycle'
37 }
38
39 data = {x: 111}
40 core.request 'server.run', data, (err, result) ->
41 should.not.exist err
42 should.exist result
43 result.should.eql data
44
45 done()
46
47
48 it 'should load a law service', (done) ->
49 module =
50 services:
51 run:
52 service: (args, done) ->
53 done null, {status: 'success'}
54
55 core.load 'server', module
56 core.request 'server.run', {}, (err, data) ->
57 should.not.exist err
58 should.exist data
59 data.should.eql {status: 'success'}
60
61 done()
62
63
64 it 'should load an aliased namespace', (done) ->
65 module =
66 config:
67 run:
68 extends: 'server'
69 services:
70 'run/prepare': (args, done) ->
71 done null, {status: 'prepared'}
72
73 core.load 'extension', module
74 core.request 'server.run/prepare', {}, (err, data) ->
75 should.not.exist err
76 should.exist data
77 data.should.eql {status: 'prepared'}
78
79 done()
80
81 it 'aliased namespace should share context', (done) ->
82 server =
83 config:
84 run:
85 foo: 1
86
87 extension =
88 config:
89 run:
90 extends: 'server'
91 services:
92 'run/prepare': ->
93 should.exist @config?.foo
94 @config?.foo.should.eql 1
95 done()
96
97 core.load 'server', server
98 core.load 'extension', extension
99 core.request 'server.run/prepare', {}, (err, data) ->
100
101
102 it 'should receive axiom/config in context', (done) ->
103 robot =
104 config:
105 crushLikeBug:
106 strength: 5
107 services:
108 crushLikeBug: (args, fin) ->
109 should.exist @axiom, 'expected axiom in context'
110
111 @axiom.should.have.keys ['init', 'reset', 'load', 'request', 'delegate',
112 'respond', 'send', 'listen', 'log', 'wireUpLoggers']
113
114 should.exist @config, 'expected config in context'
115 @config.should.eql {
116 strength: 5
117 }
118
119 fin()
120
121 core.load "robot", robot
122 core.request "robot.crushLikeBug", {}, done
123
124 it 'should share context between services in a namespace', (done) ->
125 server =
126 config:
127 run:
128 port: 4000
129
130 services:
131 "run/prepare": (args, fin) ->
132 @foo = 7
133 fin()
134
135 "run/boot": (args, fin) ->
136 should.exist @foo, 'expected foo in context'
137 @foo.should.eql 7
138 fin()
139
140 core.load "server", server
141 core.request "server.run/prepare", {}, (err, result) ->
142 should.not.exist err
143 core.request "server.run/boot", {}, done
144
145 it 'should not share context between services in different namespaces', (done) ->
146 server =
147 config:
148 run:
149 port: 4000
150 test:
151 timeout: 200
152
153 services:
154 "run/prepare": (args, fin) ->
155 should.exist @config?.port, 'expected port in context'
156 @config.port.should.eql 4000
157 @foo = 7
158 fin()
159
160 "test/prepare": (args, fin) ->
161 should.exist @config?.timeout, 'expected timeout in context'
162 @config.timeout.should.eql 200
163 should.not.exist @foo
164 fin()
165
166 core.load "server", server
167 core.request "server.run/prepare", {}, (err, result) ->
168 should.not.exist err
169 core.request "server.test/prepare", {}, done