1- import { fromAny , fromPartial } from '@total-typescript/shoehorn'
1+ import { fromPartial } from '@total-typescript/shoehorn'
22import { afterEach , beforeEach , describe , expect , it , vi } from 'vitest'
33
44import {
@@ -122,6 +122,22 @@ describe('downloadUtil', () => {
122122 expect ( createObjectURLSpy ) . not . toHaveBeenCalled ( )
123123 } )
124124
125+ it ( 'throws for an empty URL' , ( ) => {
126+ expect ( ( ) => downloadFile ( '' ) ) . toThrow (
127+ 'Invalid URL provided for download'
128+ )
129+ expect ( fetchMock ) . not . toHaveBeenCalled ( )
130+ expect ( createObjectURLSpy ) . not . toHaveBeenCalled ( )
131+ } )
132+
133+ it ( 'throws for a whitespace URL' , ( ) => {
134+ expect ( ( ) => downloadFile ( ' ' ) ) . toThrow (
135+ 'Invalid URL provided for download'
136+ )
137+ expect ( fetchMock ) . not . toHaveBeenCalled ( )
138+ expect ( createObjectURLSpy ) . not . toHaveBeenCalled ( )
139+ } )
140+
125141 it ( 'should prefer custom filename over extracted filename' , ( ) => {
126142 const testUrl =
127143 'https://example.com/api/file?filename=extracted-image.jpg'
@@ -339,7 +355,7 @@ describe('downloadUtil', () => {
339355 const testUrl = 'https://storage.googleapis.com/bucket/image.png'
340356 const blob = new Blob ( [ 'test' ] , { type : 'image/png' } )
341357 const mockTab = { location : { href : '' } , closed : false , close : vi . fn ( ) }
342- windowOpenSpy . mockReturnValue ( fromAny < Window , unknown > ( mockTab ) )
358+ windowOpenSpy . mockReturnValue ( fromPartial < Window > ( mockTab ) )
343359 fetchMock . mockResolvedValue (
344360 fromPartial < Response > ( {
345361 ok : true ,
@@ -359,7 +375,7 @@ describe('downloadUtil', () => {
359375 mockIsCloud . value = true
360376 const blob = new Blob ( [ 'test' ] , { type : 'image/png' } )
361377 const mockTab = { location : { href : '' } , closed : false , close : vi . fn ( ) }
362- windowOpenSpy . mockReturnValue ( fromAny < Window , unknown > ( mockTab ) )
378+ windowOpenSpy . mockReturnValue ( fromPartial < Window > ( mockTab ) )
363379 fetchMock . mockResolvedValue (
364380 fromPartial < Response > ( {
365381 ok : true ,
@@ -379,7 +395,7 @@ describe('downloadUtil', () => {
379395 const testUrl = 'https://storage.googleapis.com/bucket/missing.png'
380396 const consoleSpy = vi . spyOn ( console , 'error' ) . mockImplementation ( ( ) => { } )
381397 const mockTab = { location : { href : '' } , closed : false , close : vi . fn ( ) }
382- windowOpenSpy . mockReturnValue ( fromAny < Window , unknown > ( mockTab ) )
398+ windowOpenSpy . mockReturnValue ( fromPartial < Window > ( mockTab ) )
383399 fetchMock . mockResolvedValue (
384400 fromPartial < Response > ( { ok : false , status : 404 } )
385401 )
@@ -395,7 +411,7 @@ describe('downloadUtil', () => {
395411 mockIsCloud . value = true
396412 const blob = new Blob ( [ 'test' ] , { type : 'image/png' } )
397413 const mockTab = { location : { href : '' } , closed : true , close : vi . fn ( ) }
398- windowOpenSpy . mockReturnValue ( fromAny < Window , unknown > ( mockTab ) )
414+ windowOpenSpy . mockReturnValue ( fromPartial < Window > ( mockTab ) )
399415 fetchMock . mockResolvedValue (
400416 fromPartial < Response > ( {
401417 ok : true ,
0 commit comments