1
- import { Event } from '@sentry/types' ;
1
+ import { Event , EventHint , Package } from '@sentry/types' ;
2
2
3
3
import { SdkInfo } from '../../src/js/integrations' ;
4
4
import { NATIVE } from '../../src/js/wrapper' ;
5
5
6
+ let mockedFetchNativeSdkInfo : jest . Mock < PromiseLike < Package | null > , [ ] > ;
7
+
6
8
const mockPackage = {
7
9
name : 'sentry-cocoa' ,
8
10
version : '0.0.1' ,
@@ -15,7 +17,7 @@ jest.mock('../../src/js/wrapper', () => {
15
17
NATIVE : {
16
18
...actual . NATIVE ,
17
19
platform : 'ios' ,
18
- fetchNativeSdkInfo : jest . fn ( ( ) => Promise . resolve ( mockPackage ) ) ,
20
+ fetchNativeSdkInfo : ( ) => mockedFetchNativeSdkInfo ( ) ,
19
21
} ,
20
22
} ;
21
23
} ) ;
@@ -25,72 +27,48 @@ afterEach(() => {
25
27
} ) ;
26
28
27
29
describe ( 'Sdk Info' , ( ) => {
28
- it ( 'Adds native package and javascript platform to event on iOS' , ( done ) => {
29
- const integration = new SdkInfo ( ) ;
30
-
30
+ it ( 'Adds native package and javascript platform to event on iOS' , async ( ) => {
31
+ mockedFetchNativeSdkInfo = jest . fn ( ) . mockResolvedValue ( mockPackage ) ;
31
32
const mockEvent : Event = { } ;
33
+ const processedEvent = await executeIntegrationFor ( mockEvent ) ;
32
34
33
- integration . setupOnce ( async ( eventProcessor ) => {
34
- try {
35
- const processedEvent = await eventProcessor ( mockEvent ) ;
36
-
37
- expect ( processedEvent ) . toBeDefined ( ) ;
38
- if ( processedEvent ) {
39
- expect ( processedEvent . sdk ) . toBeDefined ( ) ;
40
- if ( processedEvent . sdk ) {
41
- expect ( processedEvent . sdk . packages ) . toBeDefined ( ) ;
42
- if ( processedEvent . sdk . packages ) {
43
- expect (
44
- processedEvent . sdk . packages . some (
45
- ( pkg ) =>
46
- pkg . name === mockPackage . name &&
47
- pkg . version === mockPackage . version
48
- )
49
- ) . toBe ( true ) ;
50
- }
51
- }
52
- expect ( processedEvent . platform === 'javascript' ) ;
53
- }
54
-
55
- done ( ) ;
56
- } catch ( e ) {
57
- done ( e ) ;
58
- }
59
- } ) ;
35
+ expect ( processedEvent ?. sdk ?. packages ) . toEqual ( expect . arrayContaining ( [ mockPackage ] ) ) ;
36
+ expect ( processedEvent ?. platform === 'javascript' ) ;
37
+ expect ( mockedFetchNativeSdkInfo ) . toBeCalledTimes ( 1 ) ;
60
38
} ) ;
61
39
62
- it ( 'Adds javascript platform but not native package on Android' , ( done ) => {
40
+ it ( 'Adds javascript platform but not native package on Android' , async ( ) => {
63
41
NATIVE . platform = 'android' ;
64
- const integration = new SdkInfo ( ) ;
42
+ mockedFetchNativeSdkInfo = jest . fn ( ) . mockResolvedValue ( mockPackage ) ;
43
+ const mockEvent : Event = { } ;
44
+ const processedEvent = await executeIntegrationFor ( mockEvent ) ;
45
+
46
+ expect ( processedEvent ?. sdk ?. packages ) . toEqual ( expect . not . arrayContaining ( [ mockPackage ] ) ) ;
47
+ expect ( processedEvent ?. platform === 'javascript' ) ;
48
+ expect ( mockedFetchNativeSdkInfo ) . not . toBeCalled ( ) ;
49
+ } ) ;
65
50
51
+ it ( 'Does not add any default non native packages' , async ( ) => {
52
+ mockedFetchNativeSdkInfo = jest . fn ( ) . mockResolvedValue ( null ) ;
66
53
const mockEvent : Event = { } ;
54
+ const processedEvent = await executeIntegrationFor ( mockEvent ) ;
67
55
56
+ expect ( processedEvent ?. sdk ?. packages ) . toEqual ( [ ] ) ;
57
+ expect ( processedEvent ?. platform === 'javascript' ) ;
58
+ expect ( mockedFetchNativeSdkInfo ) . toBeCalledTimes ( 1 ) ;
59
+ } ) ;
60
+ } ) ;
61
+
62
+ function executeIntegrationFor ( mockedEvent : Event , mockedHint : EventHint = { } ) : Promise < Event | null > {
63
+ const integration = new SdkInfo ( ) ;
64
+ return new Promise ( ( resolve , reject ) => {
68
65
integration . setupOnce ( async ( eventProcessor ) => {
69
66
try {
70
- const processedEvent = await eventProcessor ( mockEvent ) ;
71
-
72
- expect ( processedEvent ) . toBeDefined ( ) ;
73
- if ( processedEvent ) {
74
- expect ( processedEvent . sdk ) . toBeDefined ( ) ;
75
- if ( processedEvent . sdk ) {
76
- expect ( processedEvent . sdk . packages ) . toBeDefined ( ) ;
77
- if ( processedEvent . sdk . packages ) {
78
- expect (
79
- processedEvent . sdk . packages . some (
80
- ( pkg ) =>
81
- pkg . name === mockPackage . name &&
82
- pkg . version === mockPackage . version
83
- )
84
- ) . toBe ( false ) ;
85
- }
86
- }
87
- expect ( processedEvent . platform === 'javascript' ) ;
88
- }
89
-
90
- done ( ) ;
67
+ const processedEvent = await eventProcessor ( mockedEvent , mockedHint ) ;
68
+ resolve ( processedEvent ) ;
91
69
} catch ( e ) {
92
- done ( e ) ;
70
+ reject ( e ) ;
93
71
}
94
72
} ) ;
95
73
} ) ;
96
- } ) ;
74
+ }
0 commit comments