2025-09-28 13:06:13 +03:00
const { parser , url , request } = require ( './epg.telemach.ba.config.js' )
const fs = require ( 'fs' )
const axios = require ( 'axios' )
const path = require ( 'path' )
const dayjs = require ( 'dayjs' )
const utc = require ( 'dayjs/plugin/utc' )
const customParseFormat = require ( 'dayjs/plugin/customParseFormat' )
dayjs . extend ( customParseFormat )
dayjs . extend ( utc )
jest . mock ( 'axios' )
axios . post . mockImplementation ( ( url , data , opts ) => {
if (
url === 'https://api-web.ug-be.cdn.united.cloud/oauth/token?grant_type=client_credentials' &&
JSON . stringify ( opts . headers ) ===
JSON . stringify ( {
Authorization :
'Basic MjdlMTFmNWUtODhlMi00OGU0LWJkNDItOGUxNWFiYmM2NmY1OjEyejJzMXJ3bXdhZmsxMGNkdzl0cjloOWFjYjZwdjJoZDhscXZ0aGc='
} )
) {
return Promise . resolve ( {
data : JSON . parse ( fs . readFileSync ( path . resolve ( _ _dirname , '__data__/session.json' ) ) )
} )
} else {
return Promise . resolve ( {
data : JSON . parse ( fs . readFileSync ( path . resolve ( _ _dirname , '__data__/no_session.json' ) ) )
} )
}
} )
const date = dayjs . utc ( '2025-01-20' , 'YYYY-MM-DD' ) . startOf ( 'd' )
const channel = {
site _id : '1607' ,
xmltv _id : 'N1HD.hr'
}
it ( 'can generate valid url' , async ( ) => {
const result = url ( { date , channel , country : 'ba' } )
expect ( result ) . toBe (
'https://api-web.ug-be.cdn.united.cloud/v1/public/events/epg?fromTime=2025-01-20T00:00:00-00:00&toTime=2025-01-20T23:59:59-00:00&communityId=12&languageId=59&cid=1607'
)
} )
it ( 'can generate valid request headers' , async ( ) => {
const result = await request . headers ( )
expect ( result ) . toMatchObject ( {
Authorization :
'Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOlsidWMtaW5mby1zZXJ2aWNlIl0sInNjb3BlIjpbInJlYWQiXSwiZXhwIjoxNzM3Mzc3NDUxLCJhdXRob3JpdGllcyI6WyJST0xFX1BVQkxJQ19FUEciXSwianRpIjoiUVBubHdRSDczS1EwSnU0WDZwRTc2Zm5mUmRnIiwiY2xpZW50X2lkIjoiMjdlMTFmNWUtODhlMi00OGU0LWJkNDItOGUxNWFiYmM2NmY1In0.LqJAZUWEqIOcLrRSMpxZxnF-f1arKbHgfweLMXt-MBjCDbVJD39OQEsh_b68mtePAoa3n8LRbf3IFT40Ys5Vbe-k_Btm4a9gdEGr6cNi_4HGk4Bto6RUDvCp59VRfoRZhWe145Q2b5TS6szmC4Ws2YWIcZU5vrJcYs2GZiCk6U11MOcd1i52WmZj8cLPq0ZPDB_bzmTgYkvkVa7zOzUOPSl4M8T6fPUa__vVKUt0jOgtFoHeue2mQVgISC2puEGsBN0jJwvJ8PzM6IVxXrQno3MBv0VJy_qILiFPcxRePGRAmKLuEqagvikO7P_XQgFjZgg-j8u8wX2WwO0Yxft0Pg'
} )
} )
it ( 'can parse response' , ( ) => {
const content = fs . readFileSync ( path . resolve ( _ _dirname , '__data__/content.json' ) , 'utf8' )
let results = parser ( { content } )
results = results . map ( p => {
p . start = p . start . toJSON ( )
p . stop = p . stop . toJSON ( )
return p
} )
expect ( results . length ) . toBe ( 35 )
expect ( results [ 0 ] ) . toMatchObject ( {
start : '2025-01-20T00:00:00.000Z' ,
stop : '2025-01-20T00:30:00.000Z' ,
title : 'DW Euromaxx' ,
description :
'Euromaxx je lifestyle Europe magazine, koji nam donosi zanimljivosti iz evropskih gradova, priče o načinu života ljudi i upoznaje nas sa njihovim kulturama.' ,
image :
'https://images-web.ug-be.cdn.united.cloud/2021/02/18/06/05/21/stb_xl_cd4f72e01d308ecce782e29b69af7de6707b9e85.jpg' ,
season : null ,
episode : null
} )
expect ( results [ 34 ] ) . toMatchObject ( {
start : '2025-01-20T23:50:00.000Z' ,
stop : '2025-01-21T00:00:00.000Z' ,
title : 'DW Shift' ,
description : 'Tjedni magazin koji nam donosi najnovije vijesti vezane za Internet.' ,
image :
'https://images-web.ug-be.cdn.united.cloud/2023/06/09/13/07/53/stb_xl_0849d5d70c1337651b85b6335e340e15bd5d6a73_340fc454bc73019d052cf936ebee5da3.jpg' ,
season : null ,
episode : null
} )
} )
it ( 'can handle empty guide' , ( ) => {
const results = parser ( {
content : fs . readFileSync ( path . resolve ( _ _dirname , '__data__/no_content.json' ) , 'utf8' )
} )
expect ( results ) . toMatchObject ( [ ] )
} )