Skip to content

Commit 9c711bf

Browse files
committed
Adds test for explicit @MessageRequest listeners.
1 parent ad44931 commit 9c711bf

1 file changed

Lines changed: 46 additions & 0 deletions

File tree

packages/microservices/test/listeners-metadata-explorer.spec.ts

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import * as sinon from 'sinon';
33
import { MetadataScanner } from '../../core/metadata-scanner';
44
import { Client } from '../decorators/client.decorator';
55
import { MessagePattern } from '../decorators/message-pattern.decorator';
6+
import { MessageRequest } from '../decorators/message-request.decorator';
67
import { Transport } from '../enums/transport.enum';
78
import { ListenerMetadataExplorer } from '../listener-metadata-explorer';
89

@@ -12,6 +13,9 @@ describe('ListenerMetadataExplorer', () => {
1213
const clientMetadata = {};
1314
const clientSecMetadata = { transport: Transport.REDIS };
1415

16+
const requestPattern = 'request.channel';
17+
const replyPattern = 'request.channel.reply';
18+
1519
class Test {
1620
@Client(clientMetadata as any)
1721
public client;
@@ -25,6 +29,9 @@ describe('ListenerMetadataExplorer', () => {
2529

2630
constructor() {}
2731

32+
@MessageRequest(requestPattern, replyPattern)
33+
public requestExplicit() {}
34+
2835
@MessagePattern(pattern)
2936
public test() {}
3037

@@ -96,4 +103,43 @@ describe('ListenerMetadataExplorer', () => {
96103
});
97104
});
98105
});
106+
describe('exploreMessageRequests', () => {
107+
let scanFromPrototype: sinon.SinonSpy;
108+
beforeEach(() => {
109+
scanFromPrototype = sinon.spy(scanner, 'scanFromPrototype');
110+
});
111+
it(`should call "scanFromPrototype" with expected arguments`, () => {
112+
const obj = new Test();
113+
instance.exploreMessageRequests(obj);
114+
115+
const { args } = scanFromPrototype.getCall(0);
116+
expect(args[0]).to.be.eql(obj);
117+
expect(args[1]).to.be.eql(Object.getPrototypeOf(obj));
118+
});
119+
});
120+
describe('exploreMessageRequestMethodMetadata', () => {
121+
let test: Test;
122+
beforeEach(() => {
123+
test = new Test();
124+
});
125+
it(`should return undefined when MessageRequest metadata is undefined`, () => {
126+
const metadata = instance.exploreMessageRequestMethodMetadata(
127+
Object.getPrototypeOf(test),
128+
'noPattern',
129+
);
130+
expect(metadata).to.eq(undefined);
131+
});
132+
it(`should return pattern properties when MessageRequest metadata is not undefined`, () => {
133+
const metadata = instance.exploreMessageRequestMethodMetadata(
134+
Object.getPrototypeOf(test),
135+
'requestExplicit',
136+
);
137+
expect(metadata).to.have.keys([
138+
'requestPattern',
139+
'replyPattern',
140+
]);
141+
expect(metadata.requestPattern).to.eql(requestPattern);
142+
expect(metadata.replyPattern).to.eql(replyPattern);
143+
});
144+
});
99145
});

0 commit comments

Comments
 (0)