@@ -329,6 +329,143 @@ describe('BaseClient', () => {
329
329
} ) ;
330
330
} ) ;
331
331
332
+ test ( 'normalizes event with default depth of 3' , ( ) => {
333
+ expect . assertions ( 1 ) ;
334
+ const client = new TestClient ( { dsn : PUBLIC_DSN } ) ;
335
+ const fourLevelsObject = {
336
+ a : {
337
+ b : {
338
+ c : 'wat' ,
339
+ d : {
340
+ e : 'wat' ,
341
+ } ,
342
+ } ,
343
+ } ,
344
+ } ;
345
+ const normalizedObject = {
346
+ a : {
347
+ b : {
348
+ c : 'wat' ,
349
+ d : '[Object]' ,
350
+ } ,
351
+ } ,
352
+ } ;
353
+ const fourLevelBreadcrumb = {
354
+ data : fourLevelsObject ,
355
+ message : 'wat' ,
356
+ } ;
357
+ const normalizedBreadcrumb = {
358
+ data : normalizedObject ,
359
+ message : 'wat' ,
360
+ } ;
361
+ client . captureEvent ( {
362
+ breadcrumbs : [ fourLevelBreadcrumb , fourLevelBreadcrumb , fourLevelBreadcrumb ] ,
363
+ contexts : fourLevelsObject ,
364
+ extra : fourLevelsObject ,
365
+ user : fourLevelsObject ,
366
+ } ) ;
367
+ expect ( TestBackend . instance ! . event ! ) . toEqual ( {
368
+ breadcrumbs : [ normalizedBreadcrumb , normalizedBreadcrumb , normalizedBreadcrumb ] ,
369
+ contexts : normalizedObject ,
370
+ event_id : '42' ,
371
+ extra : normalizedObject ,
372
+ user : normalizedObject ,
373
+ } ) ;
374
+ } ) ;
375
+
376
+ test ( 'normalization respects `normalizeDepth` option' , ( ) => {
377
+ expect . assertions ( 1 ) ;
378
+ const client = new TestClient ( {
379
+ dsn : PUBLIC_DSN ,
380
+ normalizeDepth : 2 ,
381
+ } ) ;
382
+ const fourLevelsObject = {
383
+ a : {
384
+ b : {
385
+ c : 'wat' ,
386
+ d : {
387
+ e : 'wat' ,
388
+ } ,
389
+ } ,
390
+ } ,
391
+ } ;
392
+ const normalizedObject = {
393
+ a : {
394
+ b : '[Object]' ,
395
+ } ,
396
+ } ;
397
+ const fourLevelBreadcrumb = {
398
+ data : fourLevelsObject ,
399
+ message : 'wat' ,
400
+ } ;
401
+ const normalizedBreadcrumb = {
402
+ data : normalizedObject ,
403
+ message : 'wat' ,
404
+ } ;
405
+ client . captureEvent ( {
406
+ breadcrumbs : [ fourLevelBreadcrumb , fourLevelBreadcrumb , fourLevelBreadcrumb ] ,
407
+ contexts : fourLevelsObject ,
408
+ extra : fourLevelsObject ,
409
+ user : fourLevelsObject ,
410
+ } ) ;
411
+ expect ( TestBackend . instance ! . event ! ) . toEqual ( {
412
+ breadcrumbs : [ normalizedBreadcrumb , normalizedBreadcrumb , normalizedBreadcrumb ] ,
413
+ contexts : normalizedObject ,
414
+ event_id : '42' ,
415
+ extra : normalizedObject ,
416
+ user : normalizedObject ,
417
+ } ) ;
418
+ } ) ;
419
+
420
+ test ( 'skips normalization when `normalizeDepth: 0`' , ( ) => {
421
+ expect . assertions ( 1 ) ;
422
+ const client = new TestClient ( {
423
+ dsn : PUBLIC_DSN ,
424
+ normalizeDepth : 0 ,
425
+ } ) ;
426
+ const fourLevelsObject = {
427
+ a : {
428
+ b : {
429
+ c : 'wat' ,
430
+ d : {
431
+ e : 'wat' ,
432
+ } ,
433
+ } ,
434
+ } ,
435
+ } ;
436
+ const normalizedObject = {
437
+ a : {
438
+ b : {
439
+ c : 'wat' ,
440
+ d : {
441
+ e : 'wat' ,
442
+ } ,
443
+ } ,
444
+ } ,
445
+ } ;
446
+ const fourLevelBreadcrumb = {
447
+ data : fourLevelsObject ,
448
+ message : 'wat' ,
449
+ } ;
450
+ const normalizedBreadcrumb = {
451
+ data : normalizedObject ,
452
+ message : 'wat' ,
453
+ } ;
454
+ client . captureEvent ( {
455
+ breadcrumbs : [ fourLevelBreadcrumb , fourLevelBreadcrumb , fourLevelBreadcrumb ] ,
456
+ contexts : fourLevelsObject ,
457
+ extra : fourLevelsObject ,
458
+ user : fourLevelsObject ,
459
+ } ) ;
460
+ expect ( TestBackend . instance ! . event ! ) . toEqual ( {
461
+ breadcrumbs : [ normalizedBreadcrumb , normalizedBreadcrumb , normalizedBreadcrumb ] ,
462
+ contexts : normalizedObject ,
463
+ event_id : '42' ,
464
+ extra : normalizedObject ,
465
+ user : normalizedObject ,
466
+ } ) ;
467
+ } ) ;
468
+
332
469
test ( 'calls beforeSend and uses original event without any changes' , ( ) => {
333
470
expect . assertions ( 1 ) ;
334
471
const beforeSend = jest . fn ( event => event ) ;
0 commit comments