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 ([])
})