@datadog/mobile-react-native
Version:
A client-side React Native module to interact with Datadog
141 lines (133 loc) • 5.11 kB
JavaScript
/*
* Unless explicitly stated otherwise all files in this repository are licensed under the Apache License Version 2.0.
* This product includes software developed at Datadog (https://www.datadoghq.com/).
* Copyright 2016-Present Datadog, Inc.
*/
/* eslint-disable react/jsx-filename-extension */
/* eslint-disable @typescript-eslint/no-var-requires */
const React = require('react');
const actualDatadog = jest.requireActual('@datadog/mobile-react-native');
/**
* Explicitly mocking the provider prevents auto-instrumentation in tests.
* This prevents errors in tests to be logged in the console, as well as needing
* to mock XMLHttpRequest.
*/
const DatadogProviderMock = ({ children }) => {
return <>{children}</>;
};
DatadogProviderMock.initialize = jest.fn().mockResolvedValue();
module.exports = {
...actualDatadog,
DdSdkReactNative: {
initialize: jest
.fn()
.mockImplementation(() => new Promise(resolve => resolve())),
isInitialized: jest.fn().mockImplementation(() => true),
setUser: jest
.fn()
.mockImplementation(() => new Promise(resolve => resolve())),
setUserInfo: jest
.fn()
.mockImplementation(() => new Promise(resolve => resolve())),
addUserExtraInfo: jest
.fn()
.mockImplementation(() => new Promise(resolve => resolve())),
setAttributes: jest
.fn()
.mockImplementation(() => new Promise(resolve => resolve())),
setTrackingConsent: jest
.fn()
.mockImplementation(() => new Promise(resolve => resolve())),
sendTelemetryLog: jest
.fn()
.mockImplementation(() => new Promise(resolve => resolve())),
telemetryDebug: jest
.fn()
.mockImplementation(() => new Promise(resolve => resolve())),
telemetryError: jest
.fn()
.mockImplementation(() => new Promise(resolve => resolve())),
clearAllData: jest
.fn()
.mockImplementation(() => new Promise(resolve => resolve()))
},
DdLogs: {
debug: jest
.fn()
.mockImplementation(() => new Promise(resolve => resolve())),
info: jest
.fn()
.mockImplementation(() => new Promise(resolve => resolve())),
warn: jest
.fn()
.mockImplementation(() => new Promise(resolve => resolve())),
error: jest
.fn()
.mockImplementation(() => new Promise(resolve => resolve()))
},
DdTrace: {
startSpan: jest
.fn()
.mockImplementation(
() => new Promise(resolve => resolve('fakeSpanId'))
),
finishSpan: jest
.fn()
.mockImplementation(() => new Promise(resolve => resolve()))
},
DdRum: {
startView: jest
.fn()
.mockImplementation(() => new Promise(resolve => resolve())),
stopView: jest
.fn()
.mockImplementation(() => new Promise(resolve => resolve())),
startAction: jest
.fn()
.mockImplementation(() => new Promise(resolve => resolve())),
stopAction: jest
.fn()
.mockImplementation(() => new Promise(resolve => resolve())),
addAction: jest
.fn()
.mockImplementation(() => new Promise(resolve => resolve())),
startResource: jest
.fn()
.mockImplementation(() => new Promise(resolve => resolve())),
stopResource: jest
.fn()
.mockImplementation(() => new Promise(resolve => resolve())),
addError: jest
.fn()
.mockImplementation(() => new Promise(resolve => resolve())),
addTiming: jest
.fn()
.mockImplementation(() => new Promise(resolve => resolve())),
addViewLoadingTime: jest
.fn()
.mockImplementation(() => new Promise(resolve => resolve())),
addFeatureFlagEvaluation: jest
.fn()
.mockImplementation(() => new Promise(resolve => resolve())),
stopSession: jest
.fn()
.mockImplementation(() => new Promise(resolve => resolve())),
getCurrentSessionId: jest
.fn()
.mockImplementation(
() => new Promise(resolve => resolve('test-session-id'))
),
setTimeProvider: jest.fn().mockImplementation(() => {}),
timeProvider: jest.fn().mockReturnValue(undefined),
getTracingContext: jest.fn().mockReturnValue(undefined),
getTracingContextForPropagators: jest.fn().mockReturnValue(undefined),
generateTraceId: jest.fn().mockReturnValue('mock-trace-id'),
generateSpanId: jest.fn().mockReturnValue('mock-span-id')
},
DatadogProvider: DatadogProviderMock,
DdSdk: {
initialize: jest
.fn()
.mockImplementation(() => new Promise(resolve => resolve()))
}
};