55 presentStreamCandidate ,
66 normalizeSourceType ,
77} from "../src/stream-presentation.mjs" ;
8+ import { createTmdbMetadataResolver , normalizeTmdbPayload } from "../src/tmdb-metadata.mjs" ;
89
910const facts = normalizeStreamCandidate ( {
1011 name : "Purstream" ,
@@ -76,4 +77,55 @@ assert.equal(normalizeSourceType("some provider label"), null);
7677const badges = buildBadges ( { quality : "4K" , language : "VFQ" , codec : "H.264" } ) ;
7778assert . deepEqual ( badges , [ "【4K】" , "🌐 VFQ" , "🎞 H.264" ] ) ;
7879
79- console . log ( "engine v2 stream presentation tests passed" ) ;
80+ const normalizedMovie = normalizeTmdbPayload ( {
81+ id : 157336 ,
82+ title : "Interstellar" ,
83+ original_title : "Interstellar" ,
84+ release_date : "2014-11-05" ,
85+ runtime : 169 ,
86+ alternative_titles : { titles : [ { title : "Interstellar" } ] } ,
87+ release_dates : {
88+ results : [
89+ { iso_3166_1 : "US" , release_dates : [ { certification : "PG-13" } ] } ,
90+ { iso_3166_1 : "FR" , release_dates : [ { certification : "U" } ] } ,
91+ ] ,
92+ } ,
93+ } , { mediaType : "movie" , request : { tmdbId : "157336" } } ) ;
94+ assert . equal ( normalizedMovie . runtime , 169 ) ;
95+ assert . equal ( normalizedMovie . certification , "U" ) ;
96+ assert . equal ( normalizedMovie . year , 2014 ) ;
97+
98+ let requestedUrl = "" ;
99+ const tmdbResolver = createTmdbMetadataResolver ( {
100+ apiKey : "test-key" ,
101+ fetchImpl : async ( url ) => {
102+ requestedUrl = String ( url ) ;
103+ return {
104+ ok : true ,
105+ async json ( ) {
106+ return {
107+ id : 95396 ,
108+ name : "Severance" ,
109+ original_name : "Severance" ,
110+ first_air_date : "2022-02-18" ,
111+ episode_run_time : [ 50 ] ,
112+ alternative_titles : { results : [ ] } ,
113+ content_ratings : { results : [ { iso_3166_1 : "FR" , rating : "12" } ] } ,
114+ } ;
115+ } ,
116+ } ;
117+ } ,
118+ } ) ;
119+ const tvMetadata = await tmdbResolver ( { tmdbId : "95396" , mediaType : "tv" , title : "Severance" } ) ;
120+ assert . match ( requestedUrl , / \/ t v \/ 9 5 3 9 6 / ) ;
121+ assert . match ( requestedUrl , / l a n g u a g e = f r - F R / ) ;
122+ assert . equal ( tvMetadata . runtime , 50 ) ;
123+ assert . equal ( tvMetadata . certification , "12" ) ;
124+ assert . equal ( tvMetadata . source , "tmdb" ) ;
125+
126+ const fallbackWithoutId = await tmdbResolver ( { mediaType : "movie" , title : "Sinners" , year : 2025 } ) ;
127+ assert . equal ( fallbackWithoutId . title , "Sinners" ) ;
128+ assert . equal ( fallbackWithoutId . year , 2025 ) ;
129+ assert . equal ( fallbackWithoutId . source , "request" ) ;
130+
131+ console . log ( "engine v2 stream presentation and shared TMDB metadata tests passed" ) ;
0 commit comments