1- import { beforeEach } from 'node:test' ;
21import * as SentryCloudflare from '@sentry/cloudflare' ;
2+ import { wrapRequestHandler } from '@sentry/cloudflare/request' ;
3+ import type * as SentryCloudflareRequest from '@sentry/cloudflare/request' ;
34import type { Carrier , GLOBAL_OBJ } from '@sentry/core' ;
4- import { describe , expect , it , vi } from 'vitest' ;
5+ import { beforeEach , describe , expect , it , vi } from 'vitest' ;
56import { initCloudflareSentryHandle } from '../../src/worker' ;
67
8+ vi . mock ( '@sentry/cloudflare/request' , async importOriginal => {
9+ const actual = await importOriginal < typeof SentryCloudflareRequest > ( ) ;
10+ return { ...actual , wrapRequestHandler : vi . fn ( actual . wrapRequestHandler ) } ;
11+ } ) ;
12+
713const globalWithSentry = globalThis as typeof GLOBAL_OBJ & Carrier ;
814
915function getHandlerInput ( ) {
@@ -19,6 +25,7 @@ function getHandlerInput() {
1925describe ( 'initCloudflareSentryHandle' , ( ) => {
2026 beforeEach ( ( ) => {
2127 delete globalWithSentry . __SENTRY__ ;
28+ vi . mocked ( wrapRequestHandler ) . mockClear ( ) ;
2229 } ) ;
2330
2431 it ( 'sets the async context strategy when called' , ( ) => {
@@ -36,15 +43,15 @@ describe('initCloudflareSentryHandle', () => {
3643 const { options, event, resolve, request, context } = getHandlerInput ( ) ;
3744
3845 // @ts -expect-error - resolving an empty object is enough for this test
39- vi . spyOn ( SentryCloudflare , ' wrapRequestHandler' ) . mockImplementationOnce ( ( _ , cb ) => cb ( ) ) ;
46+ vi . mocked ( wrapRequestHandler ) . mockImplementationOnce ( ( _ , cb ) => cb ( ) ) ;
4047
4148 const handle = initCloudflareSentryHandle ( options ) ;
4249
4350 // @ts -expect-error - only passing a partial event object
4451 await handle ( { event, resolve } ) ;
4552
46- expect ( SentryCloudflare . wrapRequestHandler ) . toHaveBeenCalledTimes ( 1 ) ;
47- expect ( SentryCloudflare . wrapRequestHandler ) . toHaveBeenCalledWith (
53+ expect ( wrapRequestHandler ) . toHaveBeenCalledTimes ( 1 ) ;
54+ expect ( wrapRequestHandler ) . toHaveBeenCalledWith (
4855 { options : expect . objectContaining ( { dsn : options . dsn } ) , request, context, captureErrors : false } ,
4956 expect . any ( Function ) ,
5057 ) ;
@@ -57,7 +64,7 @@ describe('initCloudflareSentryHandle', () => {
5764 const locals = { } ;
5865
5966 // @ts -expect-error - resolving an empty object is enough for this test
60- vi . spyOn ( SentryCloudflare , ' wrapRequestHandler' ) . mockImplementationOnce ( ( _ , cb ) => cb ( ) ) ;
67+ vi . mocked ( wrapRequestHandler ) . mockImplementationOnce ( ( _ , cb ) => cb ( ) ) ;
6168
6269 const handle = initCloudflareSentryHandle ( options ) ;
6370
@@ -74,14 +81,14 @@ describe('initCloudflareSentryHandle', () => {
7481 delete event . platform ;
7582
7683 // @ts -expect-error - resolving an empty object is enough for this test
77- vi . spyOn ( SentryCloudflare , ' wrapRequestHandler' ) . mockImplementationOnce ( ( _ , cb ) => cb ( ) ) ;
84+ vi . mocked ( wrapRequestHandler ) . mockImplementationOnce ( ( _ , cb ) => cb ( ) ) ;
7885
7986 const handle = initCloudflareSentryHandle ( options ) ;
8087
8188 // @ts -expect-error - only passing a partial event object
8289 await handle ( { event, resolve } ) ;
8390
84- expect ( SentryCloudflare . wrapRequestHandler ) . not . toHaveBeenCalled ( ) ;
91+ expect ( wrapRequestHandler ) . not . toHaveBeenCalled ( ) ;
8592 expect ( resolve ) . toHaveBeenCalledTimes ( 1 ) ;
8693 } ) ;
8794} ) ;
0 commit comments