2023-10-15 14:08:23 +03:00
const { parser , url } = require ( './dsmart.com.tr.config.js' )
2025-01-13 13:36:53 +07:00
const axios = require ( 'axios' )
2023-10-15 14:08:23 +03:00
const dayjs = require ( 'dayjs' )
const fs = require ( 'fs' )
const path = require ( 'path' )
const utc = require ( 'dayjs/plugin/utc' )
const customParseFormat = require ( 'dayjs/plugin/customParseFormat' )
2025-01-13 13:36:53 +07:00
2023-10-15 14:08:23 +03:00
dayjs . extend ( customParseFormat )
dayjs . extend ( utc )
2025-01-13 13:36:53 +07:00
jest . mock ( 'axios' )
const date = dayjs . utc ( '2025-01-13' , 'YYYY-MM-DD' ) . startOf ( 'd' )
2023-10-15 14:08:23 +03:00
const channel = {
2025-01-13 13:36:53 +07:00
site _id : '5fe07f5dcfef0b1593275822' ,
xmltv _id : 'Sinema1001.tr'
2023-10-15 14:08:23 +03:00
}
2025-01-13 13:36:53 +07:00
axios . get . mockImplementation ( url => {
const result = { }
const urls = {
'https://www.dsmart.com.tr/api/v1/public/epg/schedules?page=1&limit=10&day=2025-01-13' :
'content1.json' ,
'https://www.dsmart.com.tr/api/v1/public/epg/schedules?page=2&limit=10&day=2025-01-13' :
'content2.json' ,
}
if ( urls [ url ] !== undefined ) {
result . data = fs . readFileSync ( path . join ( _ _dirname , '__data__' , urls [ url ] ) ) . toString ( )
if ( ! urls [ url ] . startsWith ( 'content1' ) ) {
result . data = JSON . parse ( result . data )
}
}
return Promise . resolve ( result )
} )
2023-10-15 14:08:23 +03:00
it ( 'can generate valid url' , ( ) => {
2025-01-13 13:36:53 +07:00
expect ( url ( { date } ) ) . toBe (
'https://www.dsmart.com.tr/api/v1/public/epg/schedules?page=1&limit=10&day=2025-01-13'
2023-10-15 14:08:23 +03:00
)
} )
2025-01-13 13:36:53 +07:00
it ( 'can parse response' , async ( ) => {
const content = fs . readFileSync ( path . join ( _ _dirname , '__data__' , 'content1.json' ) ) . toString ( )
const results = ( await parser ( { content , channel , date } ) ) . map ( p => {
2023-10-15 14:08:23 +03:00
p . start = p . start . toJSON ( )
p . stop = p . stop . toJSON ( )
return p
} )
2025-01-13 13:36:53 +07:00
expect ( results . length ) . toBe ( 11 )
2023-10-15 14:08:23 +03:00
2025-01-13 13:36:53 +07:00
expect ( results [ 0 ] ) . toMatchObject ( {
start : '2025-01-12T21:30:00.000Z' ,
stop : '2025-01-12T23:30:00.000Z' ,
title : 'Taksi Şoförü' ,
2023-10-15 14:08:23 +03:00
description :
2025-01-13 13:36:53 +07:00
'Vietnam savaşı nı n izlerinin etkisindeki bir asker ve New York sokakları . Travis Bickle, geceleri taksi şoförlüğü yaptı ğı New York’ ta bir yandan da gündelik yaşama ayak uydurmaya çalı şı r. Çürümeye yüz tutmuş bir topluma karşı tutulan bir ayna niteliğindeki film, yönetmen Martin Scorsese’ nin kariyerinin en önemli filmlerinden biri olarak kabul görür.' ,
category : [ 'Sinema' , 'Genel' ]
2023-10-15 14:08:23 +03:00
} )
2025-01-13 13:36:53 +07:00
expect ( results [ 10 ] ) . toMatchObject ( {
start : '2025-01-13T19:00:00.000Z' ,
stop : '2025-01-13T21:00:00.000Z' ,
title : 'Senin Adı n' ,
2023-10-15 14:08:23 +03:00
description :
2025-01-13 13:36:53 +07:00
'Dağları n sardı ğı bir bölgede yaşayan Mitsuha, hayatı ndan çok da memnun olmayan liseli bir kı zdı r. Babası vali olarak çalı şmakta ve seçim kampanyaları ile uğraşmaktadı r. Evde kendisi, kardeşi ve büyükannesi dı şı nda kimse yoktur. Kı rsal kesimdeki yaşamı onu bunaltmaktadı r ve esas isteği Tokyo\'nun muhteşem şehir hayatı nı n bir parçası olmaktı r. Diğer tarafta ise Taki vardı r.' ,
category : [ 'Sinema' , 'Genel' ]
2023-10-15 14:08:23 +03:00
} )
} )
2025-01-13 13:36:53 +07:00
it ( 'can handle empty guide' , async ( ) => {
const results = await parser ( {
2023-10-15 14:08:23 +03:00
channel ,
2025-01-13 13:36:53 +07:00
date ,
content : fs . readFileSync ( path . join ( _ _dirname , '__data__' , 'no_content.json' ) ) . toString ( ) ,
useCache : false
2023-10-15 14:08:23 +03:00
} )
expect ( results ) . toMatchObject ( [ ] )
} )