@@ -32,33 +32,57 @@ describe('Hub', () => {
32
32
expect ( hub . isOlderThan ( 0 ) ) . toBeFalsy ( ) ;
33
33
} ) ;
34
34
35
- test ( 'pushScope' , ( ) => {
36
- const localScope = new Scope ( ) ;
37
- localScope . setExtra ( 'a' , 'b' ) ;
38
- const hub = new Hub ( undefined , localScope ) ;
39
- hub . pushScope ( ) ;
40
- expect ( hub . getStack ( ) ) . toHaveLength ( 2 ) ;
41
- expect ( hub . getStack ( ) [ 1 ] . scope ) . not . toBe ( localScope ) ;
42
- expect ( ( ( hub . getStack ( ) [ 1 ] . scope as Scope ) as any ) . _extra ) . toEqual ( { a : 'b' } ) ;
43
- } ) ;
35
+ describe ( 'pushScope' , ( ) => {
36
+ test ( 'simple' , ( ) => {
37
+ const localScope = new Scope ( ) ;
38
+ localScope . setExtra ( 'a' , 'b' ) ;
39
+ const hub = new Hub ( undefined , localScope ) ;
40
+ hub . pushScope ( ) ;
41
+ expect ( hub . getStack ( ) ) . toHaveLength ( 2 ) ;
42
+ expect ( hub . getStack ( ) [ 1 ] . scope ) . not . toBe ( localScope ) ;
43
+ expect ( ( ( hub . getStack ( ) [ 1 ] . scope as Scope ) as any ) . _extra ) . toEqual ( { a : 'b' } ) ;
44
+ } ) ;
44
45
45
- test ( 'pushScope inherit client' , ( ) => {
46
- const testClient : any = { bla : 'a' } ;
47
- const hub = new Hub ( testClient ) ;
48
- hub . pushScope ( ) ;
49
- expect ( hub . getStack ( ) ) . toHaveLength ( 2 ) ;
50
- expect ( hub . getStack ( ) [ 1 ] . client ) . toBe ( testClient ) ;
51
- } ) ;
46
+ test ( 'inherit client' , ( ) => {
47
+ const testClient : any = { bla : 'a' } ;
48
+ const hub = new Hub ( testClient ) ;
49
+ hub . pushScope ( ) ;
50
+ expect ( hub . getStack ( ) ) . toHaveLength ( 2 ) ;
51
+ expect ( hub . getStack ( ) [ 1 ] . client ) . toBe ( testClient ) ;
52
+ } ) ;
52
53
53
- test ( 'pushScope bindClient' , ( ) => {
54
- const testClient : any = { bla : 'a' } ;
55
- const hub = new Hub ( testClient ) ;
56
- const ndClient : any = { foo : 'bar' } ;
57
- hub . pushScope ( ) ;
58
- hub . bindClient ( ndClient ) ;
59
- expect ( hub . getStack ( ) ) . toHaveLength ( 2 ) ;
60
- expect ( hub . getStack ( ) [ 0 ] . client ) . toBe ( testClient ) ;
61
- expect ( hub . getStack ( ) [ 1 ] . client ) . toBe ( ndClient ) ;
54
+ test ( 'bindClient' , ( ) => {
55
+ const testClient : any = { bla : 'a' } ;
56
+ const hub = new Hub ( testClient ) ;
57
+ const ndClient : any = { foo : 'bar' } ;
58
+ hub . pushScope ( ) ;
59
+ hub . bindClient ( ndClient ) ;
60
+ expect ( hub . getStack ( ) ) . toHaveLength ( 2 ) ;
61
+ expect ( hub . getStack ( ) [ 0 ] . client ) . toBe ( testClient ) ;
62
+ expect ( hub . getStack ( ) [ 1 ] . client ) . toBe ( ndClient ) ;
63
+ } ) ;
64
+
65
+ test ( 'inherit processors' , ( ) => {
66
+ expect . assertions ( 1 ) ;
67
+ const event : Event = {
68
+ extra : { b : 3 } ,
69
+ } ;
70
+ const localScope = new Scope ( ) ;
71
+ localScope . setExtra ( 'a' , 'b' ) ;
72
+ const hub = new Hub ( { a : 'b' } as any , localScope ) ;
73
+
74
+ localScope . addEventProcessor ( async ( processedEvent : Event ) => {
75
+ processedEvent . dist = '1' ;
76
+ return processedEvent ;
77
+ } ) ;
78
+
79
+ hub . pushScope ( ) ;
80
+ const pushedScope = hub . getStackTop ( ) . scope ;
81
+
82
+ return pushedScope ! . applyToEvent ( event ) . then ( final => {
83
+ expect ( final ! . dist ) . toEqual ( '1' ) ;
84
+ } ) ;
85
+ } ) ;
62
86
} ) ;
63
87
64
88
test ( 'popScope' , ( ) => {
@@ -69,23 +93,25 @@ describe('Hub', () => {
69
93
expect ( hub . getStack ( ) ) . toHaveLength ( 1 ) ;
70
94
} ) ;
71
95
72
- test ( 'withScope' , ( ) => {
73
- const hub = new Hub ( ) ;
74
- hub . withScope ( ( ) => {
75
- expect ( hub . getStack ( ) ) . toHaveLength ( 2 ) ;
96
+ describe ( 'withScope' , ( ) => {
97
+ test ( 'simple' , ( ) => {
98
+ const hub = new Hub ( ) ;
99
+ hub . withScope ( ( ) => {
100
+ expect ( hub . getStack ( ) ) . toHaveLength ( 2 ) ;
101
+ } ) ;
102
+ expect ( hub . getStack ( ) ) . toHaveLength ( 1 ) ;
76
103
} ) ;
77
- expect ( hub . getStack ( ) ) . toHaveLength ( 1 ) ;
78
- } ) ;
79
104
80
- test ( 'withScope bindClient' , ( ) => {
81
- const hub = new Hub ( ) ;
82
- const testClient : any = { bla : 'a' } ;
83
- hub . withScope ( ( ) => {
84
- hub . bindClient ( testClient ) ;
85
- expect ( hub . getStack ( ) ) . toHaveLength ( 2 ) ;
86
- expect ( hub . getStack ( ) [ 1 ] . client ) . toBe ( testClient ) ;
105
+ test ( 'bindClient' , ( ) => {
106
+ const hub = new Hub ( ) ;
107
+ const testClient : any = { bla : 'a' } ;
108
+ hub . withScope ( ( ) => {
109
+ hub . bindClient ( testClient ) ;
110
+ expect ( hub . getStack ( ) ) . toHaveLength ( 2 ) ;
111
+ expect ( hub . getStack ( ) [ 1 ] . client ) . toBe ( testClient ) ;
112
+ } ) ;
113
+ expect ( hub . getStack ( ) ) . toHaveLength ( 1 ) ;
87
114
} ) ;
88
- expect ( hub . getStack ( ) ) . toHaveLength ( 1 ) ;
89
115
} ) ;
90
116
91
117
test ( 'getCurrentClient' , ( ) => {
@@ -109,98 +135,103 @@ describe('Hub', () => {
109
135
expect ( hub . getStackTop ( ) . client ) . toEqual ( { bla : 'a' } ) ;
110
136
} ) ;
111
137
112
- test ( 'captureException ', ( ) => {
113
- const hub = new Hub ( ) ;
114
- const spy = jest . spyOn ( hub as any , '_invokeClient' ) ;
115
- hub . captureException ( 'a' ) ;
116
- expect ( spy ) . toHaveBeenCalled ( ) ;
117
- expect ( spy . mock . calls [ 0 ] [ 0 ] ) . toBe ( 'captureException' ) ;
118
- expect ( spy . mock . calls [ 0 ] [ 1 ] ) . toBe ( 'a' ) ;
119
- } ) ;
138
+ describe ( 'configureScope ', ( ) => {
139
+ test ( 'no client, should not invoke configureScope' , ( ) => {
140
+ expect . assertions ( 0 ) ;
141
+ const hub = new Hub ( ) ;
142
+ hub . configureScope ( _ => {
143
+ expect ( true ) . toBeFalsy ( ) ;
144
+ } ) ;
145
+ } ) ;
120
146
121
- test ( 'captureMessage' , ( ) => {
122
- const hub = new Hub ( ) ;
123
- const spy = jest . spyOn ( hub as any , '_invokeClient' ) ;
124
- hub . captureMessage ( 'a' ) ;
125
- expect ( spy ) . toHaveBeenCalled ( ) ;
126
- expect ( spy . mock . calls [ 0 ] [ 0 ] ) . toBe ( 'captureMessage' ) ;
127
- expect ( spy . mock . calls [ 0 ] [ 1 ] ) . toBe ( 'a' ) ;
147
+ test ( 'no client, should not invoke configureScope' , ( ) => {
148
+ expect . assertions ( 1 ) ;
149
+ const localScope = new Scope ( ) ;
150
+ localScope . setExtra ( 'a' , 'b' ) ;
151
+ const hub = new Hub ( { a : 'b' } as any , localScope ) ;
152
+ hub . configureScope ( confScope => {
153
+ expect ( ( confScope as any ) . _extra ) . toEqual ( { a : 'b' } ) ;
154
+ } ) ;
155
+ } ) ;
128
156
} ) ;
129
157
130
- test ( 'captureEvent' , ( ) => {
131
- const event : Event = {
132
- extra : { b : 3 } ,
133
- } ;
134
- const hub = new Hub ( ) ;
135
- const spy = jest . spyOn ( hub as any , '_invokeClient' ) ;
136
- hub . captureEvent ( event ) ;
137
- expect ( spy ) . toHaveBeenCalled ( ) ;
138
- expect ( spy . mock . calls [ 0 ] [ 0 ] ) . toBe ( 'captureEvent' ) ;
139
- expect ( spy . mock . calls [ 0 ] [ 1 ] ) . toBe ( event ) ;
140
- } ) ;
158
+ describe ( 'captureException' , ( ) => {
159
+ test ( 'simple' , ( ) => {
160
+ const hub = new Hub ( ) ;
161
+ const spy = jest . spyOn ( hub as any , '_invokeClient' ) ;
162
+ hub . captureException ( 'a' ) ;
163
+ expect ( spy ) . toHaveBeenCalled ( ) ;
164
+ expect ( spy . mock . calls [ 0 ] [ 0 ] ) . toBe ( 'captureException' ) ;
165
+ expect ( spy . mock . calls [ 0 ] [ 1 ] ) . toBe ( 'a' ) ;
166
+ } ) ;
141
167
142
- test ( 'configureScope ' , ( ) => {
143
- expect . assertions ( 0 ) ;
144
- const hub = new Hub ( ) ;
145
- hub . configureScope ( _ => {
146
- expect ( true ) . toBeFalsy ( ) ;
168
+ test ( 'should set event_id in hint ' , ( ) => {
169
+ const hub = new Hub ( ) ;
170
+ const spy = jest . spyOn ( hub as any , '_invokeClient' ) ;
171
+ hub . captureException ( 'a' ) ;
172
+ expect ( spy . mock . calls [ 0 ] [ 2 ] . event_id ) . toBeTruthy ( ) ;
147
173
} ) ;
148
- } ) ;
149
174
150
- test ( 'configureScope' , ( ) => {
151
- expect . assertions ( 1 ) ;
152
- const localScope = new Scope ( ) ;
153
- localScope . setExtra ( 'a' , 'b' ) ;
154
- const hub = new Hub ( { a : 'b' } as any , localScope ) ;
155
- hub . configureScope ( confScope => {
156
- expect ( ( confScope as any ) . _extra ) . toEqual ( { a : 'b' } ) ;
175
+ test ( 'should generate hint if not provided in the call' , ( ) => {
176
+ const hub = new Hub ( ) ;
177
+ const spy = jest . spyOn ( hub as any , '_invokeClient' ) ;
178
+ const ex = new Error ( 'foo' ) ;
179
+ hub . captureException ( ex ) ;
180
+ expect ( spy . mock . calls [ 0 ] [ 2 ] . originalException ) . toBe ( ex ) ;
181
+ expect ( spy . mock . calls [ 0 ] [ 2 ] . syntheticException ) . toBeInstanceOf ( Error ) ;
182
+ expect ( spy . mock . calls [ 0 ] [ 2 ] . syntheticException . message ) . toBe ( 'Sentry syntheticException' ) ;
157
183
} ) ;
158
184
} ) ;
159
185
160
- test ( 'pushScope inherit processors' , ( ) => {
161
- expect . assertions ( 1 ) ;
162
- const event : Event = {
163
- extra : { b : 3 } ,
164
- } ;
165
- const localScope = new Scope ( ) ;
166
- localScope . setExtra ( 'a' , 'b' ) ;
167
- const hub = new Hub ( { a : 'b' } as any , localScope ) ;
168
-
169
- localScope . addEventProcessor ( async ( processedEvent : Event ) => {
170
- processedEvent . dist = '1' ;
171
- return processedEvent ;
186
+ describe ( 'captureMessage' , ( ) => {
187
+ test ( 'simple' , ( ) => {
188
+ const hub = new Hub ( ) ;
189
+ const spy = jest . spyOn ( hub as any , '_invokeClient' ) ;
190
+ hub . captureMessage ( 'a' ) ;
191
+ expect ( spy ) . toHaveBeenCalled ( ) ;
192
+ expect ( spy . mock . calls [ 0 ] [ 0 ] ) . toBe ( 'captureMessage' ) ;
193
+ expect ( spy . mock . calls [ 0 ] [ 1 ] ) . toBe ( 'a' ) ;
172
194
} ) ;
173
195
174
- hub . pushScope ( ) ;
175
- const pushedScope = hub . getStackTop ( ) . scope ;
176
-
177
- return pushedScope ! . applyToEvent ( event ) . then ( final => {
178
- expect ( final ! . dist ) . toEqual ( '1' ) ;
196
+ test ( 'should set event_id in hint' , ( ) => {
197
+ const hub = new Hub ( ) ;
198
+ const spy = jest . spyOn ( hub as any , '_invokeClient' ) ;
199
+ hub . captureMessage ( 'a' ) ;
200
+ expect ( spy . mock . calls [ 0 ] [ 3 ] . event_id ) . toBeTruthy ( ) ;
179
201
} ) ;
180
- } ) ;
181
202
182
- test ( 'captureException should set event_id in hint' , ( ) => {
183
- const hub = new Hub ( ) ;
184
- const spy = jest . spyOn ( hub as any , '_invokeClient' ) ;
185
- hub . captureException ( 'a' ) ;
186
- expect ( spy . mock . calls [ 0 ] [ 2 ] . event_id ) . toBeTruthy ( ) ;
203
+ test ( 'should generate hint if not provided in the call' , ( ) => {
204
+ const hub = new Hub ( ) ;
205
+ const spy = jest . spyOn ( hub as any , '_invokeClient' ) ;
206
+ hub . captureMessage ( 'foo' ) ;
207
+ expect ( spy . mock . calls [ 0 ] [ 3 ] . originalException ) . toBe ( 'foo' ) ;
208
+ expect ( spy . mock . calls [ 0 ] [ 3 ] . syntheticException ) . toBeInstanceOf ( Error ) ;
209
+ expect ( spy . mock . calls [ 0 ] [ 3 ] . syntheticException . message ) . toBe ( 'foo' ) ;
210
+ } ) ;
187
211
} ) ;
188
212
189
- test ( 'captureMessage should set event_id in hint' , ( ) => {
190
- const hub = new Hub ( ) ;
191
- const spy = jest . spyOn ( hub as any , '_invokeClient' ) ;
192
- hub . captureMessage ( 'a' ) ;
193
- expect ( spy . mock . calls [ 0 ] [ 3 ] . event_id ) . toBeTruthy ( ) ;
194
- } ) ;
213
+ describe ( 'captureEvent' , ( ) => {
214
+ test ( 'simple' , ( ) => {
215
+ const event : Event = {
216
+ extra : { b : 3 } ,
217
+ } ;
218
+ const hub = new Hub ( ) ;
219
+ const spy = jest . spyOn ( hub as any , '_invokeClient' ) ;
220
+ hub . captureEvent ( event ) ;
221
+ expect ( spy ) . toHaveBeenCalled ( ) ;
222
+ expect ( spy . mock . calls [ 0 ] [ 0 ] ) . toBe ( 'captureEvent' ) ;
223
+ expect ( spy . mock . calls [ 0 ] [ 1 ] ) . toBe ( event ) ;
224
+ } ) ;
195
225
196
- test ( 'captureEvent should set event_id in hint' , ( ) => {
197
- const event : Event = {
198
- extra : { b : 3 } ,
199
- } ;
200
- const hub = new Hub ( ) ;
201
- const spy = jest . spyOn ( hub as any , '_invokeClient' ) ;
202
- hub . captureEvent ( event ) ;
203
- expect ( spy . mock . calls [ 0 ] [ 2 ] . event_id ) . toBeTruthy ( ) ;
226
+ test ( 'should set event_id in hint' , ( ) => {
227
+ const event : Event = {
228
+ extra : { b : 3 } ,
229
+ } ;
230
+ const hub = new Hub ( ) ;
231
+ const spy = jest . spyOn ( hub as any , '_invokeClient' ) ;
232
+ hub . captureEvent ( event ) ;
233
+ expect ( spy . mock . calls [ 0 ] [ 2 ] . event_id ) . toBeTruthy ( ) ;
234
+ } ) ;
204
235
} ) ;
205
236
206
237
test ( 'lastEventId should be the same as last created' , ( ) => {
@@ -212,25 +243,6 @@ describe('Hub', () => {
212
243
expect ( eventId ) . toBe ( hub . lastEventId ( ) ) ;
213
244
} ) ;
214
245
215
- test ( 'captureException should generate hint if not provided in the call' , ( ) => {
216
- const hub = new Hub ( ) ;
217
- const spy = jest . spyOn ( hub as any , '_invokeClient' ) ;
218
- const ex = new Error ( 'foo' ) ;
219
- hub . captureException ( ex ) ;
220
- expect ( spy . mock . calls [ 0 ] [ 2 ] . originalException ) . toBe ( ex ) ;
221
- expect ( spy . mock . calls [ 0 ] [ 2 ] . syntheticException ) . toBeInstanceOf ( Error ) ;
222
- expect ( spy . mock . calls [ 0 ] [ 2 ] . syntheticException . message ) . toBe ( 'Sentry syntheticException' ) ;
223
- } ) ;
224
-
225
- test ( 'captureMessage should generate hint if not provided in the call' , ( ) => {
226
- const hub = new Hub ( ) ;
227
- const spy = jest . spyOn ( hub as any , '_invokeClient' ) ;
228
- hub . captureMessage ( 'foo' ) ;
229
- expect ( spy . mock . calls [ 0 ] [ 3 ] . originalException ) . toBe ( 'foo' ) ;
230
- expect ( spy . mock . calls [ 0 ] [ 3 ] . syntheticException ) . toBeInstanceOf ( Error ) ;
231
- expect ( spy . mock . calls [ 0 ] [ 3 ] . syntheticException . message ) . toBe ( 'foo' ) ;
232
- } ) ;
233
-
234
246
test ( 'run' , ( ) => {
235
247
const currentHub = getCurrentHub ( ) ;
236
248
const myScope = new Scope ( ) ;
@@ -269,4 +281,49 @@ describe('Hub', () => {
269
281
} ) ;
270
282
} ) ;
271
283
} ) ;
284
+
285
+ describe ( 'spans' , ( ) => {
286
+ describe ( 'start' , ( ) => {
287
+ test ( 'simple' , ( ) => {
288
+ const hub = new Hub ( clientFn ) ;
289
+ const span = hub . startSpan ( ) as any ;
290
+ expect ( span . _spanId ) . toBeTruthy ( ) ;
291
+ } ) ;
292
+
293
+ test ( 'bindOnScope' , ( ) => {
294
+ const myScope = new Scope ( ) ;
295
+ const hub = new Hub ( clientFn , myScope ) ;
296
+ const span = hub . startSpan ( { } , true ) as any ;
297
+ expect ( ( myScope as any ) . _span ) . toBe ( span ) ;
298
+ } ) ;
299
+ } ) ;
300
+
301
+ describe ( 'finish' , ( ) => {
302
+ test ( 'simple' , ( ) => {
303
+ const hub = new Hub ( clientFn ) ;
304
+ const span = hub . startSpan ( ) as any ;
305
+ expect ( span . timestamp ) . toBeUndefined ( ) ;
306
+ expect ( hub . finishSpan ( span ) ) . toBeUndefined ( ) ;
307
+ expect ( span . timestamp ) . toBeGreaterThan ( 1 ) ;
308
+ } ) ;
309
+
310
+ test ( 'finish a scope span without transaction' , ( ) => {
311
+ const myScope = new Scope ( ) ;
312
+ const hub = new Hub ( clientFn , myScope ) ;
313
+ const spy = jest . spyOn ( hub as any , 'captureEvent' ) ;
314
+ const span = hub . startSpan ( { } , true ) as any ;
315
+ expect ( hub . finishSpan ( span ) ) . toBeUndefined ( ) ;
316
+ expect ( spy ) . not . toHaveBeenCalled ( ) ;
317
+ } ) ;
318
+
319
+ test ( 'finish a scope span with transaction' , ( ) => {
320
+ const myScope = new Scope ( ) ;
321
+ const hub = new Hub ( clientFn , myScope ) ;
322
+ const spy = jest . spyOn ( hub as any , 'captureEvent' ) ;
323
+ const span = hub . startSpan ( { transaction : 'test' } , true ) as any ;
324
+ expect ( hub . finishSpan ( span ) ) . toBeDefined ( ) ;
325
+ expect ( spy ) . toHaveBeenCalled ( ) ;
326
+ } ) ;
327
+ } ) ;
328
+ } ) ;
272
329
} ) ;
0 commit comments