@@ -474,4 +474,87 @@ describe('test hasCodec method', () => {
474474 } ) ;
475475
476476 } ) ;
477+
478+ describe ( 'resourceType parameter tests' , ( ) => {
479+ it ( 'should use image resourceType when specified' , ( ) => {
480+ const source = new VideoSource ( 'sample' , {
481+ cloudinaryConfig : cld ,
482+ resourceType : 'image' ,
483+ transformation : [
484+ { effect : 'ai:model_veo-animate;details_(prompt_!flying bee!)' } ,
485+ { format : 'auto:video' }
486+ ]
487+ } ) ;
488+
489+ const srcs = source . generateSources ( ) ;
490+ expect ( srcs [ 0 ] . src ) . toContain ( '/image/upload/' ) ;
491+ expect ( srcs [ 0 ] . src ) . toContain ( 'e_ai:model_veo-animate' ) ;
492+ } ) ;
493+
494+ it ( 'should default to video resourceType when not specified' , ( ) => {
495+ const source = new VideoSource ( 'sea_turtle' , {
496+ cloudinaryConfig : cld
497+ } ) ;
498+
499+ const srcs = source . generateSources ( ) ;
500+ expect ( srcs [ 0 ] . src ) . toContain ( '/video/upload/' ) ;
501+ } ) ;
502+
503+ it ( 'should use image resourceType for poster' , ( ) => {
504+ const source = new VideoSource ( 'sample' , {
505+ cloudinaryConfig : cld ,
506+ resourceType : 'image' ,
507+ transformation : [
508+ { effect : 'ai:model_veo-animate' }
509+ ]
510+ } ) ;
511+
512+ const posterUrl = source . poster ( ) . url ( ) ;
513+ expect ( posterUrl ) . toContain ( '/image/upload/' ) ;
514+ expect ( posterUrl ) . toContain ( 'sample.jpg' ) ;
515+ } ) ;
516+
517+ it ( 'should use video resourceType for poster by default' , ( ) => {
518+ const source = new VideoSource ( 'sea_turtle' , {
519+ cloudinaryConfig : cld
520+ } ) ;
521+
522+ const posterUrl = source . poster ( ) . url ( ) ;
523+ expect ( posterUrl ) . toContain ( '/video/upload/' ) ;
524+ } ) ;
525+
526+ it ( 'should use configured resourceType for seek thumbnails' , ( ) => {
527+ const source = new VideoSource ( 'sample' , {
528+ cloudinaryConfig : cld ,
529+ resourceType : 'image' ,
530+ transformation : [
531+ { effect : 'ai:model_veo-animate' }
532+ ]
533+ } ) ;
534+
535+ const vttUrl = source . config ( ) . url ( 'sample.vtt' , {
536+ transformation : { flags : [ 'sprite' ] } ,
537+ resource_type : source . resourceType ( )
538+ } ) ;
539+ expect ( vttUrl ) . toContain ( '/image/upload/' ) ;
540+ expect ( vttUrl ) . toContain ( 'fl_sprite' ) ;
541+ } ) ;
542+
543+ it ( 'should default to video resourceType for seek thumbnails when not specified' , ( ) => {
544+ const source = new VideoSource ( 'sea_turtle' , {
545+ cloudinaryConfig : cld
546+ } ) ;
547+
548+ const resourceType = source . resourceType ( ) || 'video' ;
549+ const vttUrl = source . config ( ) . url ( 'sea_turtle.vtt' , {
550+ transformation : { flags : [ 'sprite' ] } ,
551+ resource_type : resourceType
552+ } ) ;
553+
554+ // When resourceType is not set, resourceType() returns undefined, so we default to 'video'
555+ expect ( resourceType ) . toBe ( 'video' ) ;
556+ expect ( vttUrl ) . toContain ( '/video/upload/' ) ;
557+ expect ( vttUrl ) . toContain ( 'fl_sprite' ) ;
558+ } ) ;
559+ } ) ;
477560} ) ;
0 commit comments