7
7
RedisClient ,
8
8
RedisCommand ,
9
9
RedisKey ,
10
+ RedisSet ,
10
11
SADD ,
11
12
SCARD ,
12
13
SDIFF ,
@@ -31,6 +32,12 @@ afterAll(async () => {
31
32
await redis . close ( ) ;
32
33
} ) ;
33
34
35
+ async function sendOnce ( redis : RedisClient , command : RedisCommand ) {
36
+ const result = await redis . send ( command ) ;
37
+ await redis . close ( ) ;
38
+ return result ;
39
+ }
40
+
34
41
test ( "send" , async ( ) => {
35
42
const encoder = new TextEncoder ( ) ;
36
43
@@ -46,80 +53,80 @@ test("send", async () => {
46
53
47
54
// sendOnce will disconnect after the command is resolved.
48
55
expect ( redis . connected ) . toBe ( true ) ;
49
- expect ( await redis . sendOnce ( GET ( foo ) ) ) . toEqual ( undefined ) ;
56
+ expect ( await sendOnce ( redis , GET ( foo ) ) ) . toEqual ( undefined ) ;
50
57
expect ( redis . connected ) . toBe ( false ) ;
51
58
52
59
// This reconnects before sending the command.
53
- expect ( await redis . sendOnce ( PING ( ) ) ) . toEqual ( "PONG" ) ;
60
+ expect ( await sendOnce ( redis , PING ( ) ) ) . toEqual ( "PONG" ) ;
54
61
} ) ;
55
62
56
63
test ( "set commands" , async ( ) => {
57
- const setKey = new RedisKey ( "myset" , Type . String ( ) ) ;
64
+ const fooSet = new RedisSet ( "myset" , Type . String ( ) ) ;
58
65
const member1 = "member1" ;
59
66
const member2 = "member2" ;
60
67
const member3 = "member3" ;
61
68
62
69
// SMEMBERS non-existent set
63
- expect ( await redis . send ( SMEMBERS ( setKey ) ) ) . toEqual ( [ ] ) ;
70
+ expect ( await redis . send ( SMEMBERS ( fooSet ) ) ) . toEqual ( [ ] ) ;
64
71
65
72
// SADD
66
- expect ( await redis . send ( SADD ( setKey , member1 , member2 ) ) ) . toEqual ( 2 ) ;
67
- expect ( await redis . send ( SADD ( setKey , member1 ) ) ) . toEqual ( 0 ) ; // Already exists
73
+ expect ( await redis . send ( SADD ( fooSet , member1 , member2 ) ) ) . toEqual ( 2 ) ;
74
+ expect ( await redis . send ( SADD ( fooSet , member1 ) ) ) . toEqual ( 0 ) ; // Already exists
68
75
69
76
// SCARD
70
- expect ( await redis . send ( SCARD ( setKey ) ) ) . toEqual ( 2 ) ;
77
+ expect ( await redis . send ( SCARD ( fooSet ) ) ) . toEqual ( 2 ) ;
71
78
72
79
// SMEMBERS
73
- expect ( await redis . send ( SMEMBERS ( setKey ) ) ) . toEqual (
80
+ expect ( await redis . send ( SMEMBERS ( fooSet ) ) ) . toEqual (
74
81
expect . arrayContaining ( [ member1 , member2 ] ) ,
75
82
) ;
76
83
77
84
// SISMEMBER
78
- expect ( await redis . send ( SISMEMBER ( setKey , member1 ) ) ) . toEqual ( true ) ;
79
- expect ( await redis . send ( SISMEMBER ( setKey , member3 ) ) ) . toEqual ( false ) ;
85
+ expect ( await redis . send ( SISMEMBER ( fooSet , member1 ) ) ) . toEqual ( true ) ;
86
+ expect ( await redis . send ( SISMEMBER ( fooSet , member3 ) ) ) . toEqual ( false ) ;
80
87
81
88
// SPOP
82
- let poppedMember = await redis . send ( SPOP ( setKey ) ) ;
89
+ let poppedMember = await redis . send ( SPOP ( fooSet ) ) ;
83
90
expect ( [ member1 , member2 ] ) . toContain ( poppedMember ) ;
84
- expect ( await redis . send ( SCARD ( setKey ) ) ) . toEqual ( 1 ) ; // Size reduced by 1
91
+ expect ( await redis . send ( SCARD ( fooSet ) ) ) . toEqual ( 1 ) ; // Size reduced by 1
85
92
86
93
// SADD back member1 and member2 for further tests
87
- await redis . send ( SADD ( setKey , member1 , member2 ) ) ;
94
+ await redis . send ( SADD ( fooSet , member1 , member2 ) ) ;
88
95
89
96
// SREM
90
- expect ( await redis . send ( SREM ( setKey , member1 ) ) ) . toEqual ( 1 ) ;
91
- expect ( await redis . send ( SREM ( setKey , member3 ) ) ) . toEqual ( 0 ) ; // Not exists
92
- expect ( await redis . send ( SCARD ( setKey ) ) ) . toEqual ( 1 ) ; // Size reduced by 1
97
+ expect ( await redis . send ( SREM ( fooSet , member1 ) ) ) . toEqual ( 1 ) ;
98
+ expect ( await redis . send ( SREM ( fooSet , member3 ) ) ) . toEqual ( 0 ) ; // Not exists
99
+ expect ( await redis . send ( SCARD ( fooSet ) ) ) . toEqual ( 1 ) ; // Size reduced by 1
93
100
94
101
// SADD back member1 for further tests
95
- await redis . send ( SADD ( setKey , member1 ) ) ;
102
+ await redis . send ( SADD ( fooSet , member1 ) ) ;
96
103
97
- const anotherSetKey = new RedisKey ( "anotherset" , Type . String ( ) ) ;
98
- await redis . send ( SADD ( anotherSetKey , member2 , member3 ) ) ;
104
+ const otherSet = new RedisSet ( "anotherset" , Type . String ( ) ) ;
105
+ await redis . send ( SADD ( otherSet , member2 , member3 ) ) ;
99
106
100
107
// SDIFF
101
- expect ( await redis . send ( SDIFF ( setKey , anotherSetKey ) ) ) . toEqual (
108
+ expect ( await redis . send ( SDIFF ( fooSet , otherSet ) ) ) . toEqual (
102
109
expect . arrayContaining ( [ member1 ] ) ,
103
110
) ;
104
111
105
112
// SINTER
106
- expect ( await redis . send ( SINTER ( setKey , anotherSetKey ) ) ) . toEqual (
113
+ expect ( await redis . send ( SINTER ( fooSet , otherSet ) ) ) . toEqual (
107
114
expect . arrayContaining ( [ member2 ] ) ,
108
115
) ;
109
116
110
117
// SUNION
111
- expect ( await redis . send ( SUNION ( setKey , anotherSetKey ) ) ) . toEqual (
118
+ expect ( await redis . send ( SUNION ( fooSet , otherSet ) ) ) . toEqual (
112
119
expect . arrayContaining ( [ member1 , member2 , member3 ] ) ,
113
120
) ;
114
121
115
122
// DEL set key
116
- expect ( await redis . send ( DEL ( setKey ) ) ) . toEqual ( 1 ) ;
117
- expect ( await redis . send ( DEL ( anotherSetKey ) ) ) . toEqual ( 1 ) ;
123
+ expect ( await redis . send ( DEL ( fooSet ) ) ) . toEqual ( 1 ) ;
124
+ expect ( await redis . send ( DEL ( otherSet ) ) ) . toEqual ( 1 ) ;
118
125
} ) ;
119
126
120
127
test ( "error handling" , async ( ) => {
121
128
await expect (
122
- redis . sendOnce ( new RedisCommand ( [ "MY_GO" ] ) ) ,
129
+ sendOnce ( redis , new RedisCommand ( [ "MY_GO" ] ) ) ,
123
130
) . rejects . toThrowError (
124
131
"ERR unknown command 'MY_GO', with args beginning with: " ,
125
132
) ;
0 commit comments