epg/sites/startimestv.com/startimestv.com.test.js
Toha 769379a707
Update startimestv.com guide.
Test:

```sh
npm test -- startimestv.com

> test
> run-script-os startimestv.com

> test:win32
> SET "TZ=Pacific/Nauru" && npx jest --runInBand startimestv.com

 PASS  sites/startimestv.com/startimestv.com.test.js
  √ can generate valid url (3 ms)
  √ can parse response (114 ms)
  √ can handle empty guide (2 ms)

Test Suites: 1 passed, 1 total
Tests:       3 passed, 3 total
Snapshots:   0 total
Time:        4.618 s, estimated 5 s
Ran all test suites matching /startimestv.com/i.
```

Grab:

```sh
npm run grab -- --site=startimestv.com

> grab
> npx tsx scripts/commands/epg/grab.ts --site=startimestv.com

starting...
config:
  output: guide.xml
  maxConnections: 1
  gzip: false
  site: startimestv.com
loading channels...
  found 77 channel(s)
run #1:
  [1/154] startimestv.com (en) - 648 - Dec 10, 2024 (17 programs)
  [2/154] startimestv.com (en) - 648 - Dec 11, 2024 (18 programs)
  ...
  [153/154] startimestv.com (pt) - DisneyChannel.pt - Dec 11, 2024 (61 programs)
  [154/154] startimestv.com (en) - ZeeOneAfrica.za - Dec 10, 2024 (22 programs)
  saving to "guide.xml"...
  done in 00h 01m 02s
```

Signed-off-by: Toha <tohenk@yahoo.com>
2024-12-10 22:59:14 +07:00

48 lines
2.1 KiB
JavaScript

const { parser, url } = require('./startimestv.com.config.js')
const dayjs = require('dayjs')
const utc = require('dayjs/plugin/utc')
const customParseFormat = require('dayjs/plugin/customParseFormat')
dayjs.extend(customParseFormat)
dayjs.extend(utc)
const date = dayjs.utc('2024-12-10', 'YYYY-MM-DD').startOf('d')
const channel = {
site_id: '1023102509',
xmltv_id: 'ZeeOneAfrica.za'
}
it('can generate valid url', () => {
expect(url({ channel, date })).toBe(
'https://www.startimestv.com/channeldetail/1023102509/2024-12-10.html'
)
})
it('can parse response', () => {
const fs = require('fs')
const path = require('path')
const content = fs.readFileSync(path.join(__dirname, '__data__', 'content.html'))
const result = parser({ content, date }).map(p => {
p.start = p.start.toJSON()
p.stop = p.stop.toJSON()
return p
})
expect(result.length).toBe(22)
expect(result[0]).toMatchObject({
start: '2024-12-10T00:00:00.000Z',
stop: '2024-12-10T01:00:00.000Z',
title: 'Deserted S1 E37',
description:
'Tora approaches Tubri for help, but she expresses her helplessness in seeking assistance from Arjun. Meanwhile, other family members are caught in the crossfire, trying to navigate their own positions within the household.',
season: 1,
episode: 37
})
})
it('can handle empty guide', () => {
const result = parser({
content:
'<!DOCTYPE html><html> <body> <div id="body" class="page"> <div class="block"> <div class="channel"> <div class="title1"> <h3 style="text-transform:uppercase;"></h3> </div><div class="content"> <div class="des" style="background-color:#FFAB00"> <div class="sdw"></div><div class="inner clearfix"> <div class="pic"> <img src="" onerror="onerror=null;src=\'/Public/static/images/channellogo.png\'"> </div><div class="inf"> <h3 style="text-transform:uppercase;"></h3> <div class="num"> </div><div class="box"> <p class="rate" data="">Rate: <i></i><i></i><i></i><i></i><i></i></p><p>Category: </p><br/> </div></div><div class="txt"> <p></p></div></div></div></div></div></div></div></body></html>'
})
expect(result).toMatchObject([])
})