@@ -45,7 +45,7 @@ describe('EventUtils', () => {
4545
4646 it ( 'makeEmitFunction' , ( ) => {
4747 const event = 'test' ;
48- const emit = makeEmitFunction ( event ) ;
48+ const emit = makeEmitFunction < unknown > ( event ) ;
4949 const payload = { test : 'test' } ;
5050 emit ( eventEmitter , payload ) ;
5151 expect ( eventEmitter . emit ) . toHaveBeenCalledWith ( event , payload ) ;
@@ -109,30 +109,93 @@ describe('EventUtils', () => {
109109 } ) ;
110110
111111 describe ( 'makeEventFunctions' , ( ) => {
112- const event = 'test' ;
113- const { listen, emit, useListener } = makeEventFunctions ( event ) ;
114- const handler = jest . fn ( ) ;
112+ describe ( 'makeEventFunctions without payload' , ( ) => {
113+ const event = 'test' ;
114+ const { listen, emit, useListener } = makeEventFunctions ( event ) ;
115+ const handler = jest . fn ( ) ;
115116
116- it ( 'listen' , ( ) => {
117- listen ( eventEmitter , handler ) ;
118- expect ( eventEmitter . on ) . toHaveBeenCalledWith ( event , handler ) ;
119- expect ( eventEmitter . off ) . not . toHaveBeenCalled ( ) ;
117+ it ( 'listen' , ( ) => {
118+ listen ( eventEmitter , handler ) ;
119+ expect ( eventEmitter . on ) . toHaveBeenCalledWith ( event , handler ) ;
120+ expect ( eventEmitter . off ) . not . toHaveBeenCalled ( ) ;
121+ } ) ;
122+
123+ it ( 'emit' , ( ) => {
124+ emit ( eventEmitter ) ;
125+ expect ( eventEmitter . emit ) . toHaveBeenCalledWith ( event ) ;
126+ } ) ;
127+
128+ it ( 'useListener' , ( ) => {
129+ const { unmount } = renderHook ( ( ) =>
130+ useListener ( eventEmitter , handler )
131+ ) ;
132+ expect ( eventEmitter . on ) . toHaveBeenCalledWith ( event , handler ) ;
133+ expect ( eventEmitter . off ) . not . toHaveBeenCalled ( ) ;
134+ jest . clearAllMocks ( ) ;
135+ unmount ( ) ;
136+ expect ( eventEmitter . on ) . not . toHaveBeenCalledWith ( event , handler ) ;
137+ expect ( eventEmitter . off ) . toHaveBeenCalledWith ( event , handler ) ;
138+ } ) ;
120139 } ) ;
140+ describe ( 'makeEventFunctions with payload' , ( ) => {
141+ type Payload = { test : string } ;
142+ const event = 'test' ;
143+ const { listen, emit, useListener } = makeEventFunctions < Payload > ( event ) ;
144+ const handler = jest . fn ( ) ;
145+
146+ it ( 'listen' , ( ) => {
147+ listen ( eventEmitter , handler ) ;
148+ expect ( eventEmitter . on ) . toHaveBeenCalledWith ( event , handler ) ;
149+ expect ( eventEmitter . off ) . not . toHaveBeenCalled ( ) ;
150+ } ) ;
151+
152+ it ( 'emit' , ( ) => {
153+ const payload : Payload = { test : 'test' } ;
154+ emit ( eventEmitter , payload ) ;
155+ expect ( eventEmitter . emit ) . toHaveBeenCalledWith ( event , payload ) ;
156+ } ) ;
121157
122- it ( 'emit' , ( ) => {
123- const payload = { test : 'test' } ;
124- emit ( eventEmitter , payload ) ;
125- expect ( eventEmitter . emit ) . toHaveBeenCalledWith ( event , payload ) ;
158+ it ( 'useListener' , ( ) => {
159+ const { unmount } = renderHook ( ( ) =>
160+ useListener ( eventEmitter , handler )
161+ ) ;
162+ expect ( eventEmitter . on ) . toHaveBeenCalledWith ( event , handler ) ;
163+ expect ( eventEmitter . off ) . not . toHaveBeenCalled ( ) ;
164+ jest . clearAllMocks ( ) ;
165+ unmount ( ) ;
166+ expect ( eventEmitter . on ) . not . toHaveBeenCalledWith ( event , handler ) ;
167+ expect ( eventEmitter . off ) . toHaveBeenCalledWith ( event , handler ) ;
168+ } ) ;
126169 } ) ;
170+ describe ( 'makeEventFunctions with multiple parameters' , ( ) => {
171+ type Payload = [ number , string ] ;
172+ const event = 'test' ;
173+ const { listen, emit, useListener } = makeEventFunctions < Payload > ( event ) ;
174+ const handler = jest . fn ( ) ;
127175
128- it ( 'useListener' , ( ) => {
129- const { unmount } = renderHook ( ( ) => useListener ( eventEmitter , handler ) ) ;
130- expect ( eventEmitter . on ) . toHaveBeenCalledWith ( event , handler ) ;
131- expect ( eventEmitter . off ) . not . toHaveBeenCalled ( ) ;
132- jest . clearAllMocks ( ) ;
133- unmount ( ) ;
134- expect ( eventEmitter . on ) . not . toHaveBeenCalledWith ( event , handler ) ;
135- expect ( eventEmitter . off ) . toHaveBeenCalledWith ( event , handler ) ;
176+ it ( 'listen' , ( ) => {
177+ listen ( eventEmitter , handler ) ;
178+ expect ( eventEmitter . on ) . toHaveBeenCalledWith ( event , handler ) ;
179+ expect ( eventEmitter . off ) . not . toHaveBeenCalled ( ) ;
180+ } ) ;
181+
182+ it ( 'emit' , ( ) => {
183+ const payload : Payload = [ 1 , 'test' ] ;
184+ emit ( eventEmitter , ...payload ) ;
185+ expect ( eventEmitter . emit ) . toHaveBeenCalledWith ( event , ...payload ) ;
186+ } ) ;
187+
188+ it ( 'useListener' , ( ) => {
189+ const { unmount } = renderHook ( ( ) =>
190+ useListener ( eventEmitter , handler )
191+ ) ;
192+ expect ( eventEmitter . on ) . toHaveBeenCalledWith ( event , handler ) ;
193+ expect ( eventEmitter . off ) . not . toHaveBeenCalled ( ) ;
194+ jest . clearAllMocks ( ) ;
195+ unmount ( ) ;
196+ expect ( eventEmitter . on ) . not . toHaveBeenCalledWith ( event , handler ) ;
197+ expect ( eventEmitter . off ) . toHaveBeenCalledWith ( event , handler ) ;
198+ } ) ;
136199 } ) ;
137200 } ) ;
138201} ) ;
0 commit comments