File tree Expand file tree Collapse file tree 2 files changed +28
-1
lines changed Expand file tree Collapse file tree 2 files changed +28
-1
lines changed Original file line number Diff line number Diff line change @@ -186,6 +186,31 @@ describe('Messenger', () => {
186
186
expect ( pingCount ) . toBe ( 0 ) ;
187
187
} ) ;
188
188
189
+ it ( 'should throw when calling a delegated action after actions have been reset' , ( ) => {
190
+ type PingAction = { type : 'Fixture:ping' ; handler : ( ) => void } ;
191
+ const messenger = new Messenger < 'Fixture' , PingAction , never > ( {
192
+ namespace : 'Fixture' ,
193
+ } ) ;
194
+ let pingCount = 0 ;
195
+ messenger . registerActionHandler ( 'Fixture:ping' , ( ) => {
196
+ pingCount += 1 ;
197
+ } ) ;
198
+ const delegatedMessenger = new Messenger < 'Destination' , PingAction , never > ( {
199
+ namespace : 'Destination' ,
200
+ } ) ;
201
+ messenger . delegate ( {
202
+ messenger : delegatedMessenger ,
203
+ actions : [ 'Fixture:ping' ] ,
204
+ } ) ;
205
+
206
+ messenger . clearActions ( ) ;
207
+
208
+ expect ( ( ) => {
209
+ delegatedMessenger . call ( 'Fixture:ping' ) ;
210
+ } ) . toThrow ( 'A handler for Fixture:ping has not been registered' ) ;
211
+ expect ( pingCount ) . toBe ( 0 ) ;
212
+ } ) ;
213
+
189
214
it ( 'should publish event to subscriber' , ( ) => {
190
215
type MessageEvent = { type : 'Fixture:message' ; payload : [ string ] } ;
191
216
const messenger = new Messenger < 'Fixture' , never , MessageEvent > ( {
Original file line number Diff line number Diff line change @@ -321,7 +321,9 @@ export class Messenger<
321
321
* This prevents all actions from being called.
322
322
*/
323
323
clearActions ( ) {
324
- this . #actions. clear ( ) ;
324
+ for ( const actionType of this . #actions. keys ( ) ) {
325
+ this . #unregisterActionHandler( actionType ) ;
326
+ }
325
327
}
326
328
327
329
/**
You can’t perform that action at this time.
0 commit comments