11import * as unit from 'unit.js' ;
22
33import { test , suite } from 'mocha-typescript' ;
4- import { Callback } from 'redis' ;
54
65import { RedisClientManager } from '../../src' ;
7- import { mockRedisCreateConnection } from '../mocks' ;
6+ import { mockRedisCreateConnection , FakeRedisClient } from '../mocks' ;
7+ import { Observable } from 'rxjs/Observable' ;
88
99@suite ( '- Unit RedisClientManagerTest file' )
1010export class RedisClientManagerTest {
1111
1212 @test ( '- Create the manager' )
1313 testCreateManager ( done ) {
14- class FakeRedisClient {
15- get ( param : string , cb : Callback < string > ) {
16- cb ( null , param ) ;
17- return true ;
14+ const fakeInst = new FakeRedisClient ( ) ;
15+
16+ const redisStub = mockRedisCreateConnection ( ) ;
17+ redisStub . returns ( < any > fakeInst ) ;
18+
19+ Observable
20+ . of ( fakeInst )
21+ . delay ( new Date ( Date . now ( ) + 1500 ) )
22+ . map ( _ => fakeInst . emit ( 'ready' ) )
23+ . subscribe ( ) ;
24+
25+ const manager = new RedisClientManager (
26+ {
27+ url : '//toto' ,
28+ password : 'pass_redis' ,
29+ db : '2'
1830 }
19- }
31+ ) ;
32+
33+ manager
34+ . createClient ( )
35+ . subscribe (
36+ _ => {
37+ manager . client . get ( 'param' , ( err , res ) => {
38+ unit . string ( res ) . is ( 'param' ) ;
39+ redisStub . restore ( ) ;
40+ done ( ) ;
41+ } ) ;
42+ } ,
43+ err => done ( err )
44+ ) ;
45+ }
46+
47+ @test ( '- Dont create the manager and return error' )
48+ testCreateManagerError ( done ) {
49+ const fakeInst = new FakeRedisClient ( ) ;
2050
2151 const redisStub = mockRedisCreateConnection ( ) ;
22- redisStub . returns ( < any > new FakeRedisClient ( ) ) ;
52+ redisStub . returns ( < any > fakeInst ) ;
53+
54+ Observable
55+ . of ( fakeInst )
56+ . delay ( new Date ( Date . now ( ) + 1500 ) )
57+ . map ( _ => fakeInst . emit ( 'error' , new Error ( 'Thrown by fakeInst' ) ) )
58+ . subscribe ( ) ;
2359
2460 const manager = new RedisClientManager (
2561 {
@@ -29,10 +65,15 @@ export class RedisClientManagerTest {
2965 }
3066 ) ;
3167
32- manager . client . get ( 'param' , ( err , res ) => {
33- unit . string ( res ) . is ( 'param' ) ;
34- redisStub . restore ( ) ;
35- done ( ) ;
36- } ) ;
68+ manager
69+ . createClient ( )
70+ . subscribe (
71+ _ => done ( new Error ( 'Should not be there' ) ) ,
72+ err => {
73+ unit . string ( err . message ) . is ( 'Thrown by fakeInst' ) ;
74+ redisStub . restore ( ) ;
75+ done ( ) ;
76+ }
77+ ) ;
3778 }
3879}
0 commit comments