@@ -8,6 +8,7 @@ const scope = new Scope();
88describe ( 'Hub' , ( ) => {
99 afterEach ( ( ) => {
1010 jest . resetAllMocks ( ) ;
11+ jest . useRealTimers ( ) ;
1112 } ) ;
1213
1314 test ( 'push process into stack' , ( ) => {
@@ -49,6 +50,7 @@ describe('Hub', () => {
4950 } ) ;
5051
5152 test ( 'invoke client async catch error in case' , done => {
53+ const orig = global . console ;
5254 // @ts -ignore
5355 global . console = { error : jest . fn ( ) } ;
5456 const hub = new Hub ( {
@@ -59,6 +61,7 @@ describe('Hub', () => {
5961 setTimeout ( ( ) => {
6062 // tslint:disable-next-line
6163 expect ( console . error ) . toHaveBeenCalled ( ) ;
64+ global . console = orig ;
6265 done ( ) ;
6366 } ) ;
6467 } ) ;
@@ -248,32 +251,61 @@ describe('Hub', () => {
248251 await localScope . applyToEvent ( event ) ;
249252 } ) ;
250253
251- test . only ( 'addEventProcessor async' , async done => {
252- expect . assertions ( 2 ) ;
254+ test ( 'addEventProcessor async' , async ( ) => {
255+ expect . assertions ( 6 ) ;
253256 const event : SentryEvent = {
254257 extra : { b : 3 } ,
255258 } ;
256259 const localScope = new Scope ( ) ;
257260 localScope . setExtra ( 'a' , 'b' ) ;
258261 const hub = new Hub ( { a : 'b' } , localScope ) ;
262+ const callCounter = jest . fn ( ) ;
259263 hub . addEventProcessor ( async ( processedEvent : SentryEvent ) => {
264+ callCounter ( 1 ) ;
260265 expect ( processedEvent . extra ) . toEqual ( { a : 'b' , b : 3 } ) ;
261266 return processedEvent ;
262267 } ) ;
263268 hub . addEventProcessor (
264269 async ( processedEvent : SentryEvent ) =>
265270 new Promise < SentryEvent > ( resolve => {
266- setImmediate ( ( ) => {
271+ callCounter ( 2 ) ;
272+ setTimeout ( ( ) => {
273+ callCounter ( 3 ) ;
267274 processedEvent . dist = '1' ;
268275 resolve ( processedEvent ) ;
269- } ) ;
276+ } , 1 ) ;
270277 } ) ,
271278 ) ;
272279 hub . addEventProcessor ( async ( processedEvent : SentryEvent ) => {
273- expect ( processedEvent . dist ) . toEqual ( '1' ) ;
274- done ( ) ;
280+ callCounter ( 4 ) ;
275281 return processedEvent ;
276282 } ) ;
277- await localScope . applyToEvent ( event ) ;
283+ const final = await localScope . applyToEvent ( event ) ;
284+ expect ( callCounter . mock . calls [ 0 ] [ 0 ] ) . toBe ( 1 ) ;
285+ expect ( callCounter . mock . calls [ 1 ] [ 0 ] ) . toBe ( 2 ) ;
286+ expect ( callCounter . mock . calls [ 2 ] [ 0 ] ) . toBe ( 3 ) ;
287+ expect ( callCounter . mock . calls [ 3 ] [ 0 ] ) . toBe ( 4 ) ;
288+ expect ( final . dist ) . toEqual ( '1' ) ;
289+ } ) ;
290+
291+ test ( 'pushScope inherit processors' , async ( ) => {
292+ const event : SentryEvent = {
293+ extra : { b : 3 } ,
294+ } ;
295+ const localScope = new Scope ( ) ;
296+ localScope . setExtra ( 'a' , 'b' ) ;
297+ const hub = new Hub ( { a : 'b' } , localScope ) ;
298+ const callCounter = jest . fn ( ) ;
299+ hub . addEventProcessor ( async ( processedEvent : SentryEvent ) => {
300+ callCounter ( 1 ) ;
301+ processedEvent . dist = '1' ;
302+ return processedEvent ;
303+ } ) ;
304+ hub . pushScope ( ) ;
305+ const pushedScope = hub . getStackTop ( ) . scope ;
306+ if ( pushedScope ) {
307+ const final = await pushedScope . applyToEvent ( event ) ;
308+ expect ( final . dist ) . toEqual ( '1' ) ;
309+ }
278310 } ) ;
279311} ) ;
0 commit comments