11import { describe , it , expect , vi , beforeEach } from 'vitest' ;
2+ import type { Response } from 'node-fetch' ;
23import {
34 DeployHQClient ,
45 DeployHQError ,
@@ -14,6 +15,11 @@ vi.mock('node-fetch', () => ({
1415import fetch from 'node-fetch' ;
1516const mockFetch = fetch as unknown as ReturnType < typeof vi . fn > ;
1617
18+ // Helper to create mock Response objects
19+ function createMockResponse ( data : Partial < Response > ) : Partial < Response > {
20+ return data ;
21+ }
22+
1723describe ( 'DeployHQClient' , ( ) => {
1824 beforeEach ( ( ) => {
1925 vi . clearAllMocks ( ) ;
@@ -119,11 +125,11 @@ describe('DeployHQClient', () => {
119125 { name : 'Project 2' , permalink : 'project-2' } ,
120126 ] ;
121127
122- mockFetch . mockResolvedValueOnce ( {
128+ mockFetch . mockResolvedValueOnce ( createMockResponse ( {
123129 ok : true ,
124130 status : 200 ,
125131 json : async ( ) => mockProjects ,
126- } as any ) ;
132+ } ) ) ;
127133
128134 const result = await client . listProjects ( ) ;
129135
@@ -141,19 +147,19 @@ describe('DeployHQClient', () => {
141147 } ) ;
142148
143149 it ( 'should throw AuthenticationError on 401' , async ( ) => {
144- mockFetch . mockResolvedValueOnce ( {
150+ mockFetch . mockResolvedValueOnce ( createMockResponse ( {
145151 ok : false ,
146152 status : 401 ,
147- } as any ) ;
153+ } ) ) ;
148154
149155 await expect ( client . listProjects ( ) ) . rejects . toThrow ( AuthenticationError ) ;
150156 } ) ;
151157
152158 it ( 'should throw AuthenticationError on 403' , async ( ) => {
153- mockFetch . mockResolvedValueOnce ( {
159+ mockFetch . mockResolvedValueOnce ( createMockResponse ( {
154160 ok : false ,
155161 status : 403 ,
156- } as any ) ;
162+ } ) ) ;
157163
158164 await expect ( client . listProjects ( ) ) . rejects . toThrow ( AuthenticationError ) ;
159165 } ) ;
@@ -163,11 +169,11 @@ describe('DeployHQClient', () => {
163169 it ( 'should fetch project by permalink' , async ( ) => {
164170 const mockProject = { name : 'Test Project' , permalink : 'test-project' } ;
165171
166- mockFetch . mockResolvedValueOnce ( {
172+ mockFetch . mockResolvedValueOnce ( createMockResponse ( {
167173 ok : true ,
168174 status : 200 ,
169175 json : async ( ) => mockProject ,
170- } as any ) ;
176+ } ) ) ;
171177
172178 const result = await client . getProject ( 'test-project' ) ;
173179
@@ -186,11 +192,11 @@ describe('DeployHQClient', () => {
186192 { identifier : 'server-2' , name : 'Staging' } ,
187193 ] ;
188194
189- mockFetch . mockResolvedValueOnce ( {
195+ mockFetch . mockResolvedValueOnce ( createMockResponse ( {
190196 ok : true ,
191197 status : 200 ,
192198 json : async ( ) => mockServers ,
193- } as any ) ;
199+ } ) ) ;
194200
195201 const result = await client . listServers ( 'test-project' ) ;
196202
@@ -209,11 +215,11 @@ describe('DeployHQClient', () => {
209215 pagination : { total : 1 , total_pages : 1 , per_page : 30 , current_page : 1 } ,
210216 } ;
211217
212- mockFetch . mockResolvedValueOnce ( {
218+ mockFetch . mockResolvedValueOnce ( createMockResponse ( {
213219 ok : true ,
214220 status : 200 ,
215221 json : async ( ) => mockResponse ,
216- } as any ) ;
222+ } ) ) ;
217223
218224 const result = await client . listDeployments ( 'test-project' ) ;
219225
@@ -230,11 +236,11 @@ describe('DeployHQClient', () => {
230236 pagination : { total : 10 , total_pages : 2 , per_page : 30 , current_page : 2 } ,
231237 } ;
232238
233- mockFetch . mockResolvedValueOnce ( {
239+ mockFetch . mockResolvedValueOnce ( createMockResponse ( {
234240 ok : true ,
235241 status : 200 ,
236242 json : async ( ) => mockResponse ,
237- } as any ) ;
243+ } ) ) ;
238244
239245 await client . listDeployments ( 'test-project' , 2 ) ;
240246
@@ -250,11 +256,11 @@ describe('DeployHQClient', () => {
250256 pagination : { total : 1 , total_pages : 1 , per_page : 30 , current_page : 1 } ,
251257 } ;
252258
253- mockFetch . mockResolvedValueOnce ( {
259+ mockFetch . mockResolvedValueOnce ( createMockResponse ( {
254260 ok : true ,
255261 status : 200 ,
256262 json : async ( ) => mockResponse ,
257- } as any ) ;
263+ } ) ) ;
258264
259265 await client . listDeployments ( 'test-project' , undefined , 'server-123' ) ;
260266
@@ -269,11 +275,11 @@ describe('DeployHQClient', () => {
269275 it ( 'should fetch specific deployment' , async ( ) => {
270276 const mockDeployment = { identifier : 'deploy-1' , status : 'completed' } ;
271277
272- mockFetch . mockResolvedValueOnce ( {
278+ mockFetch . mockResolvedValueOnce ( createMockResponse ( {
273279 ok : true ,
274280 status : 200 ,
275281 json : async ( ) => mockDeployment ,
276- } as any ) ;
282+ } ) ) ;
277283
278284 const result = await client . getDeployment ( 'test-project' , 'deploy-1' ) ;
279285
@@ -294,11 +300,11 @@ describe('DeployHQClient', () => {
294300 end_revision : 'def456' ,
295301 } ;
296302
297- mockFetch . mockResolvedValueOnce ( {
303+ mockFetch . mockResolvedValueOnce ( createMockResponse ( {
298304 ok : true ,
299305 status : 201 ,
300306 json : async ( ) => mockDeployment ,
301- } as any ) ;
307+ } ) ) ;
302308
303309 const result = await client . createDeployment ( 'test-project' , params ) ;
304310
@@ -313,11 +319,11 @@ describe('DeployHQClient', () => {
313319 } ) ;
314320
315321 it ( 'should throw ValidationError on 422' , async ( ) => {
316- mockFetch . mockResolvedValueOnce ( {
322+ mockFetch . mockResolvedValueOnce ( createMockResponse ( {
317323 ok : false ,
318324 status : 422 ,
319325 json : async ( ) => ( { error : 'Invalid params' } ) ,
320- } as any ) ;
326+ } ) ) ;
321327
322328 await expect (
323329 client . createDeployment ( 'test-project' , {
@@ -337,12 +343,12 @@ describe('DeployHQClient', () => {
337343 } ) ;
338344
339345 it ( 'should handle non-OK responses' , async ( ) => {
340- mockFetch . mockResolvedValueOnce ( {
346+ mockFetch . mockResolvedValueOnce ( createMockResponse ( {
341347 ok : false ,
342348 status : 500 ,
343349 statusText : 'Internal Server Error' ,
344350 text : async ( ) => 'Server error' ,
345- } as any ) ;
351+ } ) ) ;
346352
347353 await expect ( client . listProjects ( ) ) . rejects . toThrow ( DeployHQError ) ;
348354 } ) ;
0 commit comments