@@ -40,3 +40,75 @@ test('override setting defaults', async () => {
40
40
// Existing property values should remain constant
41
41
expect ( settings . db . schema ) . toBe ( defaults . db . schema )
42
42
} )
43
+
44
+ describe ( 'resolveFetch' , ( ) => {
45
+ const TEST_URL = 'https://example.com'
46
+ const TEST_OPTIONS = { method : 'GET' }
47
+
48
+ beforeEach ( ( ) => {
49
+ // Reset any mocks between tests
50
+ jest . resetModules ( )
51
+ jest . clearAllMocks ( )
52
+ } )
53
+
54
+ test ( 'should use custom fetch if provided' , async ( ) => {
55
+ const customFetch = jest . fn ( )
56
+ const resolvedFetch = helpers . resolveFetch ( customFetch )
57
+
58
+ await resolvedFetch ( TEST_URL , TEST_OPTIONS )
59
+
60
+ expect ( customFetch ) . toHaveBeenCalledTimes ( 1 )
61
+ expect ( customFetch ) . toHaveBeenCalledWith ( TEST_URL , TEST_OPTIONS )
62
+ } )
63
+
64
+ test ( 'should use global fetch if no custom fetch is provided' , async ( ) => {
65
+ const globalFetch = jest . fn ( )
66
+ global . fetch = globalFetch
67
+ const resolvedFetch = helpers . resolveFetch ( )
68
+
69
+ await resolvedFetch ( TEST_URL , TEST_OPTIONS )
70
+
71
+ expect ( globalFetch ) . toHaveBeenCalledTimes ( 1 )
72
+ expect ( globalFetch ) . toHaveBeenCalledWith ( TEST_URL , TEST_OPTIONS )
73
+ } )
74
+
75
+ test ( 'should use node-fetch if global fetch is not available' , async ( ) => {
76
+ const nodeFetch = jest . fn ( )
77
+ jest . mock ( '@supabase/node-fetch' , ( ) => nodeFetch )
78
+
79
+ global . fetch = undefined as any
80
+ const resolvedFetch = helpers . resolveFetch ( )
81
+
82
+ await resolvedFetch ( TEST_URL , TEST_OPTIONS )
83
+
84
+ expect ( nodeFetch ) . toHaveBeenCalledTimes ( 1 )
85
+ expect ( nodeFetch ) . toHaveBeenCalledWith ( TEST_URL , TEST_OPTIONS )
86
+ } )
87
+ } )
88
+
89
+ describe ( 'resolveHeadersConstructor' , ( ) => {
90
+ beforeEach ( ( ) => {
91
+ // Reset any mocks between tests
92
+ jest . resetModules ( )
93
+ jest . clearAllMocks ( )
94
+ } )
95
+
96
+ test ( 'should use Headers if available' , async ( ) => {
97
+ const resolvedHeadersConstructor = await helpers . resolveHeadersConstructor ( )
98
+ expect ( resolvedHeadersConstructor ) . toBe ( Headers )
99
+ } )
100
+
101
+ test ( 'should use node-fetch Headers if global Headers is not available' , async ( ) => {
102
+ const MockHeaders = jest . fn ( )
103
+ jest . mock ( '@supabase/node-fetch' , ( ) => ( {
104
+ Headers : MockHeaders ,
105
+ } ) )
106
+
107
+ // Cannot assign read-only property, delete is available
108
+ // @ts -ignore
109
+ delete global . Headers
110
+
111
+ const resolvedHeadersConstructor = await helpers . resolveHeadersConstructor ( )
112
+ expect ( resolvedHeadersConstructor ) . toBe ( MockHeaders )
113
+ } )
114
+ } )
0 commit comments