@@ -42,23 +42,24 @@ describe('controllers/appController with MULTI_DOMAIN', () => {
4242 jest . clearAllMocks ( ) ;
4343 } ) ;
4444
45- test ( 'getView uses multiembed for series' , async ( ) => {
45+ test ( 'getView defaults to vidsrc for series when no preference set ' , async ( ) => {
4646 ( fetchOmdbData as jest . Mock ) . mockResolvedValue ( { } ) ;
4747 const req : any = { params : { q : '' , id : 'tt' , type : 'series' , season : '1' , episode : '1' } , user : { id : 'u1' } } ;
4848 const res : any = { locals : { APP_URL : 'http://app' } , render : jest . fn ( ) } ;
4949 await appController . getView ( req , res , jest . fn ( ) ) ;
5050 expect ( res . render ) . toHaveBeenCalledWith (
5151 'view' ,
5252 expect . objectContaining ( {
53- iframeSrc : 'https://multi/?video_id =tt&s =1&e =1' ,
53+ iframeSrc : 'https://domain/embed/tv?imdb =tt&season =1&episode =1' ,
5454 server1Src : 'https://domain/embed/tv?imdb=tt&season=1&episode=1' ,
5555 server2Src : 'https://multi/?video_id=tt&s=1&e=1' ,
56- currentServer : '2' ,
56+ currentServer : '1' ,
57+ serverPreferenceKey : 'preferredServer' ,
5758 } )
5859 ) ;
5960 } ) ;
6061
61- test ( 'getView uses multiembed for movie' , async ( ) => {
62+ test ( 'getView defaults to vidsrc for movie when no preference set ' , async ( ) => {
6263 ( fetchOmdbData as jest . Mock ) . mockResolvedValue ( { } ) ;
6364 ( History . findOneAndUpdate as jest . Mock ) . mockResolvedValue ( { watched : false } ) ;
6465 const req : any = { params : { q : '' , id : 'tt' , type : 'movie' } , user : { id : 'u1' } } ;
@@ -67,10 +68,51 @@ describe('controllers/appController with MULTI_DOMAIN', () => {
6768 expect ( res . render ) . toHaveBeenCalledWith (
6869 'view' ,
6970 expect . objectContaining ( {
70- iframeSrc : 'https://multi/?video_id= tt' ,
71+ iframeSrc : 'https://domain/embed/movie/ tt' ,
7172 server1Src : 'https://domain/embed/movie/tt' ,
7273 server2Src : 'https://multi/?video_id=tt' ,
74+ currentServer : '1' ,
75+ serverPreferenceKey : 'preferredServer' ,
76+ } )
77+ ) ;
78+ } ) ;
79+
80+ test ( 'getView honours preferred server cookie' , async ( ) => {
81+ ( fetchOmdbData as jest . Mock ) . mockResolvedValue ( { } ) ;
82+ ( History . findOneAndUpdate as jest . Mock ) . mockResolvedValue ( { watched : false } ) ;
83+ const req : any = {
84+ params : { q : '' , id : 'tt' , type : 'movie' } ,
85+ user : { id : 'u1' } ,
86+ headers : { cookie : 'preferredServer=1' } ,
87+ } ;
88+ const res : any = { locals : { APP_URL : 'http://app' } , render : jest . fn ( ) } ;
89+ await appController . getView ( req , res , jest . fn ( ) ) ;
90+ expect ( res . render ) . toHaveBeenCalledWith (
91+ 'view' ,
92+ expect . objectContaining ( {
93+ currentServer : '1' ,
94+ iframeSrc : 'https://domain/embed/movie/tt' ,
95+ serverPreferenceKey : 'preferredServer' ,
96+ } )
97+ ) ;
98+ } ) ;
99+
100+ test ( 'getView parses cookie with additional entries' , async ( ) => {
101+ ( fetchOmdbData as jest . Mock ) . mockResolvedValue ( { } ) ;
102+ ( History . findOneAndUpdate as jest . Mock ) . mockResolvedValue ( { watched : false } ) ;
103+ const req : any = {
104+ params : { q : '' , id : 'tt' , type : 'movie' } ,
105+ user : { id : 'u1' } ,
106+ headers : { cookie : 'foo=bar; preferredServer=2' } ,
107+ } ;
108+ const res : any = { locals : { APP_URL : 'http://app' } , render : jest . fn ( ) } ;
109+ await appController . getView ( req , res , jest . fn ( ) ) ;
110+ expect ( res . render ) . toHaveBeenCalledWith (
111+ 'view' ,
112+ expect . objectContaining ( {
73113 currentServer : '2' ,
114+ iframeSrc : 'https://multi/?video_id=tt' ,
115+ serverPreferenceKey : 'preferredServer' ,
74116 } )
75117 ) ;
76118 } ) ;
0 commit comments