@@ -3,6 +3,7 @@ import * as sinon from 'sinon';
33import { MetadataScanner } from '../../core/metadata-scanner' ;
44import { Client } from '../decorators/client.decorator' ;
55import { MessagePattern } from '../decorators/message-pattern.decorator' ;
6+ import { MessageRequest } from '../decorators/message-request.decorator' ;
67import { Transport } from '../enums/transport.enum' ;
78import { 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