@@ -10,23 +10,109 @@ class TestServer extends Server {
1010
1111describe ( '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