-
Notifications
You must be signed in to change notification settings - Fork 179
Expand file tree
/
Copy pathmain.spec.ts
More file actions
98 lines (85 loc) · 3.38 KB
/
main.spec.ts
File metadata and controls
98 lines (85 loc) · 3.38 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
import { display } from '@datadog/browser-core'
import { registerCleanupTask, replaceMockableWithSpy } from '@datadog/browser-core/test'
import { initDebuggerTransport } from '../domain/api'
import { startDeliveryApiPolling } from '../domain/deliveryApi'
import { startDebuggerBatch } from '../transport/startDebuggerBatch'
import type { BrowserWindow } from './main'
import { datadogDebugger } from './main'
describe('datadogDebugger', () => {
const browserWindow: BrowserWindow = window
beforeEach(() => {
delete browserWindow.__DD_LIVE_DEBUGGER_BUILD__
delete browserWindow.$dd_entry
delete browserWindow.$dd_return
delete browserWindow.$dd_throw
delete browserWindow.$dd_probes
registerCleanupTask(() => {
delete browserWindow.__DD_LIVE_DEBUGGER_BUILD__
delete browserWindow.$dd_entry
delete browserWindow.$dd_return
delete browserWindow.$dd_throw
delete browserWindow.$dd_probes
})
})
it('should only expose init, version, and onReady', () => {
expect(datadogDebugger).toEqual({
init: jasmine.any(Function),
version: jasmine.any(String),
onReady: jasmine.any(Function),
})
})
it('should default the init version from build-plugin metadata', async () => {
browserWindow.__DD_LIVE_DEBUGGER_BUILD__ = { version: 'build-version' }
replaceMockableWithSpy(startDebuggerBatch).and.callFake(() => ({
flushController: undefined as any,
add: () => undefined,
flush: () => undefined,
stop: () => undefined,
upsert: () => undefined,
}))
const initTransportSpy = replaceMockableWithSpy(initDebuggerTransport)
const startDeliveryApiPollingSpy = replaceMockableWithSpy(startDeliveryApiPolling)
datadogDebugger.init({
clientToken: 'client-token',
service: 'service-name',
env: 'staging',
})
await flushPromises()
expect(initTransportSpy).toHaveBeenCalledWith(
jasmine.objectContaining({ version: 'build-version' }),
jasmine.anything()
)
expect(startDeliveryApiPollingSpy).toHaveBeenCalledWith(jasmine.objectContaining({ version: 'build-version' }))
expect(browserWindow.$dd_entry).toBeDefined()
expect(browserWindow.$dd_return).toBeDefined()
expect(browserWindow.$dd_throw).toBeDefined()
expect(browserWindow.$dd_probes).toBeDefined()
})
it('should warn when the explicit init version mismatches build-plugin metadata', async () => {
browserWindow.__DD_LIVE_DEBUGGER_BUILD__ = { version: 'build-version' }
replaceMockableWithSpy(startDebuggerBatch).and.callFake(() => ({
flushController: undefined as any,
add: () => undefined,
flush: () => undefined,
stop: () => undefined,
upsert: () => undefined,
}))
replaceMockableWithSpy(initDebuggerTransport)
const startDeliveryApiPollingSpy = replaceMockableWithSpy(startDeliveryApiPolling)
const warnSpy = spyOn(display, 'warn')
datadogDebugger.init({
clientToken: 'client-token',
service: 'service-name',
env: 'staging',
version: 'runtime-version',
})
await flushPromises()
expect(warnSpy).toHaveBeenCalledWith(jasmine.stringMatching(/does not match the build-plugin version/))
expect(startDeliveryApiPollingSpy).toHaveBeenCalledWith(jasmine.objectContaining({ version: 'runtime-version' }))
})
})
async function flushPromises() {
for (let i = 0; i < 10; i++) {
await Promise.resolve()
}
}