UNPKG

4.14 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 foo: 1
70 services:
71 'run/prepare': (args, done) ->
72 should.exist @config.foo
73 @config.foo.should.eql 1
74 done null, {status: 'prepared'}
75
76 core.load 'extension', module
77 core.request 'server.run/prepare', {}, (err, data) ->
78 should.not.exist err
79 should.exist data
80 data.should.eql {status: 'prepared'}
81
82 done()
83
84 it 'aliased namespace should share context', (done) ->
85 server =
86 config:
87 run:
88 foo: 1
89
90 extension =
91 config:
92 run:
93 extends: 'server'
94 services:
95 'run/prepare': ->
96 should.exist @config?.foo
97 @config?.foo.should.eql 1
98 done()
99
100 core.load 'server', server
101 core.load 'extension', extension
102 core.request 'server.run/prepare', {}, (err, data) ->
103
104
105 it 'should receive axiom/config in context', (done) ->
106 robot =
107 config:
108 crushLikeBug:
109 strength: 5
110 services:
111 crushLikeBug: (args, fin) ->
112 should.exist @axiom, 'expected axiom in context'
113
114 @axiom.should.have.keys ['init', 'reset', 'load', 'request', 'delegate',
115 'respond', 'send', 'listen', 'log', 'wireUpLoggers',
116 'link']
117
118 should.exist @config, 'expected config in context'
119 @config.should.eql {
120 strength: 5
121 }
122
123 fin()
124
125 core.load "robot", robot
126 core.request "robot.crushLikeBug", {}, done
127
128 it 'should share context between services in a namespace', (done) ->
129 server =
130 config:
131 run:
132 port: 4000
133
134 services:
135 "run/prepare": (args, fin) ->
136 @foo = 7
137 fin()
138
139 "run/boot": (args, fin) ->
140 should.exist @foo, 'expected foo in context'
141 @foo.should.eql 7
142 fin()
143
144 core.load "server", server
145 core.request "server.run/prepare", {}, (err, result) ->
146 should.not.exist err
147 core.request "server.run/boot", {}, done
148
149 it 'should not share context between services in different namespaces', (done) ->
150 server =
151 config:
152 run:
153 port: 4000
154 test:
155 timeout: 200
156
157 services:
158 "run/prepare": (args, fin) ->
159 should.exist @config?.port, 'expected port in context'
160 @config.port.should.eql 4000
161 @foo = 7
162 fin()
163
164 "test/prepare": (args, fin) ->
165 should.exist @config?.timeout, 'expected timeout in context'
166 @config.timeout.should.eql 200
167 should.not.exist @foo
168 fin()
169
170 core.load "server", server
171 core.request "server.run/prepare", {}, (err, result) ->
172 should.not.exist err
173 core.request "server.test/prepare", {}, done