@@ -329,6 +329,143 @@ describe('BaseClient', () => {
329329 } ) ;
330330 } ) ;
331331
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+
332469 test ( 'calls beforeSend and uses original event without any changes' , ( ) => {
333470 expect . assertions ( 1 ) ;
334471 const beforeSend = jest . fn ( event => event ) ;
0 commit comments