@@ -83,4 +83,33 @@ describe('MessageQueue', function() {
83
83
queue . __invokeCallback ( 1 ) ;
84
84
expect ( ( ) => queue . __invokeCallback ( 0 ) ) . toThrow ( ) ;
85
85
} ) ;
86
+
87
+ it ( 'should throw when calling with unknown module' , ( ) => {
88
+ const unknownModule = 'UnknownModule' , unknownMethod = 'UnknownMethod' ;
89
+ expect ( ( ) => queue . __callFunction ( unknownModule , unknownMethod ) ) . toThrow (
90
+ `Module ${ unknownModule } is not a registered callable module (calling ${ unknownMethod } )` ,
91
+ ) ;
92
+ } ) ;
93
+
94
+ it ( 'should return lazily registered module' , ( ) => {
95
+ const dummyModule = { } , name = 'modulesName' ;
96
+ queue . registerLazyCallableModule ( name , ( ) => dummyModule ) ;
97
+ expect ( queue . _getCallableModule ( name ) ) . toEqual ( dummyModule ) ;
98
+ } ) ;
99
+
100
+ it ( 'should not initialize lazily registered module before it was used for the first time' , ( ) => {
101
+ const dummyModule = { } , name = 'modulesName' ;
102
+ const factory = jest . fn ( ( ) => dummyModule ) ;
103
+ queue . registerLazyCallableModule ( name , factory ) ;
104
+ expect ( factory ) . not . toHaveBeenCalled ( ) ;
105
+ } ) ;
106
+
107
+ it ( 'should initialize lazily registered module only once' , ( ) => {
108
+ const dummyModule = { } , name = 'modulesName' ;
109
+ const factory = jest . fn ( ( ) => dummyModule ) ;
110
+ queue . registerLazyCallableModule ( name , factory ) ;
111
+ queue . _getCallableModule ( name ) ;
112
+ queue . _getCallableModule ( name ) ;
113
+ expect ( factory ) . toHaveBeenCalledTimes ( 1 ) ;
114
+ } ) ;
86
115
} ) ;
0 commit comments