1
1
import { Event , EventHint , Severity } from '@sentry/types' ;
2
+ import { getGlobalObject } from '@sentry/utils' ;
2
3
3
- import { Scope } from '../src' ;
4
+ import { addGlobalEventProcessor , Scope } from '../src' ;
4
5
5
6
describe ( 'Scope' , ( ) => {
6
7
afterEach ( ( ) => {
7
8
jest . resetAllMocks ( ) ;
8
9
jest . useRealTimers ( ) ;
10
+ getGlobalObject < any > ( ) . __SENTRY__ . globalEventProcessors = undefined ;
9
11
} ) ;
10
12
11
13
describe ( 'fingerprint' , ( ) => {
@@ -59,6 +61,7 @@ describe('Scope', () => {
59
61
} ) ;
60
62
test ( 'unset' , ( ) => {
61
63
const scope = new Scope ( ) ;
64
+ scope . setUser ( { id : '1' } ) ;
62
65
scope . setUser ( null ) ;
63
66
expect ( ( scope as any ) . _user ) . toEqual ( null ) ;
64
67
} ) ;
@@ -80,6 +83,20 @@ describe('Scope', () => {
80
83
} ) ;
81
84
} ) ;
82
85
86
+ describe ( 'context' , ( ) => {
87
+ test ( 'set' , ( ) => {
88
+ const scope = new Scope ( ) ;
89
+ scope . setContext ( 'os' , { id : '1' } ) ;
90
+ expect ( ( scope as any ) . _context . os ) . toEqual ( { id : '1' } ) ;
91
+ } ) ;
92
+ test ( 'unset' , ( ) => {
93
+ const scope = new Scope ( ) ;
94
+ scope . setContext ( 'os' , { id : '1' } ) ;
95
+ scope . setContext ( 'os' , null ) ;
96
+ expect ( ( scope as any ) . _user ) . toEqual ( { } ) ;
97
+ } ) ;
98
+ } ) ;
99
+
83
100
test ( 'chaining' , ( ) => {
84
101
const scope = new Scope ( ) ;
85
102
scope . setLevel ( Severity . Critical ) . setUser ( { id : '1' } ) ;
@@ -113,14 +130,15 @@ describe('Scope', () => {
113
130
} ) ;
114
131
115
132
test ( 'applyToEvent' , ( ) => {
116
- expect . assertions ( 6 ) ;
133
+ expect . assertions ( 7 ) ;
117
134
const scope = new Scope ( ) ;
118
135
scope . setExtra ( 'a' , 2 ) ;
119
136
scope . setTag ( 'a' , 'b' ) ;
120
137
scope . setUser ( { id : '1' } ) ;
121
138
scope . setFingerprint ( [ 'abcd' ] ) ;
122
139
scope . setLevel ( Severity . Warning ) ;
123
140
scope . addBreadcrumb ( { message : 'test' } , 100 ) ;
141
+ scope . setContext ( 'os' , { id : '1' } ) ;
124
142
const event : Event = { } ;
125
143
return scope . applyToEvent ( event ) . then ( processedEvent => {
126
144
expect ( processedEvent ! . extra ) . toEqual ( { a : 2 } ) ;
@@ -129,19 +147,22 @@ describe('Scope', () => {
129
147
expect ( processedEvent ! . fingerprint ) . toEqual ( [ 'abcd' ] ) ;
130
148
expect ( processedEvent ! . level ) . toEqual ( 'warning' ) ;
131
149
expect ( processedEvent ! . breadcrumbs ! [ 0 ] ) . toHaveProperty ( 'message' , 'test' ) ;
150
+ expect ( processedEvent ! . contexts ) . toEqual ( { os : { id : '1' } } ) ;
132
151
} ) ;
133
152
} ) ;
134
153
135
154
test ( 'applyToEvent merge' , ( ) => {
136
- expect . assertions ( 7 ) ;
155
+ expect . assertions ( 8 ) ;
137
156
const scope = new Scope ( ) ;
138
157
scope . setExtra ( 'a' , 2 ) ;
139
158
scope . setTag ( 'a' , 'b' ) ;
140
159
scope . setUser ( { id : '1' } ) ;
141
160
scope . setFingerprint ( [ 'abcd' ] ) ;
142
161
scope . addBreadcrumb ( { message : 'test' } , 100 ) ;
162
+ scope . setContext ( 'server' , { id : '2' } ) ;
143
163
const event : Event = {
144
164
breadcrumbs : [ { message : 'test1' } ] ,
165
+ contexts : { os : { id : '1' } } ,
145
166
extra : { b : 3 } ,
146
167
fingerprint : [ 'efgh' ] ,
147
168
tags : { b : 'c' } ,
@@ -155,6 +176,10 @@ describe('Scope', () => {
155
176
expect ( processedEvent ! . breadcrumbs ) . toHaveLength ( 2 ) ;
156
177
expect ( processedEvent ! . breadcrumbs ! [ 0 ] ) . toHaveProperty ( 'message' , 'test1' ) ;
157
178
expect ( processedEvent ! . breadcrumbs ! [ 1 ] ) . toHaveProperty ( 'message' , 'test' ) ;
179
+ expect ( processedEvent ! . contexts ) . toEqual ( {
180
+ os : { id : '1' } ,
181
+ server : { id : '2' } ,
182
+ } ) ;
158
183
} ) ;
159
184
} ) ;
160
185
@@ -193,6 +218,14 @@ describe('Scope', () => {
193
218
expect ( ( scope as any ) . _extra ) . toEqual ( { } ) ;
194
219
} ) ;
195
220
221
+ test ( 'clearBreadcrumbs' , ( ) => {
222
+ const scope = new Scope ( ) ;
223
+ scope . addBreadcrumb ( { message : 'test' } , 100 ) ;
224
+ expect ( ( scope as any ) . _breadcrumbs ) . toHaveLength ( 1 ) ;
225
+ scope . clearBreadcrumbs ( ) ;
226
+ expect ( ( scope as any ) . _breadcrumbs ) . toHaveLength ( 0 ) ;
227
+ } ) ;
228
+
196
229
test ( 'addEventProcessor' , ( ) => {
197
230
expect . assertions ( 3 ) ;
198
231
const event : Event = {
@@ -218,6 +251,34 @@ describe('Scope', () => {
218
251
} ) ;
219
252
} ) ;
220
253
254
+ test ( 'addEventProcessor + global' , ( ) => {
255
+ expect . assertions ( 3 ) ;
256
+ const event : Event = {
257
+ extra : { b : 3 } ,
258
+ } ;
259
+ const localScope = new Scope ( ) ;
260
+ localScope . setExtra ( 'a' , 'b' ) ;
261
+
262
+ addGlobalEventProcessor ( ( processedEvent : Event ) => {
263
+ processedEvent . dist = '1' ;
264
+ return processedEvent ;
265
+ } ) ;
266
+
267
+ localScope . addEventProcessor ( ( processedEvent : Event ) => {
268
+ expect ( processedEvent . extra ) . toEqual ( { a : 'b' , b : 3 } ) ;
269
+ return processedEvent ;
270
+ } ) ;
271
+
272
+ localScope . addEventProcessor ( ( processedEvent : Event ) => {
273
+ expect ( processedEvent . dist ) . toEqual ( '1' ) ;
274
+ return processedEvent ;
275
+ } ) ;
276
+
277
+ return localScope . applyToEvent ( event ) . then ( final => {
278
+ expect ( final ! . dist ) . toEqual ( '1' ) ;
279
+ } ) ;
280
+ } ) ;
281
+
221
282
test ( 'addEventProcessor async' , async ( ) => {
222
283
jest . useFakeTimers ( ) ;
223
284
expect . assertions ( 6 ) ;
0 commit comments