Skip to content

Commit 4003514

Browse files
committed
test(microservices): add tests for new pattern-route logic
1 parent 16ee6cc commit 4003514

1 file changed

Lines changed: 139 additions & 14 deletions

File tree

packages/microservices/test/server/server.spec.ts

Lines changed: 139 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -10,23 +10,109 @@ class TestServer extends Server {
1010

1111
describe('Server', () => {
1212
const server = new TestServer();
13+
const sandbox = sinon.createSandbox();
1314
const callback = () => {},
1415
pattern = { test: 'test pattern' };
1516

17+
afterEach(() => {
18+
sandbox.restore();
19+
});
20+
1621
describe('add', () => {
17-
it(`should add handler as a stringified pattern key`, () => {
22+
it(`should add handler`, () => {
23+
const handlerRoute = 'hello';
24+
25+
const messageHandlersStub = sandbox
26+
.stub((server as any), 'messageHandlers')
27+
.value({ set() {} });
28+
const messageHandlersSetSpy = sinon
29+
.spy((server as any).messageHandlers, 'set');
30+
31+
const msvcUtilStub = sandbox
32+
.stub((server as any), 'msvcUtil')
33+
.value({ transformPatternToRoute() { return handlerRoute; } });
34+
const msvcUtilTransformPatternToRouteStub = sinon
35+
.stub((server as any).msvcUtil, 'transformPatternToRoute')
36+
.returns(handlerRoute);
37+
1838
server.addHandler(pattern, callback as any);
1939

20-
const handlers = server.getHandlers();
21-
expect(handlers.get(JSON.stringify(pattern))).to.equal(callback);
40+
expect(messageHandlersSetSpy.called)
41+
.to.be.true;
42+
expect(messageHandlersSetSpy.args[0][0])
43+
.to.be.equal(handlerRoute);
44+
expect(messageHandlersSetSpy.args[0][1])
45+
.to.be.equal(callback);
46+
47+
msvcUtilTransformPatternToRouteStub.restore();
48+
messageHandlersSetSpy.restore();
49+
});
50+
});
51+
52+
describe('getRouteFromPattern', () => {
53+
let msvcUtilTransformPatternToRouteStub: sinon.SinonSpy;
54+
55+
beforeEach(() => {
56+
sandbox
57+
.stub((server as any), 'msvcUtil')
58+
.value({ transformPatternToRoute() {} });
59+
msvcUtilTransformPatternToRouteStub = sinon
60+
.spy((server as any).msvcUtil, 'transformPatternToRoute');
61+
});
62+
63+
afterEach(() => {
64+
msvcUtilTransformPatternToRouteStub.restore();
65+
});
66+
67+
describe(`when gets 'string' pattern`, () => {
68+
it(`should call 'transformPatternToRoute' with 'string' argument`, () => {
69+
const inputServerPattern = 'hello';
70+
const transformedServerPattern = inputServerPattern;
71+
72+
(server as any).getRouteFromPattern(inputServerPattern);
73+
74+
expect(msvcUtilTransformPatternToRouteStub.args[0][0])
75+
.to.be.equal(transformedServerPattern);
76+
});
77+
});
78+
79+
describe(`when gets 'json' pattern as 'string'`, () => {
80+
it(`should call 'transformPatternToRoute' with 'json' argument`, () => {
81+
const inputServerPattern = '{"controller":"app","use":"getHello"}';
82+
const transformedServerPattern = {
83+
controller: 'app',
84+
use: 'getHello'
85+
};
86+
87+
(server as any).getRouteFromPattern(inputServerPattern);
88+
89+
expect(msvcUtilTransformPatternToRouteStub.args[0][0])
90+
.to.be.deep.equal(transformedServerPattern);
91+
});
2292
});
2393

24-
it(`should add handler as string pattern key`, () => {
25-
server.addHandler(pattern.test, callback as any);
26-
const handlers = server.getHandlers();
27-
expect(handlers.get(pattern.test)).to.equal(callback);
94+
describe(`when gets 'no string' and 'no json' pattern`, () => {
95+
it(`should call 'transformPatternToRoute' with argument what 'getRouteFromPattern' has got`, () => {
96+
const inputServerPatterns = [
97+
{
98+
controller: 'app',
99+
use: 'getHello'
100+
},
101+
154,
102+
Symbol('App')
103+
];
104+
const transformedServerPatterns = inputServerPatterns;
105+
106+
inputServerPatterns.forEach((value, index) => {
107+
(server as any).getRouteFromPattern(value);
108+
109+
expect(msvcUtilTransformPatternToRouteStub.args[index][0])
110+
.to.be.deep.equal(transformedServerPatterns[index]);
111+
});
112+
});
28113
});
29114
});
115+
30116
describe('send', () => {
31117
let stream$: Observable<string>;
32118
let sendSpy: sinon.SinonSpy;
@@ -93,20 +179,59 @@ describe('Server', () => {
93179
});
94180
});
95181
});
182+
96183
describe('getHandlerByPattern', () => {
184+
let messageHandlersGetSpy: sinon.SinonStub;
185+
let messageHandlersHasSpy: sinon.SinonStub;
186+
const handlerRoute = 'hello';
187+
188+
beforeEach(() => {
189+
sandbox
190+
.stub((server as any), 'messageHandlers')
191+
.value({ get() {}, has() {} });
192+
messageHandlersGetSpy = sinon
193+
.stub((server as any).messageHandlers, 'get')
194+
.returns(callback);
195+
messageHandlersHasSpy = sinon
196+
.stub((server as any).messageHandlers, 'has');
197+
198+
sandbox
199+
.stub((server as any), 'getRouteFromPattern')
200+
.returns(handlerRoute);
201+
});
202+
203+
afterEach(() => {
204+
messageHandlersGetSpy.restore();
205+
messageHandlersHasSpy.restore();
206+
});
207+
97208
describe('when handler exists', () => {
98209
it('should return expected handler', () => {
99-
const channel = 'pattern';
100-
const expectedResult = {};
101-
const handlers = new Map([[channel, expectedResult]]);
102-
(server as any).messageHandlers = handlers;
103-
expect(server.getHandlerByPattern(channel)).to.be.eql(expectedResult);
210+
messageHandlersHasSpy.returns(true);
211+
212+
const value = server.getHandlerByPattern(handlerRoute);
213+
214+
expect(messageHandlersHasSpy.args[0][0])
215+
.to.be.equal(handlerRoute);
216+
expect(messageHandlersGetSpy.called)
217+
.to.be.true;
218+
expect(messageHandlersGetSpy.args[0][0])
219+
.to.be.equal(handlerRoute);
220+
expect(value).to.be.equal(callback);
104221
});
105222
});
223+
106224
describe('when handler does not exists', () => {
107225
it('should return null', () => {
108-
const channel = 'test';
109-
expect(server.getHandlerByPattern(channel)).to.be.eql(null);
226+
messageHandlersHasSpy.returns(false);
227+
228+
const value = server.getHandlerByPattern(handlerRoute);
229+
230+
expect(messageHandlersHasSpy.args[0][0])
231+
.to.be.equal(handlerRoute);
232+
expect(messageHandlersGetSpy.called)
233+
.to.be.false;
234+
expect(value).to.be.null;
110235
});
111236
});
112237
});

0 commit comments

Comments
 (0)