diff --git a/tests/__data__/expected/sites/sites-init/example.com.config.js b/tests/__data__/expected/sites/sites-init/example.com.config.js new file mode 100644 index 00000000..472b22e9 --- /dev/null +++ b/tests/__data__/expected/sites/sites-init/example.com.config.js @@ -0,0 +1,16 @@ +module.exports = { + site: 'example.com', + url({ channel, date }) { + return `https://example.com/api/${channel.site_id}/${date.format('YYYY-MM-DD')}` + }, + parser({ content }) { + try { + return JSON.parse(content) + } catch { + return [] + } + }, + channels() { + return [] + } +} diff --git a/tests/__data__/expected/sites/sites-init/example.com.test.js b/tests/__data__/expected/sites/sites-init/example.com.test.js new file mode 100644 index 00000000..37d2d7b3 --- /dev/null +++ b/tests/__data__/expected/sites/sites-init/example.com.test.js @@ -0,0 +1,42 @@ +const { parser, url } = require('./example.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('2025-01-12', 'YYYY-MM-DD').startOf('d') +const channel = { site_id: 'bbc1', xmltv_id: 'BBCOne.uk' } + +it('can generate valid url', () => { + expect(url({ channel, date })).toBe('https://example.com/api/bbc1/2025-01-12') +}) + +it('can parse response', () => { + const content = + '[{"title":"Program 1","start":"2025-01-12T00:00:00.000Z","stop":"2025-01-12T00:30:00.000Z"},{"title":"Program 2","start":"2025-01-12T00:30:00.000Z","stop":"2025-01-12T01:00:00.000Z"}]' + + const results = parser({ content }) + + expect(results.length).toBe(2) + expect(results[0]).toMatchObject({ + title: 'Program 1', + start: '2025-01-12T00:00:00.000Z', + stop: '2025-01-12T00:30:00.000Z' + }) + expect(results[1]).toMatchObject({ + title: 'Program 2', + start: '2025-01-12T00:30:00.000Z', + stop: '2025-01-12T01:00:00.000Z' + }) +}) + +it('can handle empty guide', () => { + const result = parser({ + date, + channel, + content: '' + }) + + expect(result).toMatchObject([]) +}) diff --git a/tests/__data__/expected/sites/sites-init/readme.md b/tests/__data__/expected/sites/sites-init/readme.md new file mode 100644 index 00000000..67eeb317 --- /dev/null +++ b/tests/__data__/expected/sites/sites-init/readme.md @@ -0,0 +1,21 @@ +# example.com + +https://example.com + +### Download the guide + +```sh +npm run grab --- --site=example.com +``` + +### Update channel list + +```sh +npm run channels:parse --- --config=./sites/example.com/example.com.config.js --output=./sites/example.com/example.com.channels.xml +``` + +### Test + +```sh +npm test --- example.com +```