iptv/tests/commands/update-database.test.js

110 lines
4.0 KiB
JavaScript
Raw Normal View History

2021-12-12 05:13:02 +01:00
const fs = require('fs')
const path = require('path')
const { execSync } = require('child_process')
beforeEach(() => {
fs.rmdirSync('tests/__data__/temp', { recursive: true })
fs.mkdirSync('tests/__data__/temp')
fs.copyFileSync('tests/__data__/input/update-database.test.db', 'tests/__data__/temp/test.db')
2021-12-12 05:13:02 +01:00
})
it('can update database', () => {
const result = execSync(
'DB_FILEPATH=tests/__data__/temp/test.db LOGS_PATH=tests/__data__/input/logs EPG_CODES_FILEPATH=tests/__data__/input/codes.json node scripts/commands/update-database.js',
{ encoding: 'utf8' }
)
const database = fs.readFileSync('tests/__data__/temp/test.db', { encoding: 'utf8' })
const lines = database.split('\n')
expect(JSON.parse(lines[0])).toMatchObject({
name: 'ЛДПР ТВ',
id: 'LDPRTV.ru',
filepath: 'tests/__data__/output/channels/ru.m3u',
src_country: { name: 'Russia', code: 'RU', lang: 'rus' },
tvg_country: 'RU',
countries: [{ name: 'Russia', code: 'RU', lang: 'rus' }],
regions: [
{ name: 'Asia', code: 'ASIA' },
{ name: 'Commonwealth of Independent States', code: 'CIS' },
{ name: 'Europe, the Middle East and Africa', code: 'EMEA' },
{ name: 'Europe', code: 'EUR' }
],
languages: [{ name: 'Russian', code: 'rus' }],
categories: [{ name: 'General', slug: 'general', nsfw: false }],
tvg_url: '',
guides: ['https://iptv-org.github.io/epg/guides/ru/tv.yandex.ru.epg.xml'],
logo: 'https://iptvx.one/icn/ldpr-tv.png',
resolution: { height: 1080, width: 1920 },
status: { label: '', code: 'online', level: 1 },
url: 'http://46.46.143.222:1935/live/mp4:ldpr.stream/playlist.m3u8',
http: { referrer: '', 'user-agent': '' },
is_nsfw: false,
is_broken: false,
updated: true,
cluster_id: 1,
_id: '2ST8btby3mmsgPF0'
})
expect(JSON.parse(lines[1])).toMatchObject({
name: 'BBC News HD',
id: 'BBCNews.uk',
filepath: 'tests/__data__/output/channels/uk.m3u',
src_country: { name: 'United Kingdom', code: 'UK', lang: 'eng' },
tvg_country: 'UK',
countries: [{ name: 'United Kingdom', code: 'UK', lang: 'eng' }],
regions: [
{ name: 'Europe, the Middle East and Africa', code: 'EMEA' },
{ name: 'Europe', code: 'EUR' }
],
languages: [{ name: 'English', code: 'eng' }],
categories: [{ name: 'News', slug: 'news', nsfw: false }],
tvg_url: '',
guides: [],
logo: 'https://i.imgur.com/eNPIQ9f.png',
resolution: { height: 720, width: null },
status: { label: 'Not 24/7', code: 'not_247', level: 3 },
url: 'http://1111296894.rsc.cdn77.org/LS-ATL-54548-6/index.m3u8',
http: { referrer: '', 'user-agent': '' },
is_nsfw: false,
is_broken: false,
updated: false,
cluster_id: 3,
_id: '3TbieV1ptnZVCIdn'
})
expect(JSON.parse(lines[2])).toMatchObject({
name: 'ATV',
id: 'AndorraTV.ad',
filepath: 'tests/__data__/output/channels/ad.m3u',
src_country: { name: 'Andorra', code: 'AD', lang: 'cat' },
tvg_country: 'AD',
countries: [{ name: 'Andorra', code: 'AD', lang: 'cat' }],
regions: [
{ name: 'Europe, the Middle East and Africa', code: 'EMEA' },
{ name: 'Europe', code: 'EUR' }
],
languages: [{ name: 'Catalan', code: 'cat' }],
categories: [{ name: 'General', slug: 'general', nsfw: false }],
tvg_url: '',
guides: ['https://iptv-org.github.io/epg/guides/ad/andorradifusio.ad.epg.xml'],
logo: 'https://i.imgur.com/kJCjeQ4.png',
resolution: { height: 720, width: null },
2021-12-14 07:33:53 +01:00
status: { label: 'Offline', code: 'offline', level: 5 },
2021-12-12 05:13:02 +01:00
url: 'https://iptv-all.lanesh4d0w.repl.co/andorra/atv',
http: { referrer: '', 'user-agent': '' },
is_nsfw: false,
is_broken: true,
updated: true,
cluster_id: 1
})
2021-12-14 07:59:28 +01:00
expect(JSON.parse(lines[4])).toMatchObject({
id: 'KayhanTV.af',
2021-12-14 08:46:06 +01:00
status: { label: 'Geo-blocked', code: 'geo_blocked', level: 2 },
is_broken: false,
updated: false
2021-12-14 07:59:28 +01:00
})
expect(JSON.parse(lines[5])).toMatchObject({
id: 'Sharq.af',
status: { label: 'Offline', code: 'offline', level: 5 },
is_broken: true,
updated: true
})
2021-12-12 05:13:02 +01:00
})