2025-09-28 17:55:05 +03:00
const { parser , url } = require ( './player.ee.co.uk.config.js' )
const fs = require ( 'fs' )
const path = require ( 'path' )
const axios = require ( 'axios' )
const dayjs = require ( 'dayjs' )
const utc = require ( 'dayjs/plugin/utc' )
dayjs . extend ( utc )
jest . mock ( 'axios' )
const date = dayjs . utc ( '2023-12-13' ) . startOf ( 'd' )
const channel = {
site _id : 'dvb://233a..6d60' ,
xmltv _id : 'HGTV.uk'
}
axios . get . mockImplementation ( url => {
if (
url ===
'https://api.youview.tv/metadata/linear/v2/schedule/by-servicelocator?serviceLocator=dvb%3A%2F%2F233a..6d60&interval=2023-12-13T12Z/PT12H'
) {
return Promise . resolve ( {
data : JSON . parse ( fs . readFileSync ( path . resolve ( _ _dirname , '__data__/data1.json' ) ) )
} )
}
return Promise . resolve ( { data : '' } )
} )
it ( 'can generate valid url' , ( ) => {
expect ( url ( { date , channel } ) ) . toBe (
'https://api.youview.tv/metadata/linear/v2/schedule/by-servicelocator?serviceLocator=dvb%3A%2F%2F233a..6d60&interval=2023-12-13T00Z/PT12H'
)
} )
it ( 'can parse response' , async ( ) => {
const content = fs . readFileSync ( path . resolve ( _ _dirname , '__data__/data.json' ) )
const result = ( await parser ( { content , channel , date } ) ) . map ( p => {
p . start = p . start . toJSON ( )
p . stop = p . stop . toJSON ( )
return p
} )
expect ( result ) . toMatchObject ( [
{
title : 'Bargain Mansions' ,
description :
'Tamara and her dad help a recent widow who loves to cook for her family design her dream kitchen, perfect for entertaining and large gatherings. S4/Ep1' ,
season : 4 ,
episode : 1 ,
start : '2023-12-13T13:00:00.000Z' ,
stop : '2023-12-13T14:00:00.000Z'
} ,
{
title : 'Flip Or Flop' ,
description :
'Tarek and Christina are contacted by a cash strapped flipper who needs to unload a project house. S2/Ep2' ,
season : 2 ,
episode : 2 ,
start : '2023-12-13T14:00:00.000Z' ,
stop : '2023-12-13T14:30:00.000Z'
}
] )
} )
it ( 'can handle empty guide' , async ( ) => {
const result = await parser ( {
channel ,
date ,
content : ''
} )
expect ( result ) . toMatchObject ( [ ] )
} )