1
1
import { defaultStackParser } from '@sentry/browser' ;
2
- import type { Envelope , Event , Outcome , Transport } from '@sentry/types' ;
2
+ import type { Envelope , Event , MetricInstance , Outcome , Transport } from '@sentry/types' ;
3
3
import { rejectedSyncPromise , SentryError } from '@sentry/utils' ;
4
4
import * as RN from 'react-native' ;
5
5
@@ -11,6 +11,7 @@ import { NativeTransport } from '../src/js/transports/native';
11
11
import { SDK_NAME , SDK_PACKAGE_NAME , SDK_VERSION } from '../src/js/version' ;
12
12
import { NATIVE } from '../src/js/wrapper' ;
13
13
import {
14
+ createMockTransport ,
14
15
envelopeHeader ,
15
16
envelopeItemHeader ,
16
17
envelopeItemPayload ,
@@ -147,6 +148,83 @@ describe('Tests ReactNativeClient', () => {
147
148
} ) ;
148
149
} ) ;
149
150
151
+ describe ( 'enabled option' , ( ) => {
152
+ test ( 'captureMessage does not call transport when enabled false' , ( ) => {
153
+ const mockTransport = createMockTransport ( ) ;
154
+ const client = createDisabledClientWith ( mockTransport ) ;
155
+
156
+ client . captureMessage ( 'This message will never be sent because the client is disabled.' ) ;
157
+
158
+ expect ( mockTransport . send ) . not . toBeCalled ( ) ;
159
+ } ) ;
160
+
161
+ test ( 'captureException does not call transport when enabled false' , ( ) => {
162
+ const mockTransport = createMockTransport ( ) ;
163
+ const client = createDisabledClientWith ( mockTransport ) ;
164
+
165
+ client . captureException ( new Error ( 'This exception will never be sent because the client is disabled.' ) ) ;
166
+
167
+ expect ( mockTransport . send ) . not . toBeCalled ( ) ;
168
+ } ) ;
169
+
170
+ test ( 'captureEvent does not call transport when enabled false' , ( ) => {
171
+ const mockTransport = createMockTransport ( ) ;
172
+ const client = createDisabledClientWith ( mockTransport ) ;
173
+
174
+ client . captureEvent ( {
175
+ message : 'This event will never be sent because the client is disabled.' ,
176
+ } ) ;
177
+
178
+ expect ( mockTransport . send ) . not . toBeCalled ( ) ;
179
+ } ) ;
180
+
181
+ test ( 'captureSession does not call transport when enabled false' , ( ) => {
182
+ const mockTransport = createMockTransport ( ) ;
183
+ const client = createDisabledClientWith ( mockTransport ) ;
184
+
185
+ client . captureSession ( getMockSession ( ) ) ;
186
+
187
+ expect ( mockTransport . send ) . not . toBeCalled ( ) ;
188
+ } ) ;
189
+
190
+ test ( 'captureUserFeedback does not call transport when enabled false' , ( ) => {
191
+ const mockTransport = createMockTransport ( ) ;
192
+ const client = createDisabledClientWith ( mockTransport ) ;
193
+
194
+ client . captureUserFeedback ( getMockUserFeedback ( ) ) ;
195
+
196
+ expect ( mockTransport . send ) . not . toBeCalled ( ) ;
197
+ } ) ;
198
+
199
+ test ( 'captureAggregateMetrics does not call transport when enabled false' , ( ) => {
200
+ const mockTransport = createMockTransport ( ) ;
201
+ const client = createDisabledClientWith ( mockTransport ) ;
202
+
203
+ client . captureAggregateMetrics ( [
204
+ {
205
+ // https://github.com/getsentry/sentry-javascript/blob/a7097d9ba2a74b2cb323da0ef22988a383782ffb/packages/core/test/lib/metrics/aggregator.test.ts#L115
206
+ metric : { _value : 1 } as unknown as MetricInstance ,
207
+ metricType : 'c' ,
208
+ name : 'requests' ,
209
+ tags : { } ,
210
+ timestamp : expect . any ( Number ) ,
211
+ unit : 'none' ,
212
+ } ,
213
+ ] ) ;
214
+
215
+ expect ( mockTransport . send ) . not . toBeCalled ( ) ;
216
+ } ) ;
217
+
218
+ function createDisabledClientWith ( transport : Transport ) {
219
+ return new ReactNativeClient ( {
220
+ ...DEFAULT_OPTIONS ,
221
+ dsn : EXAMPLE_DSN ,
222
+ enabled : false ,
223
+ transport : ( ) => transport ,
224
+ } ) ;
225
+ }
226
+ } ) ;
227
+
150
228
describe ( 'onReady' , ( ) => {
151
229
test ( 'calls onReady callback with true if Native SDK is initialized' , done => {
152
230
new ReactNativeClient (
0 commit comments