1
1
import Client from '../client'
2
2
import Event from '../event'
3
- import { Session } from '..'
3
+ import Session from '../session '
4
4
5
5
describe ( '@bugsnag/core/client' , ( ) => {
6
6
describe ( 'constructor' , ( ) => {
@@ -158,6 +158,41 @@ describe('@bugsnag/core/client', () => {
158
158
event . severity = 'info'
159
159
} )
160
160
} )
161
+
162
+ it ( 'supports setting unhandled via callback' , done => {
163
+ const client = new Client ( { apiKey : 'API_KEY_YEAH' } )
164
+
165
+ const session = new Session ( )
166
+ // @ts -ignore
167
+ client . _session = session
168
+
169
+ client . _setDelivery ( client => ( {
170
+ sendEvent : ( payload ) => {
171
+ expect ( payload ) . toBeTruthy ( )
172
+ expect ( Array . isArray ( payload . events ) ) . toBe ( true )
173
+
174
+ const event = payload . events [ 0 ] . toJSON ( )
175
+
176
+ expect ( event . unhandled ) . toBe ( true )
177
+ expect ( event . severityReason ) . toEqual ( {
178
+ type : 'handledException' ,
179
+ unhandledOverridden : true
180
+ } )
181
+
182
+ expect ( event . session ) . toEqual ( session )
183
+ expect ( ( event . session as Session ) . _handled ) . toBe ( 0 )
184
+ expect ( ( event . session as Session ) . _unhandled ) . toBe ( 1 )
185
+
186
+ done ( )
187
+ } ,
188
+ sendSession : ( ) => { }
189
+ } ) )
190
+
191
+ client . notify ( new Error ( 'oh em gee' ) , event => {
192
+ event . unhandled = true
193
+ } )
194
+ } )
195
+
161
196
// eslint-disable-next-line jest/expect-expect
162
197
it ( 'supports preventing send by returning false in onError callback' , done => {
163
198
const client = new Client ( {
@@ -177,6 +212,7 @@ describe('@bugsnag/core/client', () => {
177
212
// give the event loop a tick to see if the event gets sent
178
213
process . nextTick ( ( ) => done ( ) )
179
214
} )
215
+
180
216
// eslint-disable-next-line jest/expect-expect
181
217
it ( 'supports preventing send by returning false in notify callback' , done => {
182
218
const client = new Client ( { apiKey : 'API_KEY_YEAH' } )
@@ -355,11 +391,18 @@ describe('@bugsnag/core/client', () => {
355
391
sendSession : ( ) => { } ,
356
392
sendEvent : ( payload , cb ) => cb ( null )
357
393
} ) )
394
+
395
+ const session = new Session ( )
358
396
// @ts -ignore
359
- client . notify ( new Error ( '111' ) , { } , ( err , event ) => {
397
+ client . _session = session
398
+
399
+ client . notify ( new Error ( '111' ) , ( ) => { } , ( err , event ) => {
360
400
expect ( err ) . toBe ( null )
361
401
expect ( event ) . toBeTruthy ( )
362
402
expect ( event . errors [ 0 ] . errorMessage ) . toBe ( '111' )
403
+
404
+ expect ( ( event as Event ) . _session ) . toBe ( session )
405
+ expect ( session . toJSON ( ) . events . handled ) . toBe ( 1 )
363
406
done ( )
364
407
} )
365
408
} )
@@ -370,12 +413,19 @@ describe('@bugsnag/core/client', () => {
370
413
sendSession : ( ) => { } ,
371
414
sendEvent : ( payload , cb ) => cb ( new Error ( 'flerp' ) )
372
415
} ) )
416
+
417
+ const session = new Session ( )
373
418
// @ts -ignore
374
- client . notify ( new Error ( '111' ) , { } , ( err , event ) => {
419
+ client . _session = session
420
+
421
+ client . notify ( new Error ( '111' ) , ( ) => { } , ( err , event ) => {
375
422
expect ( err ) . toBeTruthy ( )
376
423
expect ( err . message ) . toBe ( 'flerp' )
377
424
expect ( event ) . toBeTruthy ( )
378
425
expect ( event . errors [ 0 ] . errorMessage ) . toBe ( '111' )
426
+
427
+ expect ( ( event as Event ) . _session ) . toBe ( session )
428
+ expect ( session . toJSON ( ) . events . handled ) . toBe ( 1 )
379
429
done ( )
380
430
} )
381
431
} )
@@ -388,11 +438,17 @@ describe('@bugsnag/core/client', () => {
388
438
sendEvent : ( ) => { done ( 'sendEvent() should not be called' ) }
389
439
} ) )
390
440
441
+ const session = new Session ( )
391
442
// @ts -ignore
392
- client . notify ( new Error ( '111' ) , { } , ( err , event ) => {
443
+ client . _session = session
444
+
445
+ client . notify ( new Error ( '111' ) , ( ) => { } , ( err , event ) => {
393
446
expect ( err ) . toBe ( null )
394
447
expect ( event ) . toBeTruthy ( )
395
448
expect ( event . errors [ 0 ] . errorMessage ) . toBe ( '111' )
449
+
450
+ expect ( ( event as Event ) . _session ) . toBe ( session )
451
+ expect ( session . toJSON ( ) . events . handled ) . toBe ( 1 )
396
452
done ( )
397
453
} )
398
454
} )
@@ -405,11 +461,17 @@ describe('@bugsnag/core/client', () => {
405
461
sendEvent : ( ) => { done ( 'sendEvent() should not be called' ) }
406
462
} ) )
407
463
464
+ const session = new Session ( )
408
465
// @ts -ignore
409
- client . notify ( new Error ( '111' ) , { } , ( err , event ) => {
466
+ client . _session = session
467
+
468
+ client . notify ( new Error ( '111' ) , ( ) => { } , ( err , event ) => {
410
469
expect ( err ) . toBe ( null )
411
470
expect ( event ) . toBeTruthy ( )
412
471
expect ( event . errors [ 0 ] . errorMessage ) . toBe ( '111' )
472
+
473
+ expect ( ( event as Event ) . _session ) . toBe ( session )
474
+ expect ( session . toJSON ( ) . events . handled ) . toBe ( 1 )
413
475
done ( )
414
476
} )
415
477
} )
0 commit comments